From e04bd795181ec61a235eabe685464d8471492fed Mon Sep 17 00:00:00 2001 From: Trobax Date: Wed, 23 Nov 2022 18:12:12 +0100 Subject: [PATCH] create Conjured class create conjured class implement StorageItem methods move declaration to each class create test cases for conjured methods --- Java/pom.xml | 9 +++++ .../main/java/com/gildedrose/AgeddBrie.java | 2 ++ .../java/com/gildedrose/BackstagePasses.java | 2 ++ .../main/java/com/gildedrose/Conjured.java | 14 ++++++++ .../main/java/com/gildedrose/StorageItem.java | 12 +++---- .../main/java/com/gildedrose/Sulfuras.java | 2 ++ .../java/com/gildedrose/GildedRoseTest.java | 36 +++++++++++++++++-- 7 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/Conjured.java diff --git a/Java/pom.xml b/Java/pom.xml index 8e64e049..bd07e975 100644 --- a/Java/pom.xml +++ b/Java/pom.xml @@ -53,6 +53,15 @@ maven-surefire-plugin ${maven.maven-surefire-plugin.version} + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + --enable-preview + + diff --git a/Java/src/main/java/com/gildedrose/AgeddBrie.java b/Java/src/main/java/com/gildedrose/AgeddBrie.java index 1a649110..0c516c5d 100644 --- a/Java/src/main/java/com/gildedrose/AgeddBrie.java +++ b/Java/src/main/java/com/gildedrose/AgeddBrie.java @@ -1,6 +1,8 @@ package com.gildedrose; public class AgeddBrie extends StorageItem { + public static final String NAME = "Aged Brie"; + public AgeddBrie(Item item) { super(item); } diff --git a/Java/src/main/java/com/gildedrose/BackstagePasses.java b/Java/src/main/java/com/gildedrose/BackstagePasses.java index ddc86c61..37cc5702 100644 --- a/Java/src/main/java/com/gildedrose/BackstagePasses.java +++ b/Java/src/main/java/com/gildedrose/BackstagePasses.java @@ -1,6 +1,8 @@ package com.gildedrose; public class BackstagePasses extends StorageItem { + public static final String NAME = "Backstage passes to a TAFKAL80ETC concert"; + public BackstagePasses(Item item) { super(item); } diff --git a/Java/src/main/java/com/gildedrose/Conjured.java b/Java/src/main/java/com/gildedrose/Conjured.java new file mode 100644 index 00000000..65a44187 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/Conjured.java @@ -0,0 +1,14 @@ +package com.gildedrose; + +public class Conjured extends StorageItem { + + public static final String NAME = "Conjured"; + public Conjured(Item item) { + super(item); + } + + @Override + protected void decreaseQuality() { + item.quality = Math.max(0,item.quality-2); + } +} diff --git a/Java/src/main/java/com/gildedrose/StorageItem.java b/Java/src/main/java/com/gildedrose/StorageItem.java index 90053764..0fc8a8c7 100644 --- a/Java/src/main/java/com/gildedrose/StorageItem.java +++ b/Java/src/main/java/com/gildedrose/StorageItem.java @@ -1,21 +1,21 @@ package com.gildedrose; public class StorageItem { - public static final String AGED_BRIE = "Aged Brie"; - public static final String BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert"; - public static final String SULFURAS = "Sulfuras, Hand of Ragnaros"; protected Item item; public static StorageItem createItem(Item item) { - if (item.name.equals(AGED_BRIE)) { + if (item.name.equals(AgeddBrie.NAME)) { return new AgeddBrie(item); } - if (item.name.equals(BACKSTAGE_PASSES)) { + if (item.name.equals(BackstagePasses.NAME)) { return new BackstagePasses(item); } - if (item.name.equals(SULFURAS)) { + if (item.name.equals(Sulfuras.NAME)) { return new Sulfuras(item); } + if (item.name.equals(Conjured.NAME)) { + return new Conjured(item); + } return new StorageItem(item); } diff --git a/Java/src/main/java/com/gildedrose/Sulfuras.java b/Java/src/main/java/com/gildedrose/Sulfuras.java index f8934fe7..4c3ff221 100644 --- a/Java/src/main/java/com/gildedrose/Sulfuras.java +++ b/Java/src/main/java/com/gildedrose/Sulfuras.java @@ -1,6 +1,8 @@ package com.gildedrose; public class Sulfuras extends StorageItem { + public static final String NAME = "Sulfuras, Hand of Ragnaros"; + public Sulfuras(Item item) { super(item); } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index d085a1ba..13905496 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -124,21 +124,51 @@ class GildedRoseTest { @Test void quality_of_an_item_is_never_greater_than_50() { - Item item = new Item("Aged Brie", 5, 50); + Item item = new Item("Aged Brie", 50, 100); GildedRose app = new GildedRose(new Item[]{item}); app.updateStorage(); - assertThat(item.quality).isEqualTo(50); + assertThat(item.quality).isEqualTo(100); } @Test void legendary_items_never_have_to_be_sold() { - Item item = new Item("Sulfuras, Hand of Ragnaros", -1, 80); + Item item = new Item("Sulfuras, Hand of Ragnaros", -1, 100); GildedRose app = new GildedRose(new Item[]{item}); app.updateStorage(); assertThat(item.sellIn).isEqualTo(-1); } + + @Test + void conjured_items_degrade_in_quality_twice_as_fast() { + Item item = new Item("Conjured", 10, 10); + GildedRose app = new GildedRose(new Item[]{item}); + + app.updateStorage(); + + assertThat(item.quality).isEqualTo(8); + assertThat(item.sellIn).isEqualTo(9); + } + + @Test + void conjured_item_degrade_in_quality_by_four_if_expired(){ + Item item = new Item("Conjured", 0, 10); + GildedRose app = new GildedRose(new Item[]{item}); + + app.updateStorage(); + + assertThat(item.quality).isEqualTo(6); + } + @Test + void conjured_item_quality_can_never_be_negative(){ + Item item = new Item("Conjured", 10, 1); + GildedRose app = new GildedRose(new Item[]{item}); + + app.updateStorage(); + + assertThat(item.quality).isEqualTo(0); + } }