mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 06:21:29 +00:00
Treat conjured items as well
This commit is contained in:
parent
94f18f669e
commit
0697cf49f0
@ -14,25 +14,28 @@ class GildedRose {
|
||||
Item[] agingItems = Arrays.stream(items).filter(i -> !isSulfuras(i)).toArray(Item[]::new);
|
||||
Stream<Item> bries = Arrays.stream(agingItems).filter(this::isBrie);
|
||||
Stream<Item> backstagePasses = Arrays.stream(agingItems).filter(this::isBackstagePass);
|
||||
Stream<Item> standardItems = Arrays.stream(agingItems).filter(i -> !(isBackstagePass(i) || isBrie(i)));
|
||||
Stream<Item> conjured = Arrays.stream(agingItems).filter(this::isConjured);
|
||||
Stream<Item> standardItems = Arrays.stream(agingItems).filter(i -> !(isBackstagePass(i) || isBrie(i) || isConjured(i)));
|
||||
for (Item item : agingItems) {
|
||||
item.sellIn--;
|
||||
}
|
||||
bries.forEach(this::changeQualityOfBries);
|
||||
backstagePasses.forEach(this::changeQualityOfPasses);
|
||||
standardItems.forEach(this::changeQualityOfStandardItems);
|
||||
bries.forEach(this::changeBrieQuality);
|
||||
backstagePasses.forEach(this::changeBackstagePassesQuality);
|
||||
conjured.forEach(this::changeConjuredQuality);
|
||||
standardItems.forEach(this::changeStandardQuality);
|
||||
}
|
||||
|
||||
private void changeQuality(Item item, int factor) {
|
||||
item.quality = Math.min(Math.max(item.quality + factor, 0), 50);
|
||||
}
|
||||
private void changeQualityOfStandardItems(Item item) {
|
||||
private void changeStandardQuality(Item item) {
|
||||
changeQuality(item, (item.sellIn > 0) ? -1 : -2);
|
||||
}
|
||||
private void changeQualityOfBries(Item item) {
|
||||
private void changeBrieQuality(Item item) {
|
||||
changeQuality(item, (item.sellIn > 0) ? 1 : 2);
|
||||
}
|
||||
private void changeQualityOfPasses(Item item) {
|
||||
|
||||
private void changeBackstagePassesQuality(Item item) {
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = 0;
|
||||
} else if (item.sellIn < 5) {
|
||||
@ -43,6 +46,10 @@ class GildedRose {
|
||||
changeQuality(item, 1);
|
||||
}
|
||||
|
||||
private void changeConjuredQuality(Item item) {
|
||||
changeQuality(item, (item.sellIn > 0) ? -2 : -4);
|
||||
}
|
||||
|
||||
private boolean isBackstagePass(Item i) {
|
||||
return i.name.toLowerCase().contains("backstage");
|
||||
}
|
||||
@ -52,4 +59,8 @@ class GildedRose {
|
||||
private boolean isBrie(Item i) {
|
||||
return i.name.equals("Aged Brie");
|
||||
}
|
||||
private boolean isConjured(Item i) {
|
||||
return i.name.toLowerCase().contains("conjured");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -111,4 +111,20 @@ class GildedRoseTest {
|
||||
assertEquals(app.items[6].quality, 0);
|
||||
assertEquals(app.items[7].quality, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void conjuredItems() {
|
||||
Item[] items = new Item[]{
|
||||
new Item("Conjured item 1", 100, 30),
|
||||
new Item("Conjured item 2", 0, 30),
|
||||
new Item("Conjured item 3", 0, 4),
|
||||
new Item("Conjured item 3", 0, 3)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(app.items[0].quality, 28);
|
||||
assertEquals(app.items[1].quality, 26);
|
||||
assertEquals(app.items[2].quality, 0);
|
||||
assertEquals(app.items[3].quality, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user