From ad087914bcc23d26355f0a3c3593fe5939a49b65 Mon Sep 17 00:00:00 2001 From: Gabba Date: Mon, 18 Dec 2017 11:51:18 +0000 Subject: [PATCH] adds Conjured item --- .../main/java/com/gildedrose/item/.DS_Store | Bin 0 -> 6148 bytes .../com/gildedrose/item/ConjuredItem.java | 20 ++++++++++ .../item/CustomisedItemFactory.java | 3 ++ .../java/com/gildedrose/GildedRoseTest.java | 37 ++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/item/.DS_Store create mode 100644 Java/src/main/java/com/gildedrose/item/ConjuredItem.java diff --git a/Java/src/main/java/com/gildedrose/item/.DS_Store b/Java/src/main/java/com/gildedrose/item/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6bc317c42d9ebdafdfc8cbaddc3366d4991f4071 GIT binary patch literal 6148 zcmeHKO-sW-5Pe&Vv`C?zES_@oBzX1`V-2lH$^nr9>Sk|lCZKlxN+4d{`PVvI*Dv0_cK+z^+%rt|@$ zQ#|Qf1b1 zk(6U?o}eznM=3*x8P=HNj^#r2s9`qJ5|d3cQ@|831%6xs?%86k1CLgk0;Yf|P$(eZ zhlnm12h2U{r-Owa0fn0M-1obj7Ong95DCj>2Trj z;lju+oKT#O&is*fhl@R0X$qJE+Y0RYW>@zAtNQc*HpyD1fGO~=6mZS{u%Gai!rr>` va{Hg+9N#Act literal 0 HcmV?d00001 diff --git a/Java/src/main/java/com/gildedrose/item/ConjuredItem.java b/Java/src/main/java/com/gildedrose/item/ConjuredItem.java new file mode 100644 index 00000000..648c81f9 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/item/ConjuredItem.java @@ -0,0 +1,20 @@ +package com.gildedrose.item; + +public class ConjuredItem implements CustomisedItem { + + private final Item item; + + public ConjuredItem(Item item) { + this.item = item; + } + + public void updateState() { + item.sellIn -= 1; + if (item.sellIn > 0) { + item.quality -= 2; + } else { + item.quality -= 4; + } + } + +} diff --git a/Java/src/main/java/com/gildedrose/item/CustomisedItemFactory.java b/Java/src/main/java/com/gildedrose/item/CustomisedItemFactory.java index 770abcc1..9aa14e06 100644 --- a/Java/src/main/java/com/gildedrose/item/CustomisedItemFactory.java +++ b/Java/src/main/java/com/gildedrose/item/CustomisedItemFactory.java @@ -5,6 +5,7 @@ public class CustomisedItemFactory { public final static String SULFURAS = "Sulfuras, Hand of Ragnaros"; public final static String BRIE = "Aged Brie"; public final static String BACKSTAGE_PASSES_ITEM = "Backstage passes to a TAFKAL80ETC concert"; + public final static String CONJURED_ITEM = "Conjured"; public CustomisedItem customiseItem(Item item) { if (item.name.equals(SULFURAS)) { @@ -13,6 +14,8 @@ public class CustomisedItemFactory { return new AgedBrie(item); } else if (item.name.equals(BACKSTAGE_PASSES_ITEM)) { return new BackstagePassesItem(item); + } else if (item.name.equals(CONJURED_ITEM)) { + return new ConjuredItem(item); } else { return new StandardItem(item); } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index d211789e..7bda5177 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -2,6 +2,7 @@ package com.gildedrose; import static org.junit.Assert.*; +import com.gildedrose.item.CustomisedItem; import com.gildedrose.item.Item; import com.gildedrose.item.CustomisedItemFactory; import org.junit.Test; @@ -44,6 +45,15 @@ public class GildedRoseTest { assertEquals(-1, itemSellByDayNumber(app)); } + @Test + public void conjuredItemDecreasesSellByDayNumberEachTime() { + GildedRose app = newGildedRose(CustomisedItemFactory.CONJURED_ITEM, 0, 0); + + app.updateQuality(); + + assertEquals(-1, itemSellByDayNumber(app)); + } + @Test public void brieIncreasesInQualityEachTime() { GildedRose app = newGildedRose(CustomisedItemFactory.BRIE, 1, 1); @@ -152,6 +162,33 @@ public class GildedRoseTest { assertEquals(1, itemSellByDayNumber(app)); } + @Test + public void conjuredItemDecreasesQualityByTwoIfSellByDayIsAboveZero() { + GildedRose app = newGildedRose(CustomisedItemFactory.CONJURED_ITEM, 2, 5); + + app.updateQuality(); + + assertEquals(3, itemQualityValue(app)); + } + + @Test + public void conjuredItemDecreasesQualityByFourOnceSellByDayIsZeroOrLess() { + GildedRose app = newGildedRose(CustomisedItemFactory.CONJURED_ITEM,0, 5); + + app.updateQuality(); + + assertEquals(1, itemQualityValue(app)); + } + + @Test + public void conjuredItemCannotHaveQualityBelowZero() { + GildedRose app = newGildedRose(CustomisedItemFactory.CONJURED_ITEM, 0, 0); + + app.updateQuality(); + + assertEquals(0, itemQualityValue(app)); + } + private GildedRose newGildedRose(String itemName, int itemSellIn, int itemQuality) { Item[] items = new Item[] { new Item(itemName, itemSellIn, itemQuality)}; return new GildedRose(items);