diff --git a/python/unit_tests_gilded_rose.py b/python/unit_tests_gilded_rose.py new file mode 100644 index 00000000..c6614023 --- /dev/null +++ b/python/unit_tests_gilded_rose.py @@ -0,0 +1,127 @@ +import unittest +from gilded_rose import GildedRose, Item + + +class GildedRoseTest(unittest.TestCase): + + def test_normal_item(self): + # Set up the item + item = Item("Classic Item", 10, 20) + gilded_rose = GildedRose([item]) + + # One day after + gilded_rose.update_quality() + self.assertEqual(item.sell_in, 9) + self.assertEqual(item.quality, 19) + + # Sell by date passed + # Set up the item + item = Item("Classic Item", -1, 10) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + self.assertEqual(item.sell_in, -2) + self.assertEqual(item.quality, 8) + + # Quality degrades twice as fast now + # Set up the item + item = Item("+5 Dexterity Vest", -1, 0) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + self.assertEqual(item.sell_in, -2) + self.assertEqual(item.quality, 0) # never be less than 0 + + def test_aged_brie(self): + # Set up the item + item = Item("Aged Brie", 10, 20) + gilded_rose = GildedRose([item]) + + # One day after + gilded_rose.update_quality() + self.assertEqual(item.sell_in, 9) + self.assertEqual(item.quality, 21) + + # Sell by date passed + # Set up the item + item = Item("Aged Brie", -1, 10) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + self.assertEqual(item.sell_in, -2) + self.assertEqual(item.quality, 12) + + # Quality increases twice as fast now + # Set up the item + item = Item("Aged Brie", -1, 50) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + self.assertEqual(item.sell_in, -2) + self.assertEqual(item.quality, 50) # never be more than 50 + + def test_sulfuras(self): + # Set up the item + item = Item("Sulfuras, Hand of Ragnaros", 20, 80) + gilded_rose = GildedRose([item]) + + # One day after + gilded_rose.update_quality() + self.assertNotEqual(item.sell_in, 19) + self.assertEqual(item.sell_in, 20) + self.assertEqual(item.quality, 80) + + # Sell by date passed + # Set up the item + item = Item("Sulfuras, Hand of Ragnaros", -1, 10) + gilded_rose = GildedRose([item]) + + gilded_rose.update_quality() + self.assertEqual(item.sell_in, -1) + self.assertEqual(item.quality, 10) + + def test_backstage_passes(self): + # Set up the item + item = Item("Backstage passes to a TAFKAL80ETC concert", 20, 20) + gilded_rose = GildedRose([item]) + + # One day after + gilded_rose.update_quality() + self.assertEqual(item.sell_in, 19) + self.assertEqual(item.quality, 21) + + # Sell in 10 or less + # Set up the item + item = Item("Backstage passes to a TAFKAL80ETC concert", 10, 20) + gilded_rose = GildedRose([item]) + + gilded_rose.update_quality() + self.assertEqual(item.sell_in, 9) + self.assertEqual(item.quality, 22) + + # Sell in 5 or less + # Set up the item + item = Item("Backstage passes to a TAFKAL80ETC concert", 4, 20) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + + self.assertEqual(item.sell_in, 3) + self.assertEqual(item.quality, 23) + + # Never gets beyond 50 and drops to 0 once sell in passed + # Set up the item + item = Item("Backstage passes to a TAFKAL80ETC concert", 4, 50) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + + self.assertEqual(item.sell_in, 3) + self.assertEqual(item.quality, 50) + + # Drops to 0 once sell in passed + # Set up the item + item = Item("Backstage passes to a TAFKAL80ETC concert", -1, 50) + gilded_rose = GildedRose([item]) + gilded_rose.update_quality() + + self.assertEqual(item.sell_in, -2) + self.assertEqual(item.quality, 0) + + +if __name__ == "__main__": + unittest.main()