From 8862f3150cbb2f7678b879ea9588193551f69e79 Mon Sep 17 00:00:00 2001 From: Kunnal-chawla Date: Sun, 28 Dec 2025 10:11:50 +0530 Subject: [PATCH] Added support for new Conjured item type --- python/gilded_rose.py | 14 +++++++++++++- python/tests/test_gilded_rose.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 90ac4767..d392139a 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -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) + \ No newline at end of file diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index f4537e08..14699e6d 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -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()