Added support for new Conjured item type

This commit is contained in:
Kunnal-chawla 2025-12-28 10:11:50 +05:30
parent 2947ff0f1b
commit 8862f3150c
2 changed files with 39 additions and 3 deletions

View File

@ -1,7 +1,7 @@
# utf-8
class Updater(object):
MIN_QUALITY = 0
MAX_QUALITY = 50
@ -42,6 +42,15 @@ class Updater(object):
item.quality = 0
item.sell_in += -1
def conjured(self, item):
if item.sell_in > 0:
depreciation = -2
else:
depreciation = -4
item.quality = max((item.quality + depreciation), self.MIN_QUALITY)
item.sell_in += -1
class GildedRose(object):
@ -58,6 +67,8 @@ class GildedRose(object):
updater.backstage_passes(item)
elif item.name == 'Sulfuras, Hand of Ragnaros':
updater.sulfuras(item)
elif item.name == 'Conjured Mana Cake':
updater.conjured(item)
else:
updater.normal_item(item)
@ -70,3 +81,4 @@ class Item:
def __repr__(self):
return "%s, %s, %s" % (self.name, self.sell_in, self.quality)

View File

@ -4,7 +4,6 @@ from gilded_rose import GildedRose, Item
class GildedRoseTest(unittest.TestCase):
def updater(obj = GildedRose, times = 1):
for i in range(times):
obj.update_quality()
@ -95,7 +94,8 @@ class GildedRoseTest(unittest.TestCase):
self.assertEqual(item.sell_in, 2)
self.assertEqual(item.quality, 49)
# Never gets beyond 50 and drops to 0 once sell in passed
# Never gets beyond 50 and drops to 0
# once sell in passed
GildedRoseTest.updater(gilded_rose)
self.assertEqual(item.sell_in, 1)
self.assertEqual(item.quality, 50)
@ -104,5 +104,29 @@ class GildedRoseTest(unittest.TestCase):
self.assertEqual(item.sell_in, -1)
self.assertEqual(item.quality, 0)
def test_conjured(self):
# Set up the item
item = Item("Conjured Mana Cake", 20, 50)
gilded_rose = GildedRose([item])
# One day after
gilded_rose.update_quality()
self.assertEqual(item.sell_in, 19)
self.assertEqual(item.quality, 48)
GildedRoseTest.updater(gilded_rose, item.sell_in + 1)
# sell by date passed -- will decrease
# twice as fast as normal items (-4)
self.assertEqual(item.sell_in, -1)
self.assertEqual(item.quality, 6)
GildedRoseTest.updater(gilded_rose)
self.assertEqual(item.sell_in, -2)
self.assertEqual(item.quality, 2)
GildedRoseTest.updater(gilded_rose)
self.assertEqual(item.sell_in, -3)
self.assertEqual(item.quality, 0)
if __name__ == '__main__':
unittest.main()