From a654464b7550a76817b32478feeacc4183023aa9 Mon Sep 17 00:00:00 2001 From: Bart Van der Plancken Date: Thu, 6 Feb 2020 22:19:53 +0100 Subject: [PATCH] Build in feature for conjured items --- .../main/java/com/gildedrose/GildedRose.java | 31 ++++++++++++++++--- .../java/com/gildedrose/GildedRoseTest.java | 18 +++++------ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 5017b7ab..727d2e05 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -7,6 +7,7 @@ class GildedRose { public static final String AGED_BRIE = "Aged Brie"; public static final String SULFURAS_HAND_OF_RAGNAROS = "Sulfuras, Hand of Ragnaros"; public static final String BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert"; + public static final String CONJURED_MANA_CAKE = "Conjured Mana Cake"; Item[] items; @@ -25,10 +26,7 @@ class GildedRose { int qualityOffset = determineEnhancingQualityOffset(item); item.quality = Integer.min(item.quality + qualityOffset, MAX_QUALITY); } else { - int qualityOffset = 1; - if(item.sellIn <= 0) { - qualityOffset +=1; - } + int qualityOffset = determineDegradingQualityOffset(item); item.quality = Integer.max(MIN_QUALITY, item.quality - qualityOffset); } @@ -53,6 +51,14 @@ class GildedRose { return name.equals(GildedRose.AGED_BRIE) || name.equals(BACKSTAGE_PASSES); } + /** + * @param name + * @return + */ + private boolean isConjuredItem(String name) { + return name.equals(CONJURED_MANA_CAKE); + } + /** * @param item * @return @@ -68,7 +74,22 @@ class GildedRose { qualityOffset += 1; } } else if (isExpiredSale(item.sellIn)) { - qualityOffset += 1; + qualityOffset *= 2; + } + return qualityOffset; + } + + /** + * @param item + * @return + */ + private int determineDegradingQualityOffset(Item item) { + int qualityOffset = 1; + if(item.sellIn <= 0) { + qualityOffset *=2; + } + if(isConjuredItem(item.name)) { + qualityOffset *= 2; } return qualityOffset; } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index e142ffab..4a50d5e5 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -130,15 +130,15 @@ class GildedRoseTest { // day one gildedRose.updateQuality(); assertEquals(2, conjuredItem.sellIn); -// assertEquals(4, conjuredItem.quality); //TODO this is the feature to get working -// // day two -// gildedRose.updateQuality(); -// assertEquals(1, conjuredItem.sellIn); -// assertEquals(2, conjuredItem.quality); //TODO this is the feature to get working -// // day three -// gildedRose.updateQuality(); -// assertEquals(0, conjuredItem.sellIn); -// assertEquals(2, conjuredItem.quality); //TODO this is the feature to get working + assertEquals(4, conjuredItem.quality); //TODO this is the feature to get working + // day two + gildedRose.updateQuality(); + assertEquals(1, conjuredItem.sellIn); + assertEquals(2, conjuredItem.quality); //TODO this is the feature to get working + // day three + gildedRose.updateQuality(); + assertEquals(0, conjuredItem.sellIn); + assertEquals(0, conjuredItem.quality); //TODO this is the feature to get working }