diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e6feb751..a68c272c 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -1,62 +1,57 @@ package com.gildedrose; -class GildedRose { - Item[] items; +public class GildedRose { + private static final int MAX_QUALITY = 50; + private static final int MIN_QUALITY = 0; - public GildedRose(Item[] items) { - this.items = items; - } + public static void updateQuality(Item[] items) { + for (Item item : items) { + if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.sellIn--; - 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; + if (item.name.equals("Aged Brie")) { + increaseQuality(item); + if (item.sellIn < 0) { + increaseQuality(item); } - } - } 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; - } - } + } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { + increaseQuality(item); + if (item.sellIn < 11) { + increaseQuality(item); } - } - } - - 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; + if (item.sellIn < 6) { + increaseQuality(item); } + if (item.sellIn < 0) { + item.quality = MIN_QUALITY; + } + } else if (item.name.equals("Conjured Mana Cake")) { + decreaseQuality(item, 2); } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + decreaseQuality(item); + if (item.sellIn < 0) { + decreaseQuality(item); } } } } } -} \ No newline at end of file + + private static void increaseQuality(Item item) { + if (item.quality < MAX_QUALITY) { + item.quality++; + } + } + + private static void decreaseQuality(Item item) { + if (item.quality > MIN_QUALITY) { + item.quality--; + } + } + + private static void decreaseQuality(Item item, int amount) { + for (int i = 0; i < amount; i++) { + decreaseQuality(item); + } + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..570d02ca 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -9,9 +9,9 @@ class GildedRoseTest { @Test void foo() { Item[] items = new Item[] { new Item("foo", 0, 0) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals("fixme", app.items[0].name); + GildedRose app = new GildedRose(); + app.updateQuality(items); + assertEquals("fixme", 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..fc65d0a5 100644 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ b/Java/src/test/java/com/gildedrose/TexttestFixture.java @@ -16,7 +16,7 @@ public class TexttestFixture { // this conjured item does not work properly yet new Item("Conjured Mana Cake", 3, 6) }; - GildedRose app = new GildedRose(items); + GildedRose app = new GildedRose(); int days = 2; if (args.length > 0) { @@ -30,7 +30,7 @@ public class TexttestFixture { System.out.println(item); } System.out.println(); - app.updateQuality(); + app.updateQuality(items); } }