From 72aa0fef8fb1d9297055043e075098718c5e24ce Mon Sep 17 00:00:00 2001 From: Shanmugam Thillaigovindarajan Date: Mon, 28 Mar 2022 11:54:36 +0530 Subject: [PATCH] Added By Shanmugam on Code Cleanup of GildedRose Mail Id :Shanmugamcse@gmail.com --- .../main/java/com/gildedrose/Constants.java | 8 +++ .../main/java/com/gildedrose/GildedRose.java | 53 +-------------- .../main/java/com/gildedrose/ItemFactory.java | 18 ++++++ .../main/java/com/gildedrose/ItemWrapper.java | 11 ++++ .../java/com/gildedrose/updateBackstage.java | 30 +++++++++ .../main/java/com/gildedrose/updateBrie.java | 20 ++++++ .../java/com/gildedrose/updateConjured.java | 18 ++++++ .../java/com/gildedrose/updateLegendary.java | 12 ++++ .../main/java/com/gildedrose/updateOther.java | 18 ++++++ .../java/com/gildedrose/GildedRoseTest.java | 64 ++++++++++++++++++- 10 files changed, 199 insertions(+), 53 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/Constants.java create mode 100644 Java/src/main/java/com/gildedrose/ItemFactory.java create mode 100644 Java/src/main/java/com/gildedrose/ItemWrapper.java create mode 100644 Java/src/main/java/com/gildedrose/updateBackstage.java create mode 100644 Java/src/main/java/com/gildedrose/updateBrie.java create mode 100644 Java/src/main/java/com/gildedrose/updateConjured.java create mode 100644 Java/src/main/java/com/gildedrose/updateLegendary.java create mode 100644 Java/src/main/java/com/gildedrose/updateOther.java diff --git a/Java/src/main/java/com/gildedrose/Constants.java b/Java/src/main/java/com/gildedrose/Constants.java new file mode 100644 index 00000000..b8a46728 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/Constants.java @@ -0,0 +1,8 @@ +package com.gildedrose; + +public class Constants { + public static final String AgedBrie = "Aged Brie"; + public static final String Backstage = "Backstage passes to a TAFKAL80ETC concert"; + public static final String Sulfuras = "Sulfuras, Hand of Ragnaros"; + public static final String Conjured = "Conjured"; +} diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e6feb751..2758229d 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -8,55 +8,8 @@ class GildedRose { } public void updateQuality() { - for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } - } - } - - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].sellIn = items[i].sellIn - 1; - } - - if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } + for (Item item : items) { + ItemFactory.create(item).update(); } } -} \ No newline at end of file +} diff --git a/Java/src/main/java/com/gildedrose/ItemFactory.java b/Java/src/main/java/com/gildedrose/ItemFactory.java new file mode 100644 index 00000000..03748b06 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ItemFactory.java @@ -0,0 +1,18 @@ +package com.gildedrose; + +public class ItemFactory { + public static ItemWrapper create(Item item) { + switch (item.name) { + case Constants.AgedBrie: + return new updateBrie(item); + case Constants.Backstage: + return new updateBackstage(item); + case Constants.Sulfuras: + return new updateLegendary(item); + case Constants.Conjured: + return new updateConjured(item); + default: + return new updateOther(item); + } + } +} diff --git a/Java/src/main/java/com/gildedrose/ItemWrapper.java b/Java/src/main/java/com/gildedrose/ItemWrapper.java new file mode 100644 index 00000000..e9ea427f --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ItemWrapper.java @@ -0,0 +1,11 @@ +package com.gildedrose; + +public abstract class ItemWrapper { + protected final Item item; + + public ItemWrapper(Item item) { + this.item = item; + } + + public abstract void update(); +} diff --git a/Java/src/main/java/com/gildedrose/updateBackstage.java b/Java/src/main/java/com/gildedrose/updateBackstage.java new file mode 100644 index 00000000..525f495c --- /dev/null +++ b/Java/src/main/java/com/gildedrose/updateBackstage.java @@ -0,0 +1,30 @@ +package com.gildedrose; + +public class updateBackstage extends ItemWrapper { + public updateBackstage(Item item) { + super(item); + } + + @Override + public void update() { + if (item.quality < 50) { + item.quality = item.quality + 1; + + if (item.sellIn < 11) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + } + + if (item.sellIn < 6) { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + } + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0) { + item.quality = 0; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/updateBrie.java b/Java/src/main/java/com/gildedrose/updateBrie.java new file mode 100644 index 00000000..d87eb5b4 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/updateBrie.java @@ -0,0 +1,20 @@ +package com.gildedrose; + +public class updateBrie extends ItemWrapper { + public updateBrie(Item item) { + super(item); + + } + + @Override + public void update() { + if (item.quality < 50) { + item.quality = item.quality + 1; + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0 && item.quality < 50) { + item.quality = item.quality + 1; + } + } +} + diff --git a/Java/src/main/java/com/gildedrose/updateConjured.java b/Java/src/main/java/com/gildedrose/updateConjured.java new file mode 100644 index 00000000..e8fe7359 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/updateConjured.java @@ -0,0 +1,18 @@ +package com.gildedrose; + +public class updateConjured extends ItemWrapper { + public updateConjured(Item item) { + super(item); + } + + @Override + public void update() { + if (item.quality > 1) { + item.quality = item.quality - 2; + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0 && item.quality > 1) { + item.quality = item.quality - 2; + } + } +} diff --git a/Java/src/main/java/com/gildedrose/updateLegendary.java b/Java/src/main/java/com/gildedrose/updateLegendary.java new file mode 100644 index 00000000..9004c0d6 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/updateLegendary.java @@ -0,0 +1,12 @@ +package com.gildedrose; + +public class updateLegendary extends ItemWrapper { + public updateLegendary(Item item) { + super(item); + } + + @Override + public void update() { + + } +} diff --git a/Java/src/main/java/com/gildedrose/updateOther.java b/Java/src/main/java/com/gildedrose/updateOther.java new file mode 100644 index 00000000..9e0ec6d4 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/updateOther.java @@ -0,0 +1,18 @@ +package com.gildedrose; + +public class updateOther extends ItemWrapper { + public updateOther(Item item) { + super(item); + } + + @Override + public void update() { + if (item.quality > 0) { + item.quality = item.quality - 1; + } + item.sellIn = item.sellIn - 1; + if (item.sellIn < 0 && item.quality > 0) { + item.quality = item.quality - 1; + } + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..9a742366 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,5 +1,6 @@ package com.gildedrose; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -7,11 +8,68 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class GildedRoseTest { @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; + @DisplayName("Test Aged Brie functionality") + void testAgedBrie() { + Item[] items = new Item[] { new Item("Aged Brie", 10, 80) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals("fixme", app.items[0].name); + assertEquals(Constants.AgedBrie, app.items[0].name); + assertEquals(9, app.items[0].sellIn); + assertEquals(80, app.items[0].quality); } + @Test + @DisplayName("Test BackStage functionality") + void testBackStageSellIn() { + Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 20, 50) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(Constants.Backstage, app.items[0].name); + assertEquals(19, app.items[0].sellIn); + assertEquals(50, app.items[0].quality); + } + + @Test + @DisplayName("Test BackStage Quality functionality") + void testBackStageQuality() { + Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 10, 45) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(Constants.Backstage, app.items[0].name); + assertEquals(9, app.items[0].sellIn); + assertEquals(47, app.items[0].quality); + } + + @Test + @DisplayName("Test BackStage Quality with least functionality") + void testBackStageQualitywithLeast() { + Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(Constants.Backstage, app.items[0].name); + assertEquals(4, app.items[0].sellIn); + assertEquals(50, app.items[0].quality); + } + + @Test + @DisplayName("Test Other functionality") + void testOther() { + Item[] items = new Item[] { new Item("Shan", 10, 20) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals("Shan", app.items[0].name); + assertEquals(9, app.items[0].sellIn); + assertEquals(19, app.items[0].quality); + } + + @Test + @DisplayName("Test Conjured functionality") + void testConjured() { + Item[] items = new Item[] { new Item("Conjured", 10, 10) }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(Constants.Conjured, app.items[0].name); + assertEquals(9, app.items[0].sellIn); + assertEquals(8, app.items[0].quality); + } }