Iqbal Refactoring

This commit is contained in:
iqbal201283 2025-06-22 14:42:56 +05:30
parent 3fe7774406
commit e19a316b13
3 changed files with 67 additions and 18 deletions

View File

@ -13,10 +13,10 @@ class BaseItemUpdater:
self.item.sell_in -= 1
def update_quality(self):
if self.item.quality > 0:
self.item.quality -= 1
if self.item.sell_in < 0 and self.item.quality > 0:
self.item.quality -= 1
degrade = 1
if self.item.sell_in < 0:
degrade = 2
self.item.quality = max(self.item.quality - degrade, 0)
@ -44,7 +44,19 @@ class BackstagePassUpdater(BaseItemUpdater):
class SulfurasUpdater(BaseItemUpdater):
def update(self):
pass
print("Sulfuras has no change")
def update_quality(self):
print("Sulfuras has no change")
# pass
def update_sell_in(self):
print("Sulfuras has no change")
class ConjuredItemUpdater(BaseItemUpdater):
def update_quality(self):
degrade = 2
if self.item.sell_in < 0:
degrade *= 2
self.item.quality = max(self.item.quality - degrade, 0)
class ItemUpdaterFactory:
@ -52,10 +64,12 @@ class ItemUpdaterFactory:
def get_updater(item):
if item.name == "Aged Brie":
return AgedBrieUpdater(item)
elif item.name == "Backstage passes":
elif item.name == "Backstage passes to a TAFKAL80ETC concert":
return BackstagePassUpdater(item)
elif item.name == "Sulfuras":
elif item.name == "Sulfuras, Hand of Ragnaros":
return SulfurasUpdater(item)
elif item.name == "Conjured Mana Cake":
return ConjuredItemUpdater(item)
else:
return BaseItemUpdater(item)

View File

@ -1,16 +1,51 @@
# -*- coding: utf-8 -*-
import unittest
# import unittest
from gilded_rose import Item, GildedRose
# from gilded_rose import Item, GildedRose
class GildedRoseTest(unittest.TestCase):
def test_foo(self):
items = [Item("foo", 0, 0)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
self.assertEqual("foo", items[0].name)
# class GildedRoseTest(unittest.TestCase):
# def test_foo(self):
# items = [Item("foo", 0, 0)]
# gilded_rose = GildedRose(items)
# gilded_rose.update_quality()
# self.assertEqual("foo", items[0].name)
if __name__ == '__main__':
unittest.main()
# if __name__ == '__main__':
# unittest.main()
import pytest
from gilded_rose import GildedRose
from items import Item
def test_regular_item_degrades():
items = [Item("foo", 10, 20)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
assert items[0].quality == 19
assert items[0].sell_in == 9
def test_aged_brie_increases():
items = [Item("Aged Brie", 2, 0)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
assert items[0].quality == 1
assert items[0].sell_in == 1
def test_backstage_passes_increase():
items = [Item("Backstage passes", 11, 10)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
assert items[0].quality == 11
def test_sulfuras_no_change():
items = [Item("Sulfuras", 0, 80)]
gilded_rose = GildedRose(items)
gilded_rose.update_quality()
assert items[0].quality == 80
assert items[0].sell_in == 0

View File

@ -17,7 +17,7 @@ if __name__ == "__main__":
Item(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O
]
days = 2
days = 4
import sys
if len(sys.argv) > 1:
days = int(sys.argv[1]) + 1