diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/.DS_Store differ diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 87a3b926..f4a23b18 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -8,55 +8,74 @@ 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; + for (Item item : items) { + updateItemQuality(item); + } + } - 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; - } - } + private void updateItemQuality(Item item) { + switch (item.name) { + case "Aged Brie": + updateQualityForAgedBrie(item); + break; + case "Backstage passes to a TAFKAL80ETC concert": + updateQualityForBackstagePasses(item); + break; + case "Sulfuras, Hand of Ragnaros": + break; + default: + updateQualityForRegularItems(item); + break; + } - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } - } + if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.sellIn--; + } + + if (item.sellIn < 0) { + handleExpiredItem(item); + } + } + + private void updateQualityForAgedBrie(Item item) { + if (item.quality < 50) { + item.quality++; + } + } + + private void updateQualityForBackstagePasses(Item item) { + if (item.quality < 50) { + item.quality++; + if (item.sellIn < 11) { + item.quality = Math.min(item.quality + 1, 50); } - - 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; - } - } + if (item.sellIn < 6) { + item.quality = Math.min(item.quality + 1, 50); } } } + + private void updateQualityForRegularItems(Item item) { + if (item.quality > 0) { + item.quality--; + } + } + + private void handleExpiredItem(Item item) { + switch (item.name) { + case "Aged Brie": + if (item.quality < 50) { + item.quality++; + } + break; + case "Backstage passes to a TAFKAL80ETC concert": + item.quality = 0; + break; + default: + if (item.quality > 0) { + item.quality--; + } + break; + } + } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..b87892b2 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,17 +1,39 @@ package com.gildedrose; import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; class GildedRoseTest { @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; + void testAgedBrieQualityIncreases() { + Item[] items = new Item[] { new Item("Aged Brie", 5, 10) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals("fixme", app.items[0].name); + assertEquals(11, items[0].quality); } + @Test + void testBackstagePassesQualityIncreases() { + Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 10, 20) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(22, items[0].quality); + } + + @Test + void testRegularItemQualityDecreases() { + Item[] items = new Item[] { new Item("Regular Item", 5, 10) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(9, items[0].quality); + } + + @Test + void testSulfurasDoesNotChange() { + Item[] items = new Item[] { new Item("Sulfuras, Hand of Ragnaros", 5, 80) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(80, items[0].quality); + } } diff --git a/Java/src/test/java/com/gildedrose/TexttestFixture.java b/Java/src/test/java/com/gildedrose/TexttestFixture.java deleted file mode 100644 index d059c88f..00000000 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gildedrose; - -public class TexttestFixture { - public static void main(String[] args) { - System.out.println("OMGHAI!"); - - Item[] items = new Item[] { - new Item("+5 Dexterity Vest", 10, 20), // - new Item("Aged Brie", 2, 0), // - new Item("Elixir of the Mongoose", 5, 7), // - new Item("Sulfuras, Hand of Ragnaros", 0, 80), // - new Item("Sulfuras, Hand of Ragnaros", -1, 80), - new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), - new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), - new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), - // this conjured item does not work properly yet - new Item("Conjured Mana Cake", 3, 6) }; - - GildedRose app = new GildedRose(items); - - int days = 2; - if (args.length > 0) { - days = Integer.parseInt(args[0]) + 1; - } - - for (int i = 0; i < days; i++) { - System.out.println("-------- day " + i + " --------"); - System.out.println("name, sellIn, quality"); - for (Item item : items) { - System.out.println(item); - } - System.out.println(); - app.updateQuality(); - } - } - -}