Use rate to set quality

This commit is contained in:
leslie-alldridge 2022-11-22 08:38:35 +13:00
parent 2cfee2ddfa
commit c631a2eee7
2 changed files with 23 additions and 20 deletions

View File

@ -5,42 +5,45 @@ class GildedRose(object):
def __init__(self, items): def __init__(self, items):
self.items = 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 Adjust the quality of an item, defaults to -1
Quality cannot be less than 0 or bumped beyond 50 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: if item.quality <= 0 or item.quality >= 50:
return return
item.quality += rate item.quality += rate
def update_quality(self): def update_quality(self):
for item in self.items: 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": if item.name == "Aged Brie":
self.adjust_quality(item, 1) if item.sell_in >= 0 else self.adjust_quality(item, 2) rate = 1 if has_positive_sell_in else 2
return return self.adjust_quality(item, rate)
if item.name == "Backstage passes to a TAFKAL80ETC concert": if item.name == "Backstage passes to a TAFKAL80ETC concert":
if item.sell_in <= 10 and item.sell_in > 5: if 5 <= item.sell_in <= 10:
return self.adjust_quality(item, 2) rate = 2
elif item.sell_in > 0 and item.sell_in <= 5: elif 0 <= item.sell_in <= 5:
return self.adjust_quality(item, 3) rate = 3
else: else:
item.quality = 0 rate = -item.quality
return return self.adjust_quality(item, rate)
if "Conjured" in item.name and item.sell_in >= 0: if "Conjured" in item.name:
return self.adjust_quality(item, -2) rate = -2 if has_positive_sell_in else -4
elif "Conjured" in item.name: return self.adjust_quality(item, rate)
return self.adjust_quality(item, -4)
if item.sell_in >= 0: return self.adjust_quality(item) if has_positive_sell_in else self.adjust_quality(item, -2)
return self.adjust_quality(item)
else:
return self.adjust_quality(item, -2)
class Item: class Item:

View File

@ -53,7 +53,7 @@ class GildedRoseTest(unittest.TestCase):
gilded_rose = GildedRose(items) gilded_rose = GildedRose(items)
gilded_rose.update_quality() gilded_rose.update_quality()
self.assertEqual(2, items[0].sell_in) self.assertEqual(1, items[0].sell_in)
self.assertEqual(80, items[0].quality) self.assertEqual(80, items[0].quality)