mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +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);
|
Item[] agingItems = Arrays.stream(items).filter(i -> !isSulfuras(i)).toArray(Item[]::new);
|
||||||
Stream<Item> bries = Arrays.stream(agingItems).filter(this::isBrie);
|
Stream<Item> bries = Arrays.stream(agingItems).filter(this::isBrie);
|
||||||
Stream<Item> backstagePasses = Arrays.stream(agingItems).filter(this::isBackstagePass);
|
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) {
|
for (Item item : agingItems) {
|
||||||
item.sellIn--;
|
item.sellIn--;
|
||||||
}
|
}
|
||||||
bries.forEach(this::changeQualityOfBries);
|
bries.forEach(this::changeBrieQuality);
|
||||||
backstagePasses.forEach(this::changeQualityOfPasses);
|
backstagePasses.forEach(this::changeBackstagePassesQuality);
|
||||||
standardItems.forEach(this::changeQualityOfStandardItems);
|
conjured.forEach(this::changeConjuredQuality);
|
||||||
|
standardItems.forEach(this::changeStandardQuality);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeQuality(Item item, int factor) {
|
private void changeQuality(Item item, int factor) {
|
||||||
item.quality = Math.min(Math.max(item.quality + factor, 0), 50);
|
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);
|
changeQuality(item, (item.sellIn > 0) ? -1 : -2);
|
||||||
}
|
}
|
||||||
private void changeQualityOfBries(Item item) {
|
private void changeBrieQuality(Item item) {
|
||||||
changeQuality(item, (item.sellIn > 0) ? 1 : 2);
|
changeQuality(item, (item.sellIn > 0) ? 1 : 2);
|
||||||
}
|
}
|
||||||
private void changeQualityOfPasses(Item item) {
|
|
||||||
|
private void changeBackstagePassesQuality(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) {
|
||||||
@ -43,6 +46,10 @@ class GildedRose {
|
|||||||
changeQuality(item, 1);
|
changeQuality(item, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void changeConjuredQuality(Item item) {
|
||||||
|
changeQuality(item, (item.sellIn > 0) ? -2 : -4);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isBackstagePass(Item i) {
|
private boolean isBackstagePass(Item i) {
|
||||||
return i.name.toLowerCase().contains("backstage");
|
return i.name.toLowerCase().contains("backstage");
|
||||||
}
|
}
|
||||||
@ -52,4 +59,8 @@ class GildedRose {
|
|||||||
private boolean isBrie(Item i) {
|
private boolean isBrie(Item i) {
|
||||||
return i.name.equals("Aged Brie");
|
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[6].quality, 0);
|
||||||
assertEquals(app.items[7].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