diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e6feb751..2ce8efa0 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -7,56 +7,71 @@ class GildedRose { this.items = items; } - 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) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) { - if (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; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } + public void updateInventory() { + for (Item item : items) { + itemUpgrade(item); } } -} \ No newline at end of file + + private static void itemUpgrade(Item item) { + updateQuality(item); + updateExpiration(item); + if (isExpired(item)) { + processExpired(item); + } + } + + private static void updateQuality(Item item) { + if (item.name.equals("Aged Brie")) { + increaseQuality(item); + } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { + increaseQuality(item); + + if (item.sellIn < 11) { + increaseQuality(item); + } + + if (item.sellIn < 6) { + increaseQuality(item); + } + + } else if (item.name.equals("Sulfuras, Hand of Ragnaros")) { + return; + } else decreaseQuality(item); + } + + private static void updateExpiration(Item item) { + if (item.name.equals("Sulfuras, Hand of Ragnaros")) { + return; + } + item.sellIn--; + } + + private static boolean isExpired(Item item) { + return item.sellIn < 0; + } + + private static void processExpired(Item item) { + if (item.name.equals("Aged Brie")) { + increaseQuality(item); + } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { + item.quality = 0; + } else if (item.name.equals("Sulfuras, Hand of Ragnaros")) { + return; + } else { + decreaseQuality(item); + } + } + + private static void increaseQuality(Item item) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + } + + private static void decreaseQuality(Item item) { + if (item.quality > 0) { + item.quality = item.quality - 1; + } + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..175e104d 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -7,11 +7,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class GildedRoseTest { @Test - void foo() { + void testUpdateQuality() { Item[] items = new Item[] { new Item("foo", 0, 0) }; GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals("fixme", app.items[0].name); + app.updateInventory(); + assertEquals("foo", app.items[0].name); } - } diff --git a/Java/src/test/java/com/gildedrose/TexttestFixture.java b/Java/src/test/java/com/gildedrose/TexttestFixture.java index d059c88f..0d592307 100644 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ b/Java/src/test/java/com/gildedrose/TexttestFixture.java @@ -30,8 +30,7 @@ public class TexttestFixture { System.out.println(item); } System.out.println(); - app.updateQuality(); + app.updateInventory(); } } - }