Added unit test cases for gilded roses.

This commit is contained in:
kanaksinghal 2025-06-28 15:03:00 +05:30
parent cdfb5bad01
commit 09572af775

View File

@ -1,16 +1,117 @@
# -*- coding: utf-8 -*-
import unittest
from gilded_rose import Item, GildedRose
from python.gilded_rose import (
GildedRose,
Item,
NormalItem,
AgedBrieItem,
SulfurasItem,
BackstagePassItem,
ConjuredItem,
)
import pytest
class GildedRoseTest(unittest.TestCase):
def test_foo(self):
items = [Item("foo", 0, 0)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
self.assertEqual("fixme", items[0].name)
# --- Tests for NormalItem ---
def test_normal_item_quality_decreases_by_1():
item = NormalItem("Westin", 10, 20)
item.update_quality()
assert item.quality == 19
assert item.sell_in == 9
if __name__ == '__main__':
unittest.main()
def test_normal_item_quality_decreases_by_2_after_sell_in():
item = NormalItem("Westin", 0, 20)
item.update_quality()
assert item.quality == 18
assert item.sell_in == -1
def test_normal_item_quality_never_negative():
item = NormalItem("Westin", 10, 0)
item.update_quality()
assert item.quality == 0
assert item.sell_in == 9
def test_aged_brie_quality_increases():
item = AgedBrieItem("Aged Brie", 10, 20)
item.update_quality()
assert item.quality == 21
assert item.sell_in == 9
def test_aged_brie_quality_increases_twice_after_sell_in():
item = AgedBrieItem("Aged Brie", 0, 20)
item.update_quality()
assert item.quality == 22
assert item.sell_in == -1
def test_aged_brie_quality_never_exceeds_50():
item = AgedBrieItem("Aged Brie", 10, 49)
item.update_quality()
assert item.quality == 50
item.update_quality() # One more day
assert item.quality == 50
def test_sulfuras_quality_and_sell_in_never_change():
item = SulfurasItem("Sulfuras, Hand of Ragnaros", 0, 80)
item.update_quality()
assert item.quality == 80
assert item.sell_in == 0
def test_backstage_pass_quality_increases_by_1_normally():
item = BackstagePassItem("Backstage passes", 15, 20)
item.update_quality()
assert item.quality == 21
assert item.sell_in == 14
def test_backstage_pass_quality_increases_by_2_at_10_days_or_less():
item = BackstagePassItem("Backstage passes", 10, 20)
item.update_quality()
assert item.quality == 22
assert item.sell_in == 9
def test_backstage_pass_quality_increases_by_3_at_5_days_or_less():
item = BackstagePassItem("Backstage passes", 5, 20)
item.update_quality()
assert item.quality == 23
assert item.sell_in == 4
def test_backstage_pass_quality_drops_to_0_after_concert():
item = BackstagePassItem("Backstage passes", 0, 20)
item.update_quality()
assert item.quality == 0
assert item.sell_in == -1
def test_backstage_pass_quality_never_exceeds_50():
item = BackstagePassItem("Backstage passes", 10, 49)
item.update_quality()
assert item.quality == 50
# Test cases for Conjured Items
def test_conjured_item_quality_decreases_by_2_normally():
item = ConjuredItem("Conjured Mana Cake", 10, 20)
item.update_quality()
assert item.quality == 18
assert item.sell_in == 9
def test_conjured_item_quality_decreases_by_4_after_sell_in():
item = ConjuredItem("Conjured Mana Cake", 0, 20)
item.update_quality()
assert item.quality == 16
assert item.sell_in == -1
def test_conjured_item_quality_never_negative():
item = ConjuredItem("Conjured Mana Cake", 10, 1)
item.update_quality()
assert item.quality == 0
assert item.sell_in == 9