diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 9385b980..7c0f0560 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -3,79 +3,66 @@ package com.gildedrose; class GildedRose { Item[] items; - String itemName; - int itemQuality; - int itemSellIn; - public GildedRose(Item[] items) { this.items = items; } public void updateQuality() { for (int i = 0; i < items.length; i++) { - itemName = items[i].name; - itemQuality = items[i].quality; - itemSellIn = items[i].sellIn; + String itemName = items[i].name; + int itemQuality = items[i].quality; + int itemSellIn = items[i].sellIn; - if (!itemIsAgedBrie(itemName) - && !itemIsBackstagePasses(itemName)) { - if (itemQuality > 0) { - if (!itemIsSulfuras(itemName)) { - decreaseByOne(itemQuality); - } - } - } else { - if (itemQuality < 50) { - itemQuality = itemQuality + 1; - - if (itemIsBackstagePasses(itemName)) { - if (itemSellIn < 11) { - if (itemQuality < 50) { - increaseByOne(itemQuality); - } - } - - if (itemSellIn < 6) { - if (itemQuality < 50) { - increaseByOne(itemQuality); - } - } - } - } - } - - if (!itemIsSulfuras(itemName)) { - decreaseByOne(itemSellIn); - } + adjustQualityNotation(itemName, itemQuality, itemSellIn); + lowerSellInNotation(itemName, itemSellIn); if (itemSellIn < 0) { - if (!itemIsAgedBrie(itemName)) { - if (!itemIsBackstagePasses(itemName)) { - if (itemQuality > 0) { - if (!itemIsSulfuras(itemName)) { - decreaseByOne(itemQuality); - } - } - } else { - decreaseByOne(itemQuality); - } - } else { - if (itemQuality < 50) { + if (isDecreasableItem(itemName, itemQuality)) { + decreaseByOne(itemQuality); + } else if (itemQuality < 50) { increaseByOne(itemQuality); - } } } } } - public void increaseByOne (int itemValue) { - itemValue++; + public void adjustQualityNotation(String itemName, int itemQuality, int itemSellIn) { + if (isDecreasableItem(itemName, itemQuality)) { + decreaseByOne(itemQuality); + } else if (qualityLowerThanFifty(itemQuality)) { + increaseByOne(itemQuality); + backstagePassesExtraQualityCheck(itemName, itemQuality, itemSellIn); + } } - public void decreaseByOne (int itemValue) { - itemValue--; + public void backstagePassesExtraQualityCheck(String itemName, int itemQuality, int itemSellIn) { + if (itemIsBackstagePasses(itemName) && qualityLowerThanFifty(itemQuality)) { + if (itemSellIn < 11) { + increaseByOne(itemQuality); + } + + if (itemSellIn < 6) { + increaseByOne(itemQuality); + } + } } + public void lowerSellInNotation(String itemName, int itemSellIn) { + if (!itemIsSulfuras(itemName)) { + decreaseByOne(itemSellIn); + } + } + + public int increaseByOne (int incomingValue) { + return incomingValue += 1; + } + + public int decreaseByOne (int incomingValue) { + return incomingValue -= 1; + } + + + public boolean itemIsSulfuras(String itemName) { return ProjectConstants.SULFURAS.equals(itemName) ? true : false; } @@ -87,4 +74,19 @@ class GildedRose { public boolean itemIsAgedBrie(String itemName) { return ProjectConstants.AGED_BRIE.equals(itemName) ? true : false; } + + public boolean qualityHigherThanZero(int itemQuality) { + return itemQuality > 0; + } + + public boolean qualityLowerThanFifty(int itemQuality) { + return itemQuality < 50; + } + + public boolean isDecreasableItem(String itemName, int itemQuality) { + return qualityHigherThanZero(itemQuality) && + !itemIsAgedBrie(itemName) && + !itemIsBackstagePasses(itemName) && + !itemIsSulfuras(itemName); + } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 86b3cb97..b91eed55 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -12,37 +12,61 @@ public class GildedRoseTest { GildedRose app; + Item[] items; + @BeforeAll public void init() { - Item[] items = new Item[] { new Item(ProjectConstants.SULFURAS, 0, 0) }; + items = new Item[] { new Item(ProjectConstants.SULFURAS, 0, 0), + new Item(ProjectConstants.ELIXIR, 2, 54) }; app = new GildedRose(items); } @Test - public void increaseByOne() { - int initial = 2; - app.increaseByOne(initial); - assertEquals("3", initial); + public void increaseByOneTest() { + int result = app.increaseByOne(2); + assertEquals(3, result); } @Test - public void decreaseByOne() { - int initial = 2; - app.decreaseByOne(initial); - assertEquals("1", initial); + public void decreaseByOneTest() { + int result = app.decreaseByOne(2); + assertEquals(1, result); } @Test - public void itemIsSulfuras() { + public void itemIsSulfurasTest() { String itemName = app.items[0].name; boolean result = app.itemIsSulfuras(itemName); assertTrue(result); } @Test - public void ItemIsAgedBrieFalse() { + public void ItemIsAgedBrieFalseTest() { String itemName = app.items[0].name; boolean result = app.itemIsAgedBrie(itemName); assertFalse(result); } + + @Test + public void qualityComparisonTest() { + int firstItemQuality = app.items[0].quality; + int secondItemQuality = app.items[1].quality; + + assertFalse(app.qualityHigherThanZero(firstItemQuality)); + assertTrue(app.qualityHigherThanZero(secondItemQuality)); + + assertTrue(app.qualityLowerThanFifty(firstItemQuality)); + assertFalse(app.qualityLowerThanFifty(secondItemQuality)); + } + + @Test + public void isDecreaseItemTest() { + String firstItemName = app.items[0].name; + int firstItemQuality = app.items[0].quality; + String secondItemName = app.items[1].name; + int secondItemQuality = app.items[1].quality; + + assertFalse(app.isDecreasableItem(firstItemName, firstItemQuality)); + assertTrue(app.isDecreasableItem(secondItemName, secondItemQuality)); + } }