From faa4859dc5580ae08f69f6c715ae6e8e3bdf6b21 Mon Sep 17 00:00:00 2001 From: alexmerryman Date: Thu, 27 Feb 2020 22:34:21 -0600 Subject: [PATCH] Fully working refactor (all tests pass). --- python/gilded_rose.py | 95 +++++++++++++------------------------------ 1 file changed, 28 insertions(+), 67 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 4c9777fd..d881b315 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -7,102 +7,63 @@ class GildedRose(object): def update_quality(self): for item in self.items: + # Set default parameters + sell_in_rate = 1 + quality_rate = 1 + quality_sign = -1 # Once the sell by date has passed, Quality degrades twice as fast - if item.sell_in < 0: + if item.sell_in <= 0: quality_rate = 2 - # The Quality of an item is never negative - if item.quality < 0: - item.quality = 0 - # "Sulfuras", being a legendary item, never has to be sold or decreases in Quality if item.name == "Sulfuras, Hand of Ragnaros": sell_in_rate = 0 quality_rate = 0 - quality_inc_dec = 0 + quality_sign = 0 + elif item.name == "Aged Brie": - sell_in_rate = 1 # "Aged Brie" actually increases in Quality the older it gets - quality_inc_dec = 1 + quality_sign = 1 + elif item.name == "Backstage passes to a TAFKAL80ETC concert": - sell_in_rate = 1 # Quality drops to 0 after the concert - if item.sell_in < 0: + if item.sell_in <= 0: item.quality -= item.quality + quality_sign = 0 + # Quality increases by 3 when there are 5 days or less - elif item.sell_in < 6: + elif item.sell_in <= 5: quality_rate = 3 # "Backstage passes..." increases in quality - quality_inc_dec = 1 + quality_sign = 1 + # Quality increases by 2 when there are 10 days or less - elif item.sell_in < 11: + elif item.sell_in <= 10: quality_rate = 2 # "Backstage passes..." increases in quality - quality_inc_dec = 1 - elif item.name == "Conjured Mana Cake": - sell_in_rate = 1 - quality_rate = 1 - quality_inc_dec = -1 + quality_sign = 1 + else: + quality_sign = 1 + + elif item.name == "Conjured Mana Cake": if item.sell_in < 0: quality_rate = 2 - # Set default values for any unknown items - else: - sell_in_rate = 1 - quality_rate = 1 - quality_inc_dec = -1 - item.sell_in -= sell_in_rate - item.quality += (quality_inc_dec*quality_rate) + item.quality += (quality_sign*quality_rate) + # CONDITIONS THAT ARE ALWAYS TRUE FOR EVERY ITEM + # The Quality of an item is never negative + if item.quality < 0: + item.quality = 0 + + # No items' quality can exceed 50, except 'Sulfuras, Hand of Ragnaros' if item.quality > 50 and item.name != "Sulfuras, Hand of Ragnaros": item.quality = 50 - - - - - # # item.name is something other than "Aged Brie" or "Backstage passes to a TAFKAL80ETC concert" - # if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert": - # if item.quality > 0: - # - # # item.name is something other than "Sulfuras, Hand of Ragnaros" - # if item.name != "Sulfuras, Hand of Ragnaros": - # item.quality -= 1 - # - # # item.name == "Aged Brie" OR "Backstage passes to a TAFKAL80ETC concert" - # else: - # if item.quality < 50: - # item.quality += 1 - # if item.name == "Backstage passes to a TAFKAL80ETC concert": - # if item.sell_in < 11: - # if item.quality < 50: - # item.quality += 1 - # if item.sell_in < 6: - # if item.quality < 50: - # item.quality += 1 - # - # - # if item.name != "Sulfuras, Hand of Ragnaros": - # item.sell_in -= 1 - # - # - # if item.sell_in < 0: - # if item.name != "Aged Brie": - # if item.name != "Backstage passes to a TAFKAL80ETC concert": - # if item.quality > 0: - # if item.name != "Sulfuras, Hand of Ragnaros": - # item.quality -= 1 - # else: - # item.quality -= item.quality - # else: - # if item.quality < 50: - # item.quality += 1 - - class Item: def __init__(self, name, sell_in, quality): self.name = name