From 620d48221b6a145db8ad3cd1cb56c40b63b5c54f Mon Sep 17 00:00:00 2001 From: Bjorn Misseghers Date: Tue, 13 Apr 2021 10:55:38 +0200 Subject: [PATCH] Add immutable sellIn behavior SellIn does not change. Ever. --- .../sellin/ImmutableSellInBehavior.java | 15 +++++++ .../sellin/ImmutableSellInBehaviorTest.java | 45 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/behavior/sellin/ImmutableSellInBehavior.java create mode 100644 Java/src/test/java/com/gildedrose/behavior/sellin/ImmutableSellInBehaviorTest.java diff --git a/Java/src/main/java/com/gildedrose/behavior/sellin/ImmutableSellInBehavior.java b/Java/src/main/java/com/gildedrose/behavior/sellin/ImmutableSellInBehavior.java new file mode 100644 index 00000000..be43bde8 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/behavior/sellin/ImmutableSellInBehavior.java @@ -0,0 +1,15 @@ +package com.gildedrose.behavior.sellin; + +import com.gildedrose.Item; + +public class ImmutableSellInBehavior implements SellInBehavior { + + public static ImmutableSellInBehavior newInstance() { + return new ImmutableSellInBehavior(); + } + + @Override + public void processSellInUpdate(Item item) { + + } +} diff --git a/Java/src/test/java/com/gildedrose/behavior/sellin/ImmutableSellInBehaviorTest.java b/Java/src/test/java/com/gildedrose/behavior/sellin/ImmutableSellInBehaviorTest.java new file mode 100644 index 00000000..c6b3b44f --- /dev/null +++ b/Java/src/test/java/com/gildedrose/behavior/sellin/ImmutableSellInBehaviorTest.java @@ -0,0 +1,45 @@ +package com.gildedrose.behavior.sellin; + +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 ImmutableSellInBehaviorTest { + + private SellInBehavior sellInBehavior; + + @BeforeEach + public void setUp() throws Exception { + sellInBehavior = new ImmutableSellInBehavior(); + } + + @Test + void immutableSellIn() { + Item item = getItem(10); + sellInBehavior.processSellInUpdate(item); + + assertEquals(10, item.sellIn); + } + + @Test + void immutableSellInZero() { + Item item = getItem(0); + sellInBehavior.processSellInUpdate(item); + + assertEquals(0, item.sellIn); + } + + @Test + void immutableNegativeSellIn() { + Item item = getItem(-1); + sellInBehavior.processSellInUpdate(item); + + assertEquals(-1, item.sellIn); + } + + private Item getItem(int sellIn) { + return new Item("SomeItem", sellIn, 0); + } +}