Merge pull request #3 from zoengsw/tests-except-conjured

Tests except conjured
This commit is contained in:
zoengsw 2025-11-11 10:01:55 +00:00 committed by GitHub
commit cf1ceafe3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
import unittest
from hashlib import file_digest
from parameterized import parameterized
from gilded_rose import Item, GildedRose
@ -24,93 +24,84 @@ 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):
items = [Item("foo", 2, 0)]
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)
self.check_item_values(items[0], 'foo', 1, 0)
def test_after_sellby_date(self):
items = [Item("foo", 2, 10)]
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.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_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)
def test_backstage_passes_15_to_10_days(self):
items = [Item(BACKSTAGE, 15, 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, 10, 5)
self.check_item_values(items[0], BACKSTAGE, expected_sell_in, expected_qual)
def test_backstage_passes_10_to_5_days(self):
items = [Item(BACKSTAGE, 10, 0)]
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)
def test_multiple_items_different_sellin_1day(self):
items = [Item("foo", 0, 0), Item("bar", 1, 1), Item("baz", 2, 2)]
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)
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)]
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)
# @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_', 2, 5, 20, 0, 35, -5, 0),
# ('aged_brie', 3, 5, 15, 0, 20, -5, 30)
# ])
@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, 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__':