From fa1749ec1721f2cbda11f7b7002537579690cc7c Mon Sep 17 00:00:00 2001 From: Sallah Kokaina Date: Fri, 1 Nov 2019 19:13:56 +0100 Subject: [PATCH] replace items by specific objects in tests --- Java/README.md | 13 +++- .../main/java/com/gildedrose/GildedRose.java | 76 +++++++++---------- .../main/java/com/gildedrose/item/Item.java | 18 +++++ .../java/com/gildedrose/item/Sulfuras.java | 6 ++ .../test/java/com/gildedrose/TestHelper.java | 14 +++- 5 files changed, 86 insertions(+), 41 deletions(-) diff --git a/Java/README.md b/Java/README.md index 00265922..725b6ac8 100644 --- a/Java/README.md +++ b/Java/README.md @@ -23,12 +23,21 @@ ## Technical Issues, with a balanced priority -[x] item names are hardcoded --[ ] items are identified by the name in a hardcoded way +-[x] items are identified by the name in a hardcoded way -[ ] nested logic +-[x] long method +-[ ] plain logic +-[ ] complex operations -[ ] Item properties are public +-[x] multiple access by index ## Refactoring actions -[x] extract hardcoded variables -[x] create polymorphism for items -[x] move item names as item members - +-[x] extract methods +-[x] extract boolean methods +-[x] encapsulate methods +-[ ] isolate specific logics +-[ ] move specific logic to backstage +-[x] replace items by specific objects in tests diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index b7e357d5..17c2dc7f 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -15,54 +15,54 @@ class GildedRose { public void updateQuality() { for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals(Brie.BRIE) - && !items[i].name.equals(Backstage.BACKSTAGE)) { - if (items[i].quality > 0) { - if (!items[i].name.equals(Sulfuras.SULFURAS)) { - items[i].quality = items[i].quality - 1; - } + + final Item item = items[i]; + + if (!item.name.equals(Brie.BRIE) && !item.name.equals(Backstage.BACKSTAGE)) { + if (item.quality > 0 && !item.name.equals(Sulfuras.SULFURAS)) { + decreaseQualityByOne(item); } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals(Backstage.BACKSTAGE)) { - 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; - } - } - } + } + else { + if (item.quality < 50) { + increaseQuality(item); } } - if (!items[i].name.equals(Sulfuras.SULFURAS)) { - items[i].sellIn = items[i].sellIn - 1; - } + updateSellIn(item); - if (items[i].sellIn < 0) { - if (!items[i].name.equals(Brie.BRIE)) { - if (!items[i].name.equals(Backstage.BACKSTAGE)) { - if (items[i].quality > 0) { - if (!items[i].name.equals(Sulfuras.SULFURAS)) { - items[i].quality = items[i].quality - 1; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; + if (item.sellIn < 0) { + if (item.name.equals(Brie.BRIE)) { + if (item.quality < 50) { + item.increaseQuality(); } } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + if (!item.name.equals(Backstage.BACKSTAGE)) { + if (!item.name.equals(Sulfuras.SULFURAS) && item.quality > 0) { + decreaseQualityByOne(item); + } + } else { + item.quality = 0; } } } } } + + private void decreaseQualityByOne(Item item) { + item.decreaseQuality(); + } + + private void increaseQuality(Item item) { + item.increaseQuality(); + if (item.name.equals(Backstage.BACKSTAGE)) { + item.increaseBackstageQuality(); + } + } + + private void updateSellIn(Item item) { + if (!item.name.equals(Sulfuras.SULFURAS)) { + item.sellIn = item.sellIn - 1; + } + } } \ No newline at end of file diff --git a/Java/src/main/java/com/gildedrose/item/Item.java b/Java/src/main/java/com/gildedrose/item/Item.java index 3f219306..704a3f20 100644 --- a/Java/src/main/java/com/gildedrose/item/Item.java +++ b/Java/src/main/java/com/gildedrose/item/Item.java @@ -18,4 +18,22 @@ public class Item { public String toString() { return this.name + ", " + this.sellIn + ", " + this.quality; } + + public void decreaseQuality() { + this.quality = this.quality - 1; + } + + public void increaseQuality() { + this.quality = this.quality + 1; + } + + public void increaseBackstageQuality() { + if (this.sellIn < 11 && this.quality < 50) { + this.increaseQuality(); + } + + if (this.sellIn < 6 && this.quality < 50) { + this.increaseQuality(); + } + } } diff --git a/Java/src/main/java/com/gildedrose/item/Sulfuras.java b/Java/src/main/java/com/gildedrose/item/Sulfuras.java index b065dcc4..da61c598 100644 --- a/Java/src/main/java/com/gildedrose/item/Sulfuras.java +++ b/Java/src/main/java/com/gildedrose/item/Sulfuras.java @@ -7,4 +7,10 @@ public class Sulfuras extends Item { public Sulfuras(int sellIn, int quality) { super(SULFURAS, sellIn, quality); } + + /*@Override + public void increaseQuality() { + + super.increaseQuality(); + }*/ } diff --git a/Java/src/test/java/com/gildedrose/TestHelper.java b/Java/src/test/java/com/gildedrose/TestHelper.java index 2ee649e3..0fa6a0fe 100644 --- a/Java/src/test/java/com/gildedrose/TestHelper.java +++ b/Java/src/test/java/com/gildedrose/TestHelper.java @@ -1,10 +1,22 @@ package com.gildedrose; +import com.gildedrose.item.Backstage; +import com.gildedrose.item.Brie; import com.gildedrose.item.Item; +import com.gildedrose.item.Sulfuras; public class TestHelper { static Item getItem(String name, Integer sellIn, Integer quality){ - return new Item(name, sellIn, quality); + switch (name){ + case "Backstage passes to a TAFKAL80ETC concert": + return new Backstage(sellIn, quality); + case "Aged Brie": + return new Brie(sellIn, quality); + case "Sulfuras, Hand of Ragnaros": + return new Sulfuras(sellIn, quality); + default: + return new Item(name, sellIn, quality); + } } }