From 0697cf49f0fd67c73db1b0efeeb990387ec5fb85 Mon Sep 17 00:00:00 2001 From: Remus Decea Date: Mon, 13 Nov 2023 13:07:48 +0200 Subject: [PATCH] Treat conjured items as well --- .../main/java/com/gildedrose/GildedRose.java | 25 +++++++++++++------ .../java/com/gildedrose/GildedRoseTest.java | 16 ++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index afd3deaa..a9d2a70b 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -14,25 +14,28 @@ class GildedRose { Item[] agingItems = Arrays.stream(items).filter(i -> !isSulfuras(i)).toArray(Item[]::new); Stream bries = Arrays.stream(agingItems).filter(this::isBrie); Stream backstagePasses = Arrays.stream(agingItems).filter(this::isBackstagePass); - Stream standardItems = Arrays.stream(agingItems).filter(i -> !(isBackstagePass(i) || isBrie(i))); + Stream conjured = Arrays.stream(agingItems).filter(this::isConjured); + Stream 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"); + } + } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 4851f9aa..1e934a00 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -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); + } }