diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 1c6489dd..2a766714 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -9,70 +9,7 @@ class GildedRose { public void updateQuality() { for (Item item : items) { - updateItem(item); + item.update(); } - } - - private void updateItem(Item item) { - if (item.name.equals("Sulfuras, Hand of Ragnaros")) { - return; - } - - if (item.name.equals("Aged Brie")) { - updateAgedBrie(item); - } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { - updateBackstagePasses(item); - - } else { - updateNormal(item); - } - } - - private void updateBackstagePasses(Item item) { - item.sellIn = item.sellIn - 1; - - increaseQuality(item); - - if (item.sellIn < 10) { - increaseQuality(item); - } - - if (item.sellIn < 5) { - increaseQuality(item); - } - - if (item.sellIn < 0) { - item.quality = item.quality - item.quality; - } - } - - private void updateNormal(Item item) { - item.sellIn = item.sellIn - 1; - - decreaseQuality(item); - if (item.sellIn < 0) { - decreaseQuality(item); - } - } - - private void updateAgedBrie(Item item) { - item.sellIn = item.sellIn - 1; - - increaseQuality(item); - if (item.sellIn < 0) { - increaseQuality(item); - } - } - - public void decreaseQuality(Item item) { - if (item.quality > 0) { - item.quality = item.quality - 1; - } - } - - public void increaseQuality(Item item) { - if (item.quality < 50) { - 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 6f2c0e9c..4fa09603 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,23 +1,22 @@ package com.gildedrose; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; class GildedRoseTest { @Test void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; + Item[] items = new Item[] { new NormalItem("foo", 0, 0) }; GildedRose app = new GildedRose(items); app.updateQuality(); assertEquals("foo", app.items[0].name); } - + // copy-paste from https://gist.github.com/adelatorrefoss/ebc658b3e0054913dced80c8fe384de0 @Test public void quality_never_is_negative() { - Item[] items = new Item[]{new Item("foo", 0, 0)}; + Item[] items = new Item[]{new NormalItem("foo", 0, 0)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -27,7 +26,7 @@ class GildedRoseTest { @Test public void sulfuras_could_not_be_sold() { - Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 10, 0)}; + Item[] items = new Item[]{new SulfurasItem("Sulfuras, Hand of Ragnaros", 10, 0)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -37,7 +36,7 @@ class GildedRoseTest { @Test public void sulfuras_could_not_decrease_quality() { - Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 10, 10)}; + Item[] items = new Item[]{new SulfurasItem("Sulfuras, Hand of Ragnaros", 10, 10)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -47,7 +46,7 @@ class GildedRoseTest { @Test public void quality_could_not_be_more_than_fifty() { - Item[] items = new Item[]{new Item("Aged Brie", 10, 50)}; + Item[] items = new Item[]{new AgedBrieItem("Aged Brie", 10, 50)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -57,7 +56,7 @@ class GildedRoseTest { @Test public void item_with_date_passed_quality_decrease_by_twice() { - Item[] items = new Item[]{new Item("foo", -1, 40)}; + Item[] items = new Item[]{new NormalItem("foo", -1, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -67,7 +66,7 @@ class GildedRoseTest { @Test public void aged_brie_increase_quality_when_it_gets_older() { - Item[] items = new Item[]{new Item("Aged Brie", 1, 40)}; + Item[] items = new Item[]{new AgedBrieItem("Aged Brie", 1, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -77,7 +76,7 @@ class GildedRoseTest { @Test public void aged_brie_increase_by_two_quality_when_date_passed() { - Item[] items = new Item[]{new Item("Aged Brie", -1, 40)}; + Item[] items = new Item[]{new AgedBrieItem("Aged Brie", -1, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -87,7 +86,7 @@ class GildedRoseTest { @Test public void aged_brie_increase_by_two_quality_when_date_passed_and_not_more_than_fifty() { - Item[] items = new Item[]{new Item("Aged Brie", -1, 50)}; + Item[] items = new Item[]{new AgedBrieItem("Aged Brie", -1, 50)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -97,7 +96,7 @@ class GildedRoseTest { @Test public void backstage_passes_increase_quality_by_two_when_sellin_less_than_ten() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 10, 40)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 10, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -107,7 +106,7 @@ class GildedRoseTest { @Test public void backstage_passes_increase_quality_by_two_when_sellin_less_than_six() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 6, 40)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 6, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -117,7 +116,7 @@ class GildedRoseTest { @Test public void backstage_passes_increase_quality_by_three_when_sellin_less_than_five() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 5, 40)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 5, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -127,7 +126,7 @@ class GildedRoseTest { @Test public void backstage_passes_increase_quality_by_two_when_sellin_less_than_six_and_not_more_than_fifty() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 6, 49)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 6, 49)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -137,7 +136,7 @@ class GildedRoseTest { @Test public void backstage_passes_increase_quality_by_three_when_sellin_less_than_five_and_not_more_than_fifty() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 5, 48)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 5, 48)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -147,7 +146,7 @@ class GildedRoseTest { @Test public void backstage_passes_quality_drops_to_zero_after_concert() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 0, 40)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 0, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -157,7 +156,7 @@ class GildedRoseTest { @Test public void backstage_passes_quality_increase_quality_by_one_when_date_is_more_than_10() { - Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 11, 40)}; + Item[] items = new Item[]{new BackstagePassesItem("Backstage passes to a TAFKAL80ETC concert", 11, 40)}; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -165,4 +164,4 @@ class GildedRoseTest { assertEquals(41, app.items[0].quality); } -} +} \ No newline at end of file