diff --git a/python/gilded_rose.py b/python/gilded_rose.py index b9162ce2..f90ec4b3 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -5,42 +5,45 @@ class GildedRose(object): def __init__(self, items): self.items = items - def adjust_quality(self, item, rate=-1): + def adjust_quality(self, item, rate=-1, set_to_zero=False): """ Adjust the quality of an item, defaults to -1 Quality cannot be less than 0 or bumped beyond 50 """ + if set_to_zero: + item.quality = 0 + return + if item.quality <= 0 or item.quality >= 50: return + item.quality += rate def update_quality(self): for item in self.items: - if item.name != "Sulfuras, Hand of Ragnaros": - item.sell_in -= 1 + + item.sell_in -= 1 + has_positive_sell_in = item.sell_in >= 0 + rate = -1 if item.name == "Aged Brie": - self.adjust_quality(item, 1) if item.sell_in >= 0 else self.adjust_quality(item, 2) - return + rate = 1 if has_positive_sell_in else 2 + return self.adjust_quality(item, rate) if item.name == "Backstage passes to a TAFKAL80ETC concert": - if item.sell_in <= 10 and item.sell_in > 5: - return self.adjust_quality(item, 2) - elif item.sell_in > 0 and item.sell_in <= 5: - return self.adjust_quality(item, 3) + if 5 <= item.sell_in <= 10: + rate = 2 + elif 0 <= item.sell_in <= 5: + rate = 3 else: - item.quality = 0 - return + rate = -item.quality + return self.adjust_quality(item, rate) - if "Conjured" in item.name and item.sell_in >= 0: - return self.adjust_quality(item, -2) - elif "Conjured" in item.name: - return self.adjust_quality(item, -4) + if "Conjured" in item.name: + rate = -2 if has_positive_sell_in else -4 + return self.adjust_quality(item, rate) - if item.sell_in >= 0: - return self.adjust_quality(item) - else: - return self.adjust_quality(item, -2) + return self.adjust_quality(item) if has_positive_sell_in else self.adjust_quality(item, -2) class Item: diff --git a/python/test_gilded_rose.py b/python/test_gilded_rose.py index 4a9e6b5f..62a8d2d0 100644 --- a/python/test_gilded_rose.py +++ b/python/test_gilded_rose.py @@ -53,7 +53,7 @@ class GildedRoseTest(unittest.TestCase): gilded_rose = GildedRose(items) gilded_rose.update_quality() - self.assertEqual(2, items[0].sell_in) + self.assertEqual(1, items[0].sell_in) self.assertEqual(80, items[0].quality)