diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 4f21ea64..04e2ac46 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -1,33 +1,36 @@ # -*- coding: utf-8 -*- -class GildedRose(object): +import constants + + +class GildedRose(object): def __init__(self, items): self.items = items def update_quality(self): for item in self.items: - if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert": + if item.name != constants.AGED_BRIE and item.name != constants.BACKSTAGE: if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": + if item.name != constants.SULFURAS: item.quality = item.quality - 1 else: if item.quality < 50: item.quality = item.quality + 1 - if item.name == "Backstage passes to a TAFKAL80ETC concert": + if item.name == constants.BACKSTAGE: if item.sell_in < 11: if item.quality < 50: item.quality = item.quality + 1 if item.sell_in < 6: if item.quality < 50: item.quality = item.quality + 1 - if item.name != "Sulfuras, Hand of Ragnaros": + if item.name != constants.SULFURAS: item.sell_in = 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.name != constants.AGED_BRIE: + if item.name != constants.BACKSTAGE: if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": + if item.name != constants.SULFURAS: item.quality = item.quality - 1 else: item.quality = item.quality - item.quality diff --git a/python/test_gilded_rose.py b/python/test_gilded_rose.py index 84600f0c..63b031b0 100644 --- a/python/test_gilded_rose.py +++ b/python/test_gilded_rose.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import unittest +import constants from gilded_rose import Item, GildedRose @@ -11,6 +12,60 @@ class GildedRoseTest(unittest.TestCase): gilded_rose.update_quality() self.assertEqual("foo", items[0].name) - -if __name__ == '__main__': + def degradesTwiceAsFastAfterSellInDateHasPassed(self): + items = [Item("foo", 0, 2)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(0, items[0].quality) + + def neverMustHaveNegativeQuality(self): + items = [Item("foo", 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(0, items[0].quality) + + def increaseAgedBrieQualityWhenItGetsOlder(self): + items = [Item(constants.AGED_BRIE, 0, 2)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(4, items[0].quality) + + def neverMustHaveAnItemWithMoreThan50OfQuality(self): + items = [Item(constants.AGED_BRIE, 0, 50)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(50, items[0].quality) + + def neverModifySulfurasQuality(self): + items = [Item(constants.SULFURAS, 0, 50)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(50, items[0].quality) + + def neverModifySulfurasQualityEvenISGreaterThan50(self): + items = [Item(constants.SULFURAS, 0, 80)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(80, items[0].quality) + + def mustIncreaseBackstagePassesQualityWhenItsSellInApproaches(self): + items = [ + Item(constants.BACKSTAGE, 15, 20), + Item(constants.BACKSTAGE, 10, 20), + Item(constants.BACKSTAGE, 5, 20), + ] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + self.assertEquals(21, items[0].quality) + self.assertEquals(22, items[1].quality) + self.assertEquals(23, items[2].quality) + + # def mustDecreaseQualityTwiceAsFastIfItemIsConjured(self): + # items = [Item(constants.CONJURED, 0, 20)] + # gilded_rose = GildedRose(items) + # gilded_rose.update_quality() + # self.assertEquals(16, items[0].quality) + + +if __name__ == "__main__": unittest.main() diff --git a/python/texttest_fixture.py b/python/texttest_fixture.py index 86af5ef7..b36b6863 100644 --- a/python/texttest_fixture.py +++ b/python/texttest_fixture.py @@ -1,24 +1,26 @@ # -*- coding: utf-8 -*- from __future__ import print_function -from gilded_rose import * +import constants +import gilded_rose if __name__ == "__main__": - print ("OMGHAI!") + print("OMGHAI!") items = [ - Item(name="+5 Dexterity Vest", sell_in=10, quality=20), - Item(name="Aged Brie", sell_in=2, quality=0), - Item(name="Elixir of the Mongoose", sell_in=5, quality=7), - Item(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80), - Item(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80), - Item(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20), - Item(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49), - Item(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49), - Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O - ] + gilded_rose.Item(name="+5 Dexterity Vest", sell_in=10, quality=20), + gilded_rose.Item(name=constants.AGED_BRIE, sell_in=2, quality=0), + gilded_rose.Item(name="Elixir of the Mongoose", sell_in=5, quality=7), + gilded_rose.Item(name=constants.SULFURAS, sell_in=0, quality=80), + gilded_rose.Item(name=constants.SULFURAS, sell_in=-1, quality=80), + gilded_rose.Item(name=constants.BACKSTAGE, sell_in=15, quality=20), + gilded_rose.Item(name=constants.BACKSTAGE, sell_in=10, quality=49), + gilded_rose.Item(name=constants.BACKSTAGE, sell_in=5, quality=49), + gilded_rose.Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O + ] days = 2 import sys + if len(sys.argv) > 1: days = int(sys.argv[1]) + 1 for day in range(days): @@ -27,4 +29,4 @@ if __name__ == "__main__": for item in items: print(item) print("") - GildedRose(items).update_quality() + gilded_rose.GildedRose(items).update_quality()