-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_gilded_rose.py
140 lines (119 loc) · 5.14 KB
/
test_gilded_rose.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# -*- coding: utf-8 -*-
import unittest
from gilded_rose import GildedRose
from items import Item
class GildedRoseTest(unittest.TestCase):
def test_nonlegendary_item(self):
items_input = [
Item(name="+5 Dexterity Vest", sell_in=10, quality=10),
Item(name="+5 Dexterity Vest", sell_in=1, quality=10),
Item(name="+5 Dexterity Vest", sell_in=0, quality=10),
Item(name="+5 Dexterity Vest", sell_in=10, quality=0),
Item(name="+5 Dexterity Vest", sell_in=-10, quality=1),
]
items_expected = [
Item(name="+5 Dexterity Vest", sell_in=9, quality=9),
Item(name="+5 Dexterity Vest", sell_in=0, quality=9),
Item(name="+5 Dexterity Vest", sell_in=-1, quality=8),
Item(name="+5 Dexterity Vest", sell_in=9, quality=0),
Item(name="+5 Dexterity Vest", sell_in=-11, quality=0),
]
gilded_rose = GildedRose(items_input)
gilded_rose.update_quality()
self._assert_item_lists_equality(gilded_rose.inventory, items_expected)
def test_cheese_item(self):
items_input = [
Item(name="Aged Brie", sell_in=10, quality=0),
Item(name="Aged Brie", sell_in=0, quality=0),
Item(name="Aged Brie", sell_in=-10, quality=0),
Item(name="Aged Brie", sell_in=10, quality=49),
Item(name="Aged Brie", sell_in=10, quality=50),
]
items_expected = [
Item(name="Aged Brie", sell_in=9, quality=1),
Item(name="Aged Brie", sell_in=-1, quality=2),
Item(name="Aged Brie", sell_in=-11, quality=2),
Item(name="Aged Brie", sell_in=9, quality=50),
Item(name="Aged Brie", sell_in=9, quality=50),
]
gilded_rose = GildedRose(items_input)
gilded_rose.update_quality()
self._assert_item_lists_equality(gilded_rose.inventory, items_expected)
def test_backstage_item(self):
items_input = [
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=20, quality=10
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=10
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=10
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=2, quality=10
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=0, quality=10
),
]
items_expected = [
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=19, quality=11
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=9, quality=12
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=4, quality=13
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=1, quality=13
),
Item(
name="Backstage passes to a TAFKAL80ETC concert", sell_in=-1, quality=0
),
]
gilded_rose = GildedRose(items_input)
gilded_rose.update_quality()
self._assert_item_lists_equality(gilded_rose.inventory, items_expected)
def test_legendary_item(self):
items_input = [
Item(name="Sulfuras, Hand of Ragnaros", sell_in=10, quality=80),
Item(name="Sulfuras, Hand of Ragnaros", sell_in=-10, quality=80),
]
items_expected = [
Item(name="Sulfuras, Hand of Ragnaros", sell_in=10, quality=80),
Item(name="Sulfuras, Hand of Ragnaros", sell_in=-10, quality=80),
]
gilded_rose = GildedRose(items_input)
gilded_rose.update_quality()
self._assert_item_lists_equality(gilded_rose.inventory, items_expected)
def test_conjured_item(self):
items_input = [
Item(name="Conjured Mana Cake", sell_in=1, quality=10),
Item(name="Conjured Mana Cake", sell_in=-1, quality=10),
Item(name="Conjured Mana Cake", sell_in=1, quality=1),
]
items_expected = [
Item(name="Conjured Mana Cake", sell_in=0, quality=8),
Item(name="Conjured Mana Cake", sell_in=-2, quality=6),
Item(name="Conjured Mana Cake", sell_in=0, quality=0),
]
gilded_rose = GildedRose(items_input)
gilded_rose.update_quality()
self._assert_item_lists_equality(gilded_rose.inventory, items_expected)
def _assert_item_lists_equality(self, list1, list2):
[
self._assert_items_equality(item, list2[ind])
for ind, item in enumerate(list1)
]
def _assert_items_equality(self, item1, item2):
try:
self.assertEqual(item1.name, item2.name)
self.assertEqual(item1.sell_in, item2.sell_in)
self.assertEqual(item1.quality, item2.quality)
except AssertionError:
raise AssertionError("{} does not equal {}".format(item1, item2))
if __name__ == "__main__":
unittest.main()