diff --git a/Java/.editorconfig b/Java/.editorconfig index 2f1b8410..59e0c85a 100644 --- a/Java/.editorconfig +++ b/Java/.editorconfig @@ -1,6 +1,6 @@ [*] charset = utf-8 -indent_size = 4 +indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 21c59b4a..56373e1a 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -4,105 +4,70 @@ import java.util.Arrays; import java.util.List; class GildedRose { - public static final String AGED_BRIE = "Aged Brie"; - public static final String SULFURAS = "Sulfuras, Hand of Ragnaros"; - public static final String BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert"; + public static final String AGED_BRIE = "Aged Brie"; + public static final String SULFURAS = "Sulfuras, Hand of Ragnaros"; + public static final String BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert"; - final List items; + final List items; - public GildedRose(Item[] items) { - this.items = Arrays.asList(items); + public GildedRose(Item[] items) { + this.items = Arrays.asList(items); + } + + public void updateQuality() { + items.forEach(GildedRose::handleDay); + } + + private static void handleDay(Item item) { + switch (item.name) { + case AGED_BRIE: + handleAgedBrie(item); + return; + case SULFURAS: + handleSulfuras(item); + return; + case BACKSTAGE_PASSES: + handleBackstagePasses(item); + return; + default: + handleGenericItem(item); } + } - public void updateQuality() { - items.forEach(GildedRose::handleDay); + private static void handleGenericItem(Item item) { + if (item.quality == 0) { + return; } - - private static void handleDay(Item item) { - switch (item.name) { - case AGED_BRIE: - handleAgedBrie(item); - return; - case SULFURAS: - handleSulfuras(item); - return; - case BACKSTAGE_PASSES: - handleBackstagePasses(item); - return; - } - if (!item.name.equals(AGED_BRIE) - && !item.name.equals(BACKSTAGE_PASSES)) { - if (item.quality > 0) { - if (!item.name.equals(SULFURAS)) { - item.quality = item.quality - 1; - } - } - } else { - if (item.quality < 50) { - item.quality = item.quality + 1; - - if (item.name.equals(BACKSTAGE_PASSES)) { - 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; - } - } - } - } - } - - if (!item.name.equals(SULFURAS)) { - item.sellIn = item.sellIn - 1; - } - - if (item.sellIn < 0) { - if (!item.name.equals(AGED_BRIE)) { - if (!item.name.equals(BACKSTAGE_PASSES)) { - if (item.quality > 0) { - if (!item.name.equals(SULFURAS)) { - item.quality = item.quality - 1; - } - } - } else { - item.quality = item.quality - item.quality; - } - } else { - if (item.quality < 50) { - item.quality = item.quality + 1; - } - } - } + item.sellIn -= 1; + if (item.sellIn <= 0) { + item.quality -= 1; } + item.quality -= 1; + } - private static void handleBackstagePasses(Item item) { - // todo: make it so these items can't be initialized with over 50 - if (item.quality == 50) { - return; - } - if (item.sellIn == 0) { - item.quality = 0; - } else if (item.sellIn <= 5) { - item.quality += 3; - } else if (item.sellIn <= 10) { - item.quality += 2; - } - item.sellIn -= 1; + private static void handleBackstagePasses(Item item) { + // todo: make it so these items can't be initialized with over 50 + if (item.quality == 50) { + return; } - - private static void handleSulfuras(Item item) { - + if (item.sellIn == 0) { + item.quality = 0; + } else if (item.sellIn <= 5) { + item.quality += 3; + } else if (item.sellIn <= 10) { + item.quality += 2; } + item.sellIn -= 1; + } - private static void handleAgedBrie(Item item) { - if (item.quality != 50) { - item.quality += 1; - } - item.sellIn -= 1; + private static void handleSulfuras(Item item) { + + } + + private static void handleAgedBrie(Item item) { + if (item.quality != 50) { + item.quality += 1; } + item.sellIn -= 1; + } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index ff85e615..975bf66a 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -5,230 +5,231 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class GildedRoseTest { - private static final int SULFURAS_QUALITY = 80; - @Test - public void agedBrieIncreasesInQualityByOneEachDay() { - Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 2, 0) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 1); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 2); - } + private static final int SULFURAS_QUALITY = 80; - @Test - public void sulfurasSellInDateNeverChanges() { - int sellIn = 10; - Item[] items = new Item[] { new Item(GildedRose.SULFURAS, sellIn, SULFURAS_QUALITY) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, sellIn); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, sellIn); - } + @Test + public void agedBrieIncreasesInQualityByOneEachDay() { + Item[] items = new Item[]{new Item(GildedRose.AGED_BRIE, 2, 0)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 1); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 2); + } - @Test - public void sulfurasValueNeverChanges() { - Item[] items = new Item[] { new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); - app.updateQuality(); - assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); - } + @Test + public void sulfurasSellInDateNeverChanges() { + int sellIn = 10; + Item[] items = new Item[]{new Item(GildedRose.SULFURAS, sellIn, SULFURAS_QUALITY)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, sellIn); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, sellIn); + } - @Test - public void sulfurasValueIsAlways80() { - Item[] items = new Item[] { new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); - } + @Test + public void sulfurasValueNeverChanges() { + Item[] items = new Item[]{new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); + app.updateQuality(); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); + } - @Test - public void backstagePassesQualityIncreasesByTwoWhenThereAreTenDaysOrLessBeforeTheConcert() { - int quality = 0; - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 10, quality) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 2); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 4); - } + @Test + public void sulfurasValueIsAlways80() { + Item[] items = new Item[]{new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); + } - @Test - public void backstagePassesQualityIncreasesByThreeWhenThereAreFiveDaysOrLessBeforeTheConcert() { - int quality = 0; - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, quality) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 3); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 6); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 9); - } + @Test + public void backstagePassesQualityIncreasesByTwoWhenThereAreTenDaysOrLessBeforeTheConcert() { + int quality = 0; + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 10, quality)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 2); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 4); + } - @Test - public void backstagePassesQualityDropsToZeroAfterTheConcert() { - int quality = 10; - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 1, quality) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 13); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 0); - } + @Test + public void backstagePassesQualityIncreasesByThreeWhenThereAreFiveDaysOrLessBeforeTheConcert() { + int quality = 0; + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 5, quality)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 3); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 6); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 9); + } - @Test - public void qualityIsNeverNegative() { - // todo: should add a similar case for conjured - int quality = 1; - Item[] items = new Item[] { new Item("generic item", 5, quality) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 0); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 0); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 0); - } + @Test + public void backstagePassesQualityDropsToZeroAfterTheConcert() { + int quality = 10; + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 1, quality)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 13); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 0); + } - @Test - public void qualityIsNeverOverFiftyForAgedBrie() { - Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 5, 50) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - } + @Test + public void qualityIsNeverNegativeForGenericItems() { + // todo: should add a similar case for conjured + int quality = 1; + Item[] items = new Item[]{new Item("generic item", 5, quality)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 0); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 0); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 0); + } - @Test - public void qualityIsNeverOverFiftyForBackstagePasses() { - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, 50) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 50); - } + @Test + public void qualityIsNeverOverFiftyForAgedBrie() { + Item[] items = new Item[]{new Item(GildedRose.AGED_BRIE, 5, 50)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + } - @Test - public void qualityDecreasesByOneEachDayForGenericItems() { - Item[] items = new Item[] { new Item("generic item", 5, 5) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 4); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 3); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 2); - } + @Test + public void qualityIsNeverOverFiftyForBackstagePasses() { + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 5, 50)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 50); + } - @Test - public void qualityDecreasesByTwoEachDayForGenericItemsAfterSellInDate() { - Item[] items = new Item[] { new Item("generic item", 1, 6) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 5); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 3); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 1); - } + @Test + public void qualityDecreasesByOneEachDayForGenericItems() { + Item[] items = new Item[]{new Item("generic item", 5, 5)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 4); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 3); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 2); + } - @Test - public void sellInDateDecreasesByOneEachDayForAgedBrie() { - Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 5, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 4); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 3); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 2); - } + @Test + public void qualityDecreasesByTwoEachDayForGenericItemsAfterSellInDate() { + Item[] items = new Item[]{new Item("generic item", 1, 6)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 5); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 3); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 1); + } - @Test - public void sellInDateDecreasesByOneEachDayForBackstagePasses() { - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 4); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 3); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 2); - } + @Test + public void sellInDateDecreasesByOneEachDayForAgedBrie() { + Item[] items = new Item[]{new Item(GildedRose.AGED_BRIE, 5, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 4); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 3); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 2); + } - @Test - public void sellInDateDecreasesByOneEachDayForGenericItems() { - Item[] items = new Item[] { new Item("generic item", 5, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 4); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 3); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 2); - } + @Test + public void sellInDateDecreasesByOneEachDayForBackstagePasses() { + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 5, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 4); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 3); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 2); + } - @Test - public void sellInDateCanBeNegativeForGenericItems() { - Item[] items = new Item[] { new Item("generic item", 1, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 0); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -1); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -2); - } + @Test + public void sellInDateDecreasesByOneEachDayForGenericItems() { + Item[] items = new Item[]{new Item("generic item", 5, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 4); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 3); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 2); + } - @Test - public void sellInDateCanBeNegativeForAgedBrie() { - Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 1, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 0); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -1); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -2); - } + @Test + public void sellInDateCanBeNegativeForGenericItems() { + Item[] items = new Item[]{new Item("generic item", 1, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 0); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -1); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -2); + } - @Test - public void sellInDateCanBeNegativeForBackStagePasses() { - Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 1, 1) }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, 0); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -1); - app.updateQuality(); - assertEquals(app.items.get(0).sellIn, -2); - } + @Test + public void sellInDateCanBeNegativeForAgedBrie() { + Item[] items = new Item[]{new Item(GildedRose.AGED_BRIE, 1, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 0); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -1); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -2); + } - @Test - public void itUpdatesAllItemsPassedIn() { - Item[] items = new Item[] { - new Item("generic item 1", 5, 5), - new Item("generic item 2", 5, 10) - }; - GildedRose app = new GildedRose(items); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 4); - assertEquals(app.items.get(1).quality, 9); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 3); - assertEquals(app.items.get(1).quality, 8); - app.updateQuality(); - assertEquals(app.items.get(0).quality, 2); - assertEquals(app.items.get(1).quality, 7); - } + @Test + public void sellInDateCanBeNegativeForBackStagePasses() { + Item[] items = new Item[]{new Item(GildedRose.BACKSTAGE_PASSES, 1, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, 0); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -1); + app.updateQuality(); + assertEquals(app.items.get(0).sellIn, -2); + } + + @Test + public void itUpdatesAllItemsPassedIn() { + Item[] items = new Item[]{ + new Item("generic item 1", 5, 5), + new Item("generic item 2", 5, 10) + }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 4); + assertEquals(app.items.get(1).quality, 9); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 3); + assertEquals(app.items.get(1).quality, 8); + app.updateQuality(); + assertEquals(app.items.get(0).quality, 2); + assertEquals(app.items.get(1).quality, 7); + } }