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){
return Math.max(oldQuality - factor, 0);
private void changeQuality(Item item, int factor) {
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) {
int decreaseFactor = (item.sellIn > 0) ? 1 : 2;
item.quality = getDecreasedQuality(item.quality, decreaseFactor);
final int decreaseFactor = (item.sellIn > 0) ? -1 : -2;
changeQuality(item, decreaseFactor);
}
private void changeQualityOfBries(Item item) {
int increaseFactor = (item.sellIn > 0) ? 1 : 2;
item.quality = getIncreasedQuality(item, increaseFactor);
final int increaseFactor = (item.sellIn > 0) ? 1 : 2;
changeQuality(item, increaseFactor);
}
private void changeQualityOfPasses(Item item) {
if (item.sellIn < 0) {
item.quality = 0;
} else if (item.sellIn < 5) {
item.quality = getIncreasedQuality(item, 3);
changeQuality(item, 3);
} else if (item.sellIn < 10) {
item.quality = getIncreasedQuality(item, 2);
changeQuality(item, 2);
} else
item.quality = getIncreasedQuality(item, 1);
changeQuality(item, 1);
}
}

View File

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