Refactor to unique changeQuality

This commit is contained in:
Remus Decea 2023-11-13 11:39:22 +02:00
parent bf4fe8a02f
commit eb0e2bad02
2 changed files with 14 additions and 24 deletions

View File

@ -32,32 +32,25 @@ class GildedRose {
} }
} }
private int getDecreasedQuality(int oldQuality, int factor){ private void changeQuality(Item item, int factor) {
return Math.max(oldQuality - factor, 0); item.quality = Math.min(Math.max(item.quality + factor, 0), 50);
} }
private int getIncreasedQuality(Item item, int factor) {
return Math.min(item.quality + factor, 50);
}
private void changeQualityOfStandardItems(Item item) { private void changeQualityOfStandardItems(Item item) {
int decreaseFactor = (item.sellIn > 0) ? 1 : 2; final int decreaseFactor = (item.sellIn > 0) ? -1 : -2;
item.quality = getDecreasedQuality(item.quality, decreaseFactor); changeQuality(item, decreaseFactor);
} }
private void changeQualityOfBries(Item item) { private void changeQualityOfBries(Item item) {
int increaseFactor = (item.sellIn > 0) ? 1 : 2; final int increaseFactor = (item.sellIn > 0) ? 1 : 2;
item.quality = getIncreasedQuality(item, increaseFactor); changeQuality(item, increaseFactor);
} }
private void changeQualityOfPasses(Item item) { private void changeQualityOfPasses(Item item) {
if (item.sellIn < 0) { if (item.sellIn < 0) {
item.quality = 0; item.quality = 0;
} else if (item.sellIn < 5) { } else if (item.sellIn < 5) {
item.quality = getIncreasedQuality(item, 3); changeQuality(item, 3);
} else if (item.sellIn < 10) { } else if (item.sellIn < 10) {
item.quality = getIncreasedQuality(item, 2); changeQuality(item, 2);
} else } else
item.quality = getIncreasedQuality(item, 1); changeQuality(item, 1);
} }
} }

View File

@ -17,23 +17,20 @@ class GildedRoseTest {
@Test @Test
void standardItems(){ void standardItems(){
Item[] items = new Item[]{ Item[] items = new Item[]{
new Item("item1", 100, 100), new Item("item1", 40, 40)
new Item("item2", 50, 50)
}; };
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
app.updateQuality(); app.updateQuality();
assertEquals(app.items[0].quality, 99); assertEquals(app.items[0].quality, 39);
assertEquals(app.items[1].quality, 49); assertEquals(app.items[0].sellIn, 39);
assertEquals(app.items[0].sellIn, 99);
assertEquals(app.items[1].sellIn, 49);
} }
@Test @Test
void qualityDegradationForExpired(){ void qualityDegradationForExpired(){
Item[] items = new Item[]{new Item("item1", 0, 100)}; Item[] items = new Item[]{new Item("item1", 0, 40)};
GildedRose app = new GildedRose(items); GildedRose app = new GildedRose(items);
app.updateQuality(); app.updateQuality();
assertEquals(app.items[0].quality, 98); assertEquals(app.items[0].quality, 38);
} }
@Test @Test