From e9f47d84b438acc3947a521cdc9444c403718e5d Mon Sep 17 00:00:00 2001 From: Bjorn Misseghers Date: Tue, 13 Apr 2021 08:56:01 +0200 Subject: [PATCH] Add increasing quality behavior and test --- .../quality/IncreasingQualityBehavior.java | 22 +++++++++ .../IncreasingQualityBehaviorTest.java | 45 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/behavior/quality/IncreasingQualityBehavior.java create mode 100644 Java/src/test/java/com/gildedrose/behavior/quality/IncreasingQualityBehaviorTest.java diff --git a/Java/src/main/java/com/gildedrose/behavior/quality/IncreasingQualityBehavior.java b/Java/src/main/java/com/gildedrose/behavior/quality/IncreasingQualityBehavior.java new file mode 100644 index 00000000..53d05d4a --- /dev/null +++ b/Java/src/main/java/com/gildedrose/behavior/quality/IncreasingQualityBehavior.java @@ -0,0 +1,22 @@ +package com.gildedrose.behavior.quality; + +import com.gildedrose.Item; + +public class IncreasingQualityBehavior implements QualityBehavior { + + public static final int MAX_QUALITY_LEVEL = 50; + public static final int MIN_QUALITY_LEVEL = 0; + + @Override + public void processQualityUpdate(Item item) { + increaseQuality(item); + } + + private void increaseQuality(Item item) { + item.quality = limitQuality(item.quality + 1); + } + + private int limitQuality(int newQuality) { + return Math.max(MIN_QUALITY_LEVEL, Math.min(MAX_QUALITY_LEVEL, newQuality)); + } +} diff --git a/Java/src/test/java/com/gildedrose/behavior/quality/IncreasingQualityBehaviorTest.java b/Java/src/test/java/com/gildedrose/behavior/quality/IncreasingQualityBehaviorTest.java new file mode 100644 index 00000000..8268e8bf --- /dev/null +++ b/Java/src/test/java/com/gildedrose/behavior/quality/IncreasingQualityBehaviorTest.java @@ -0,0 +1,45 @@ +package com.gildedrose.behavior.quality; + +import com.gildedrose.Item; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class IncreasingQualityBehaviorTest { + + private QualityBehavior qualityBehavior; + + @BeforeEach + public void setUp() throws Exception { + qualityBehavior = new IncreasingQualityBehavior(); + } + + @Test + void increaseQuality() { + Item item = getItem(10); + qualityBehavior.processQualityUpdate(item); + + assertEquals(11, item.quality); + } + + @Test + void increaseAboveTreshold() { + Item item = getItem(99); + qualityBehavior.processQualityUpdate(item); + + assertEquals(50, item.quality); + } + + @Test + void increaseQualityAtTreshold() { + Item item = getItem(50); + qualityBehavior.processQualityUpdate(item); + + assertEquals(50, item.quality); + } + + private Item getItem(int quality) { + return new Item("SomeItem", 0, quality); + } +}