From 9ddae1ddd8fd46d62c4c18ef0f76041db5bf22e9 Mon Sep 17 00:00:00 2001 From: zoengsw Date: Mon, 10 Nov 2025 16:41:41 +0000 Subject: [PATCH 1/6] fix: remove unused imports --- python/tests/test_gilded_rose.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 89de7fa4..b1c55c05 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- import unittest -from hashlib import file_digest from gilded_rose import Item, GildedRose From c6a4b241b90fe13f2a9b47c090b7ddbf096514f6 Mon Sep 17 00:00:00 2001 From: zoengsw Date: Mon, 10 Nov 2025 16:46:03 +0000 Subject: [PATCH 2/6] refactor: change test names to be more descriptive --- python/tests/test_gilded_rose.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index b1c55c05..ef8bbc50 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -23,43 +23,43 @@ class GildedRoseTest(unittest.TestCase): self.update_gilded_rose_days(gilded_rose, days) return gilded_rose - def test_foo_1day(self): + def test_normal_item_single_day_degradation(self): items= [Item('foo', 1, 1)] self.generate_and_update_gilded_rose(items, 1) self.check_item_values(items[0], 'foo', 0, 0) - def test_foo_multiple_days(self): + def test_normal_item_multiple_days_degradation(self): items= [Item('foo', 2, 3)] self.generate_and_update_gilded_rose(items, 2) self.check_item_values(items[0], 'foo', 0, 1) - def test_quality_nonnegative(self): + def test_nonnegative_quality_after_degradation(self): items = [Item("foo", 2, 0)] self.generate_and_update_gilded_rose(items, 1) self.check_item_values(items[0], "foo", 1, 0) - def test_after_sellby_date(self): + def test_quality_degradation_after_sellby_date(self): items = [Item("foo", 2, 10)] gilded_rose = self.generate_and_update_gilded_rose(items, 2) self.check_item_values(items[0], "foo", 0, 8) self.update_gilded_rose_days(gilded_rose, 2) self.check_item_values(items[0], "foo", -2, 4) - def test_aged_brie_4_days(self): + def test_aged_brie_after_4_days(self): items = [Item(AGED_BRIE, 2, 10)] gilded_rose = self.generate_and_update_gilded_rose(items, 2) self.check_item_values(items[0], AGED_BRIE, 0, 12) self.update_gilded_rose_days(gilded_rose, 2) self.check_item_values(items[0], AGED_BRIE, -2, 16) - def test_aged_brie_max_quality(self): + def test_aged_brie_reaching_max_quality(self): items = [Item(AGED_BRIE, 15, 40)] gilded_rose = self.generate_and_update_gilded_rose(items, 10) self.check_item_values(items[0], AGED_BRIE, 5, 50) self.update_gilded_rose_days(gilded_rose, 6) self.check_item_values(items[0], AGED_BRIE, -1, 50) - def test_sulfuras(self): + def test_sulfuras_no_degradation_not_sold(self): items = [Item(SULFURAS, 10, 30)] self.generate_and_update_gilded_rose(items, 50) self.check_item_values(items[0], SULFURAS, 10, 30) @@ -86,7 +86,7 @@ class GildedRoseTest(unittest.TestCase): self.update_gilded_rose_days(gilded_rose, 1) self.check_item_values(items[0], BACKSTAGE, -1, 0) - def test_multiple_items_different_sellin_1day(self): + def test_multiple_items_single_day_degradation(self): items = [Item("foo", 0, 0), Item("bar", 1, 1), Item("baz", 2, 2)] self.generate_and_update_gilded_rose(items, 1) self.check_item_values(items[0], "foo", -1, 0) From a30340aa281c8beefbb8326d3510ab55f1d1edfc Mon Sep 17 00:00:00 2001 From: zoengsw Date: Mon, 10 Nov 2025 17:25:52 +0000 Subject: [PATCH 3/6] refactor: change tests of backstage passes to parameterised --- python/tests/test_gilded_rose.py | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index ef8bbc50..641b858c 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import unittest +from parameterized import parameterized from gilded_rose import Item, GildedRose @@ -64,27 +65,17 @@ class GildedRoseTest(unittest.TestCase): self.generate_and_update_gilded_rose(items, 50) self.check_item_values(items[0], SULFURAS, 10, 30) - def test_backstage_passes_15_to_10_days(self): - items = [Item(BACKSTAGE, 15, 0)] - self.generate_and_update_gilded_rose(items, 5) - self.check_item_values(items[0], BACKSTAGE, 10, 5) - def test_backstage_passes_10_to_5_days(self): - items = [Item(BACKSTAGE, 10, 0)] + @parameterized.expand([ + ('more_than_10_days_inc_by_1', 15, 0, 10, 5), + ('10_days_inc_by_2', 10, 0, 5, 10), + ('5_day_inc_by_3', 5, 0, 0, 15), + ('after_concert_drops_to_zero', 1, 10, -4, 0) + ]) + def test_backstage_passes_by_5_days_from(self, _, init_sell_in, init_qual, expected_sell_in, expected_qual): + items = [Item(BACKSTAGE, init_sell_in, init_qual)] self.generate_and_update_gilded_rose(items, 5) - self.check_item_values(items[0], BACKSTAGE, 5, 10) - - def test_backstage_passes_5_to_0_days(self): - items = [Item(BACKSTAGE, 5, 0)] - self.generate_and_update_gilded_rose(items, 5) - self.check_item_values(items[0], BACKSTAGE, 0, 15) - - def test_backstage_passes_after_concert(self): - items = [Item(BACKSTAGE, 1, 10)] - gilded_rose = self.generate_and_update_gilded_rose(items, 1) - self.check_item_values(items[0], BACKSTAGE, 0, 13) - self.update_gilded_rose_days(gilded_rose, 1) - self.check_item_values(items[0], BACKSTAGE, -1, 0) + self.check_item_values(items[0], BACKSTAGE, expected_sell_in, expected_qual) def test_multiple_items_single_day_degradation(self): items = [Item("foo", 0, 0), Item("bar", 1, 1), Item("baz", 2, 2)] From a598ce77189a49755324f022ec2fbc626ccd712b Mon Sep 17 00:00:00 2001 From: zoengsw Date: Mon, 10 Nov 2025 17:30:51 +0000 Subject: [PATCH 4/6] refactor: unify using single quotation --- python/tests/test_gilded_rose.py | 33 ++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 641b858c..8bae3cf6 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -35,16 +35,16 @@ class GildedRoseTest(unittest.TestCase): self.check_item_values(items[0], 'foo', 0, 1) def test_nonnegative_quality_after_degradation(self): - items = [Item("foo", 2, 0)] + items = [Item('foo', 2, 0)] self.generate_and_update_gilded_rose(items, 1) - self.check_item_values(items[0], "foo", 1, 0) + self.check_item_values(items[0], 'foo', 1, 0) def test_quality_degradation_after_sellby_date(self): - items = [Item("foo", 2, 10)] + items = [Item('foo', 2, 10)] gilded_rose = self.generate_and_update_gilded_rose(items, 2) - self.check_item_values(items[0], "foo", 0, 8) + self.check_item_values(items[0], 'foo', 0, 8) self.update_gilded_rose_days(gilded_rose, 2) - self.check_item_values(items[0], "foo", -2, 4) + self.check_item_values(items[0], 'foo', -2, 4) def test_aged_brie_after_4_days(self): items = [Item(AGED_BRIE, 2, 10)] @@ -78,26 +78,31 @@ class GildedRoseTest(unittest.TestCase): self.check_item_values(items[0], BACKSTAGE, expected_sell_in, expected_qual) def test_multiple_items_single_day_degradation(self): - items = [Item("foo", 0, 0), Item("bar", 1, 1), Item("baz", 2, 2)] + items = [Item('foo', 0, 0), Item('bar', 1, 1), Item('baz', 2, 2)] self.generate_and_update_gilded_rose(items, 1) - self.check_item_values(items[0], "foo", -1, 0) - self.check_item_values(items[1], "bar", 0, 0) - self.check_item_values(items[2], "baz", 1, 1) + self.check_item_values(items[0], 'foo', -1, 0) + self.check_item_values(items[1], 'bar', 0, 0) + self.check_item_values(items[2], 'baz', 1, 1) - def test_all_items_15_days(self): - items = [Item("foo", 10, 10), Item(SULFURAS, 10, 10), Item(BACKSTAGE, 10, 10), Item(AGED_BRIE, 10, 10)] + # @parameterized.expand([ + # ('normal_item_decrements_until_expired', 5, 5, 0, 0, -5, 0), + # ('') + # ]) + + def test_multiple_various_items_every_5_days_within_15_days(self): + items = [Item('foo', 10, 10), Item(SULFURAS, 10, 10), Item(BACKSTAGE, 10, 10), Item(AGED_BRIE, 10, 10)] gilded_rose = self.generate_and_update_gilded_rose(items, 5) - self.check_item_values(items[0], "foo", 5, 5) + self.check_item_values(items[0], 'foo', 5, 5) self.check_item_values(items[1], SULFURAS, 10, 10) self.check_item_values(items[2], BACKSTAGE, 5, 20) self.check_item_values(items[3], AGED_BRIE, 5, 15) self.update_gilded_rose_days(gilded_rose, 5) - self.check_item_values(items[0], "foo", 0, 0) + self.check_item_values(items[0], 'foo', 0, 0) self.check_item_values(items[1], SULFURAS, 10, 10) self.check_item_values(items[2], BACKSTAGE, 0, 35) self.check_item_values(items[3], AGED_BRIE, 0, 20) self.update_gilded_rose_days(gilded_rose, 5) - self.check_item_values(items[0], "foo", -5, 0) + self.check_item_values(items[0], 'foo', -5, 0) self.check_item_values(items[1], SULFURAS, 10, 10) self.check_item_values(items[2], BACKSTAGE, -5, 0) self.check_item_values(items[3], AGED_BRIE, -5, 30) From 4e2ae3a64575c2ce11d14a731c313615b4e492d7 Mon Sep 17 00:00:00 2001 From: zoengsw Date: Mon, 10 Nov 2025 17:32:59 +0000 Subject: [PATCH 5/6] i will deal with that later --- python/tests/test_gilded_rose.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 8bae3cf6..63d56512 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -85,8 +85,9 @@ class GildedRoseTest(unittest.TestCase): self.check_item_values(items[2], 'baz', 1, 1) # @parameterized.expand([ - # ('normal_item_decrements_until_expired', 5, 5, 0, 0, -5, 0), - # ('') + # ('normal_item_decrements_until_expired', 0, 5, 5, 0, 0, -5, 0), + # ('sulfuras_unchanged', 1, 10, 10, 10, 10, 10, 10), + # ('backstage_passes_') # ]) def test_multiple_various_items_every_5_days_within_15_days(self): From a00ab1a77aa41d8c94cb4312958d30feb3d586c0 Mon Sep 17 00:00:00 2001 From: zoengsw Date: Tue, 11 Nov 2025 09:56:01 +0000 Subject: [PATCH 6/6] refactor: parameterised multiple various items tests of 5, 10, 15 days later --- python/tests/test_gilded_rose.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/python/tests/test_gilded_rose.py b/python/tests/test_gilded_rose.py index 63d56512..31263511 100644 --- a/python/tests/test_gilded_rose.py +++ b/python/tests/test_gilded_rose.py @@ -87,26 +87,21 @@ class GildedRoseTest(unittest.TestCase): # @parameterized.expand([ # ('normal_item_decrements_until_expired', 0, 5, 5, 0, 0, -5, 0), # ('sulfuras_unchanged', 1, 10, 10, 10, 10, 10, 10), - # ('backstage_passes_') + # ('backstage_passes_', 2, 5, 20, 0, 35, -5, 0), + # ('aged_brie', 3, 5, 15, 0, 20, -5, 30) # ]) - - def test_multiple_various_items_every_5_days_within_15_days(self): + @parameterized.expand([ + ('5 days', 5, 5, 5, 10, 10, 5, 20, 5, 15), + ('10 days', 10, 0, 0, 10, 10, 0, 35, 0, 20), + ('15 days', 15, -5, 0, 10, 10, -5, 0, -5, 30) + ]) + def test_multiple_various_items_from_10_days_after(self, _, days, normal_expected_sell_in, normal_expected_quality, sulfuras_expected_sell_in, sulfuras_expected_quality, backstage_expected_sell_in, backstage_expected_quality, aged_brie_expected_sell_in, aged_brie_expected_quality,): items = [Item('foo', 10, 10), Item(SULFURAS, 10, 10), Item(BACKSTAGE, 10, 10), Item(AGED_BRIE, 10, 10)] - gilded_rose = self.generate_and_update_gilded_rose(items, 5) - self.check_item_values(items[0], 'foo', 5, 5) - self.check_item_values(items[1], SULFURAS, 10, 10) - self.check_item_values(items[2], BACKSTAGE, 5, 20) - self.check_item_values(items[3], AGED_BRIE, 5, 15) - self.update_gilded_rose_days(gilded_rose, 5) - self.check_item_values(items[0], 'foo', 0, 0) - self.check_item_values(items[1], SULFURAS, 10, 10) - self.check_item_values(items[2], BACKSTAGE, 0, 35) - self.check_item_values(items[3], AGED_BRIE, 0, 20) - self.update_gilded_rose_days(gilded_rose, 5) - self.check_item_values(items[0], 'foo', -5, 0) - self.check_item_values(items[1], SULFURAS, 10, 10) - self.check_item_values(items[2], BACKSTAGE, -5, 0) - self.check_item_values(items[3], AGED_BRIE, -5, 30) + gilded_rose = self.generate_and_update_gilded_rose(items, days) + self.check_item_values(items[0], 'foo', normal_expected_sell_in, normal_expected_quality) + self.check_item_values(items[1], SULFURAS, sulfuras_expected_sell_in, sulfuras_expected_quality) + self.check_item_values(items[2], BACKSTAGE, backstage_expected_sell_in, backstage_expected_quality) + self.check_item_values(items[3], AGED_BRIE, aged_brie_expected_sell_in, aged_brie_expected_quality) if __name__ == '__main__':