diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/Item.java index dac8bcc6..92b2423e 100644 --- a/Java/src/main/java/com/gildedrose/Item.java +++ b/Java/src/main/java/com/gildedrose/Item.java @@ -30,33 +30,29 @@ public class Item { case AgedBrie -> updateAgedBrieItem(); case BackstagePass -> updateBackstagePassItem(); case Sulfuras -> {} - case Normal -> updateUnknownItem(); + case Normal -> updateNormalItem(); } } - private void updateUnknownItem() { + private void updateNormalItem() { sellIn--; - if (quality > 0) { - quality--; - } + subtractQuality(1); - if (sellIn < 0 && quality > 0) { - quality--; + if (sellIn < 0) { + subtractQuality(1); } } private void updateBackstagePassItem() { - if (quality < 50) { - quality++; + addQuality(1); + + if (sellIn < 11) { + addQuality(1); } - if (sellIn < 11 && quality < 50) { - quality++; - } - - if (sellIn < 6 && quality < 50) { - quality++; + if (sellIn < 6) { + addQuality(1); } sellIn--; @@ -67,14 +63,24 @@ public class Item { } private void updateAgedBrieItem() { - if (quality < 50) { - quality++; - } + addQuality(1); sellIn--; - if (sellIn < 0 && quality < 50) { - quality++; + if (sellIn < 0) { + addQuality(1); + } + } + + private void addQuality(int addition) { + if ((quality + addition) <= 50) { + quality += addition; + } + } + + private void subtractQuality(int subtraction) { + if ((quality - subtraction) >= 0) { + quality -= subtraction; } } diff --git a/Java/src/test/java/com/gildedrose/ItemTest.java b/Java/src/test/java/com/gildedrose/ItemTest.java index e927c2a3..c873496f 100644 --- a/Java/src/test/java/com/gildedrose/ItemTest.java +++ b/Java/src/test/java/com/gildedrose/ItemTest.java @@ -43,17 +43,20 @@ class ItemTest { of(new Item(Sulfuras.getName(), 4, 20), new Item(Sulfuras.getName(), 4, 20), 10), // Backstagepass + of(new Item(BackstagePass.getName(), -1, 0), new Item(BackstagePass.getName(), -2, 0), 1), of(new Item(BackstagePass.getName(), 8, 40), new Item(BackstagePass.getName(), 7, 42), 1), of(new Item(BackstagePass.getName(), 8, 40), new Item(BackstagePass.getName(), -2, 0), 10), of(new Item(BackstagePass.getName(), 4, 40), new Item(BackstagePass.getName(), -6, 0), 10), of(new Item(BackstagePass.getName(), 0, 40), new Item(BackstagePass.getName(), -10, 0), 10), of(new Item(BackstagePass.getName(), -1, 40), new Item(BackstagePass.getName(), -11, 0), 10), - // Other + // Normal + of(new Item(Normal.getName(), -1, 0), new Item(Normal.getName(), -11, 0), 10), of(new Item(Normal.getName(), 0, 40), new Item(Normal.getName(), -10, 20), 10), of(new Item(Normal.getName(), -1, 40), new Item(Normal.getName(), -11, 20), 10), - of(new Item(Normal.getName(), -5, 80), new Item(Normal.getName(), -25, 40), 20) - + of(new Item(Normal.getName(), 10, 49), new Item(Normal.getName(), -10, 19), 20), + of(new Item(Normal.getName(), 10, 49), new Item(Normal.getName(), -10, 19), 20), + of(new Item(Normal.getName(), 11, 50), new Item(Normal.getName(), -9, 21), 20) ); } }