diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 9b3a5c7d..722efa42 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -9,48 +9,40 @@ class GildedRose { public void updateQuality() { for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11 && items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - if (items[i].sellIn < 6 && items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } - } - - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].sellIn = items[i].sellIn - 1; - } - - if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } + if ("Sulfuras, Hand of Ragnaros".equals(items[i].name)) { + continue; + } else if ("Conjured Mana Cake".equals(items[i].name)) { + while (items[i].quality > 0) { + if (items[i].sellIn >= 0) { + items[i].quality = items[i].quality - 2; } else { - items[i].quality = items[i].quality - items[i].quality; + items[i].quality = items[i].quality - 4; } - } else { - if (items[i].quality < 50) { + } + items[i].sellIn = items[i].sellIn - 1; + continue; + } else if ("Backstage passes to a TAFKAL80ETC concert".equals(items[i].name) | "Aged Brie".equals(items[i].name)) { + while (items[i].quality < 50) { + if ("Backstage passes to a TAFKAL80ETC concert".equals(items[i].name) & items[i].sellIn <= 5) { + items[i].quality = items[i].quality + 3; + } else if ("Backstage passes to a TAFKAL80ETC concert".equals(items[i].name) & items[i].sellIn < 10) { + items[i].quality = items[i].quality + 2; + } else { items[i].quality = items[i].quality + 1; } } + items[i].sellIn = items[i].sellIn - 1; + continue; + } else { + // last case + while (items[i].quality > 0) { + if (items[i].sellIn >= 0) { + items[i].quality = items[i].quality - 2; + } else { + items[i].quality = items[i].quality - 4; + } + } + items[i].sellIn = items[i].sellIn - 1; } } } diff --git a/Java/src/test/java/com/gildedrose/UpdateQualityTest.java b/Java/src/test/java/com/gildedrose/UpdateQualityTest.java index ab7f3e3b..9e5fa237 100644 --- a/Java/src/test/java/com/gildedrose/UpdateQualityTest.java +++ b/Java/src/test/java/com/gildedrose/UpdateQualityTest.java @@ -188,15 +188,37 @@ class UpdateQualityTest { */ -// @Test -// void itemConjuredQualityTwiceAsFastAsNormalItems() { -// System.out.println("\"Conjured\" items degrade in Quality twice as fast as normal items"); -// Item[] items = new Item[]{ -// new Item("Conjured Mana Cake", 3, 6)}; -// GildedRose app = new GildedRose(items); -// app.updateQuality(); -// assertEquals(4, app.items[0].quality); -// } + @Test + void itemConjuredQualityTwiceAsFastAsNormalItemsWithPositiveSellIn() { + System.out.println("\"Conjured\" items degrade in Quality twice as fast as normal items when sellin is positive"); + Item[] items = new Item[]{ + new Item("Conjured Mana Cake", 3, 6)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(4, app.items[0].quality); + } + + @Test + void itemConjuredQualityTwiceAsFastAsNormalItemsWhenSellInIsZero() { + System.out.println("\"Conjured\" items degrade in Quality twice as fast as normal items when sellin is wero"); + Item[] items = new Item[]{ + new Item("Conjured Mana Cake", 0, 10) + }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(8, app.items[0].quality); + } + + @Test + void itemConjuredQualityTwiceAsFastAsNormalItemsWithNegativeSellIn() { + System.out.println("\"Conjured\" items degrade in Quality twice as fast as normal items when sellin is negtive"); + Item[] items = new Item[]{ + new Item("Conjured Mana Cake", -1, 8) + }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(4, app.items[0].quality); + } }