From af9b68cb5ee37da165aaf8ed0da6f36a8e5f592f Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Sun, 30 Jun 2019 07:08:56 +0200 Subject: [PATCH] Conjured items rule --- .../main/java/com/gildedrose/GildedRose.java | 2 ++ .../gildedrose/rules/ConjuredQualityRule.java | 16 +++++++++++++ .../gildedrose/GildedRoseConjuredTest.java | 24 +++---------------- 3 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/rules/ConjuredQualityRule.java diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index c81f7617..8729787b 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -2,6 +2,7 @@ package com.gildedrose; import com.gildedrose.rules.AgedBrieQualityRule; import com.gildedrose.rules.BackstagePassQualityRule; +import com.gildedrose.rules.ConjuredQualityRule; import com.gildedrose.rules.DefaultQualityRule; import com.gildedrose.rules.QualityRule; import com.gildedrose.rules.Result; @@ -18,6 +19,7 @@ class GildedRose { new SulfurasQualityRule(), new AgedBrieQualityRule(), new BackstagePassQualityRule(), + new ConjuredQualityRule(), new DefaultQualityRule() ); diff --git a/Java/src/main/java/com/gildedrose/rules/ConjuredQualityRule.java b/Java/src/main/java/com/gildedrose/rules/ConjuredQualityRule.java new file mode 100644 index 00000000..74093fb2 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/rules/ConjuredQualityRule.java @@ -0,0 +1,16 @@ +package com.gildedrose.rules; + +import static java.lang.Integer.max; + +public class ConjuredQualityRule implements QualityRule { + + @Override + public boolean shouldApply(String itemName) { + return itemName != null && itemName.startsWith("Conjured "); + } + + @Override + public Result calculateQuality(int oldQuality, int newSellIn) { + return new Result(max(oldQuality - 2, 0), true); + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseConjuredTest.java b/Java/src/test/java/com/gildedrose/GildedRoseConjuredTest.java index 02462077..7ccf9dd2 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseConjuredTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseConjuredTest.java @@ -1,35 +1,17 @@ package com.gildedrose; import io.qameta.allure.Feature; -import lombok.val; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static com.gildedrose.TestHelper.assertItem; import static com.gildedrose.TestHelper.prepareApp; import static java.lang.Math.max; -import static org.apache.commons.lang3.RandomUtils.nextInt; class GildedRoseConjuredTest { - private static final String NAME = "Conjured Mana Cake"; - - @Feature("The Quality of an item is never more than 50") - @ParameterizedTest(name = "Initial quality: {arguments}") - @ValueSource(ints = {49, 50}) - void shouldNotIncreaseQualityAbove50(int initialQuality) { - // given - val initialSellIn = nextInt(3, 50); - GildedRose app = prepareApp(new Item(NAME, initialSellIn, initialQuality)); - - // when - app.updateQuality(); - - // then - final Item item = app.items[0]; - assertItem(item, "Aged Brie", initialSellIn - 1, 50); - } + private static final String ITEM_NAME = "Conjured Mana Cake"; @Feature("\"Conjured\" items degrade in Quality twice as fast as normal items") @Feature("The Quality of an item is never negative") @@ -37,7 +19,7 @@ class GildedRoseConjuredTest { @ValueSource(ints = {0, 1, 2, 3, 49, 50}) void shouldDegradeInQualityTwiceFast(int initialQuality) { // given - GildedRose app = prepareApp(new Item("Aged Brie", 1, initialQuality)); + GildedRose app = prepareApp(new Item(ITEM_NAME, 1, initialQuality)); // when app.updateQuality(); @@ -45,6 +27,6 @@ class GildedRoseConjuredTest { // then final Item item = app.items[0]; final int expectedQuality = max(initialQuality - 2, 0); - assertItem(item, "Aged Brie", 0, expectedQuality); + assertItem(item, ITEM_NAME, 0, expectedQuality); } }