diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 96f37d3d..8dd5fc83 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -13,10 +13,10 @@ class BaseItemUpdater: self.item.sell_in -= 1 def update_quality(self): - if self.item.quality > 0: - self.item.quality -= 1 - if self.item.sell_in < 0 and self.item.quality > 0: - self.item.quality -= 1 + degrade = 1 + if self.item.sell_in < 0: + degrade = 2 + self.item.quality = max(self.item.quality - degrade, 0) @@ -44,7 +44,19 @@ class BackstagePassUpdater(BaseItemUpdater): class SulfurasUpdater(BaseItemUpdater): def update(self): - pass + print("Sulfuras has no change") + def update_quality(self): + print("Sulfuras has no change") + # pass + def update_sell_in(self): + print("Sulfuras has no change") + +class ConjuredItemUpdater(BaseItemUpdater): + def update_quality(self): + degrade = 2 + if self.item.sell_in < 0: + degrade *= 2 + self.item.quality = max(self.item.quality - degrade, 0) class ItemUpdaterFactory: @@ -52,10 +64,12 @@ class ItemUpdaterFactory: def get_updater(item): if item.name == "Aged Brie": return AgedBrieUpdater(item) - elif item.name == "Backstage passes": + elif item.name == "Backstage passes to a TAFKAL80ETC concert": return BackstagePassUpdater(item) - elif item.name == "Sulfuras": + elif item.name == "Sulfuras, Hand of Ragnaros": return SulfurasUpdater(item) + elif item.name == "Conjured Mana Cake": + return ConjuredItemUpdater(item) else: return BaseItemUpdater(item) diff --git a/python/test_gilded_rose.py b/python/test_gilded_rose.py index 84600f0c..4b1a3a07 100644 --- a/python/test_gilded_rose.py +++ b/python/test_gilded_rose.py @@ -1,16 +1,51 @@ # -*- coding: utf-8 -*- -import unittest +# import unittest -from gilded_rose import Item, GildedRose +# from gilded_rose import Item, GildedRose -class GildedRoseTest(unittest.TestCase): - def test_foo(self): - items = [Item("foo", 0, 0)] - gilded_rose = GildedRose(items) - gilded_rose.update_quality() - self.assertEqual("foo", items[0].name) +# class GildedRoseTest(unittest.TestCase): +# def test_foo(self): +# items = [Item("foo", 0, 0)] +# gilded_rose = GildedRose(items) +# gilded_rose.update_quality() +# self.assertEqual("foo", items[0].name) -if __name__ == '__main__': - unittest.main() +# if __name__ == '__main__': +# unittest.main() + +import pytest +from gilded_rose import GildedRose +from items import Item + + +def test_regular_item_degrades(): + items = [Item("foo", 10, 20)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 19 + assert items[0].sell_in == 9 + + +def test_aged_brie_increases(): + items = [Item("Aged Brie", 2, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 1 + assert items[0].sell_in == 1 + + +def test_backstage_passes_increase(): + items = [Item("Backstage passes", 11, 10)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 11 + + +def test_sulfuras_no_change(): + items = [Item("Sulfuras", 0, 80)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 80 + assert items[0].sell_in == 0 diff --git a/python/texttest_fixture.py b/python/texttest_fixture.py index 86af5ef7..9d1dc106 100644 --- a/python/texttest_fixture.py +++ b/python/texttest_fixture.py @@ -17,7 +17,7 @@ if __name__ == "__main__": Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O ] - days = 2 + days = 4 import sys if len(sys.argv) > 1: days = int(sys.argv[1]) + 1