# -*- coding: utf-8 -*- import unittest from gilded_rose import Item, GildedRose class NormalItemTest(unittest.TestCase): def test_quality_decrease(self): items = [Item("foo", 0, 1)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(0, items[0].quality) def test_quality_always_positive(self): items = [Item("foo", 0, 1)] gilded_rose = GildedRose(items) gilded_rose.update_quality() gilded_rose.update_quality() self.assertEqual(0, items[0].quality) def test_sellin_value_decrease(self): items = [Item("foo", 1, 1)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(0, items[0].sell_in) def test_double_quality_decrease_after_sellin_value_reached(self): items = [Item("foo", 0, 10)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(8, items[0].quality) class AgedBrieItemTest(unittest.TestCase): def test_quality_increase(self): items = [Item("Aged Brie", 2, 10)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(11, items[0].quality) def test_quality_never_above_50(self): items = [Item("Aged Brie", 2, 50)] gilded_rose = GildedRose(items) gilded_rose.update_quality() gilded_rose.update_quality() self.assertEqual(50, items[0].quality) def test_quality_never_above_50_while_sellin_value_reached(self): items = [Item("Aged Brie", 0, 50)] gilded_rose = GildedRose(items) gilded_rose.update_quality() gilded_rose.update_quality() self.assertEqual(50, items[0].quality) def test_sellin_value_decrease(self): items = [Item("Aged Brie", 1, 1)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(0, items[0].sell_in) def test_double_quality_increase_after_sellin_value_reached(self): items = [Item("Aged Brie", sell_in=0, quality=1)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(3, items[0].quality) class SulfurasItemTest(unittest.TestCase): def test_quality_always_80(self): items = [Item("Sulfuras, Hand of Ragnaros", sell_in=10, quality=80)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(80, items[0].quality) def test_no_sellin_decrease(self): items = [Item("Sulfuras, Hand of Ragnaros", sell_in=10, quality=80)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(10, items[0].sell_in) def test_quality_above_80(self): items = [Item("Sulfuras, Hand of Ragnaros", sell_in=10, quality=100)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(100, items[0].quality) class BackstageItemTest(unittest.TestCase): def test_quality_increase_sellin_between_5_and_10(self): items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=8, quality=20)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(22, items[0].quality) def test_quality_increase_sellin_between_below_5(self): items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=4, quality=20)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(23, items[0].quality) def test_quality_0_after_sellin(self): items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=0, quality=20)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(0, items[0].quality) def test_quality_increase_if_sellin_above_10(self): items = [Item("Backstage passes to a TAFKAL80ETC concert", sell_in=11, quality=20)] gilded_rose = GildedRose(items) gilded_rose.update_quality() self.assertEqual(21, items[0].quality) if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(NormalItemTest)) suite.addTest(unittest.makeSuite(AgedBrieItemTest)) suite.addTest(unittest.makeSuite(SulfurasItemTest)) suite.addTest(unittest.makeSuite(BackstageItemTest)) unittest.TextTestRunner(verbosity=3).run(suite)