From a1cbfa17e2145ce07d2952d43d6b7b5aea8df95c Mon Sep 17 00:00:00 2001 From: Richard Xu Date: Thu, 22 Dec 2022 12:00:07 -0500 Subject: [PATCH] Refactor to use List --- .../main/java/com/gildedrose/GildedRose.java | 78 +++++++++-------- .../java/com/gildedrose/GildedRoseTest.java | 84 ++++++++++--------- 2 files changed, 84 insertions(+), 78 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 338a8d80..2b053bb3 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -1,65 +1,69 @@ package com.gildedrose; +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"; - - Item[] items; + final List items; public GildedRose(Item[] items) { - this.items = items; + this.items = Arrays.asList(items); } public void updateQuality() { - for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals(AGED_BRIE) - && !items[i].name.equals(BACKSTAGE_PASSES)) { - if (items[i].quality > 0) { - if (!items[i].name.equals(SULFURAS)) { - items[i].quality = items[i].quality - 1; - } + items.forEach(GildedRose::handleDay); + } + + private static void handleDay(Item item) { + 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 (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; + } + } else { + if (item.quality < 50) { + item.quality = item.quality + 1; - if (items[i].name.equals(BACKSTAGE_PASSES)) { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } + if (item.name.equals(BACKSTAGE_PASSES)) { + if (item.sellIn < 11) { + if (item.quality < 50) { + item.quality = item.quality + 1; } + } - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } + if (item.sellIn < 6) { + if (item.quality < 50) { + item.quality = item.quality + 1; } } } } + } - if (!items[i].name.equals(SULFURAS)) { - items[i].sellIn = items[i].sellIn - 1; - } + if (!item.name.equals(SULFURAS)) { + item.sellIn = item.sellIn - 1; + } - if (items[i].sellIn < 0) { - if (!items[i].name.equals(AGED_BRIE)) { - if (!items[i].name.equals(BACKSTAGE_PASSES)) { - if (items[i].quality > 0) { - if (!items[i].name.equals(SULFURAS)) { - items[i].quality = items[i].quality - 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 { - items[i].quality = items[i].quality - items[i].quality; } } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } + item.quality = item.quality - item.quality; + } + } else { + if (item.quality < 50) { + 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 76d924b3..a2127286 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -11,9 +11,9 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 2, 0) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 1); + assertEquals(app.items.get(0).quality, 1); app.updateQuality(); - assertEquals(app.items[0].quality, 2); + assertEquals(app.items.get(0).quality, 2); } @Test @@ -22,9 +22,9 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.SULFURAS, sellIn, SULFURAS_QUALITY) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].sellIn, sellIn); + assertEquals(app.items.get(0).sellIn, sellIn); app.updateQuality(); - assertEquals(app.items[0].sellIn, sellIn); + assertEquals(app.items.get(0).sellIn, sellIn); } @Test @@ -32,9 +32,9 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, SULFURAS_QUALITY); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); app.updateQuality(); - assertEquals(app.items[0].quality, SULFURAS_QUALITY); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); } @Test @@ -42,7 +42,7 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.SULFURAS, 10, SULFURAS_QUALITY) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, SULFURAS_QUALITY); + assertEquals(app.items.get(0).quality, SULFURAS_QUALITY); } @Test @@ -51,9 +51,9 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 10, quality) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 2); + assertEquals(app.items.get(0).quality, 2); app.updateQuality(); - assertEquals(app.items[0].quality, 4); + assertEquals(app.items.get(0).quality, 4); } @Test @@ -62,11 +62,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, quality) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 3); + assertEquals(app.items.get(0).quality, 3); app.updateQuality(); - assertEquals(app.items[0].quality, 6); + assertEquals(app.items.get(0).quality, 6); app.updateQuality(); - assertEquals(app.items[0].quality, 9); + assertEquals(app.items.get(0).quality, 9); } @Test @@ -75,9 +75,9 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 1, quality) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 13); + assertEquals(app.items.get(0).quality, 13); app.updateQuality(); - assertEquals(app.items[0].quality, 0); + assertEquals(app.items.get(0).quality, 0); } @Test @@ -87,11 +87,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item("generic item", 5, quality) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 0); + assertEquals(app.items.get(0).quality, 0); app.updateQuality(); - assertEquals(app.items[0].quality, 0); + assertEquals(app.items.get(0).quality, 0); app.updateQuality(); - assertEquals(app.items[0].quality, 0); + assertEquals(app.items.get(0).quality, 0); } @Test @@ -99,11 +99,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 5, 50) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); } @Test @@ -111,11 +111,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, 50) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); app.updateQuality(); - assertEquals(app.items[0].quality, 50); + assertEquals(app.items.get(0).quality, 50); } @Test @@ -123,11 +123,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item("generic item", 5, 5) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 4); + assertEquals(app.items.get(0).quality, 4); app.updateQuality(); - assertEquals(app.items[0].quality, 3); + assertEquals(app.items.get(0).quality, 3); app.updateQuality(); - assertEquals(app.items[0].quality, 2); + assertEquals(app.items.get(0).quality, 2); } @Test @@ -135,11 +135,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item("generic item", 1, 6) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].quality, 5); + assertEquals(app.items.get(0).quality, 5); app.updateQuality(); - assertEquals(app.items[0].quality, 3); + assertEquals(app.items.get(0).quality, 3); app.updateQuality(); - assertEquals(app.items[0].quality, 1); + assertEquals(app.items.get(0).quality, 1); } @Test @@ -147,11 +147,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.AGED_BRIE, 5, 1) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].sellIn, 4); + assertEquals(app.items.get(0).sellIn, 4); app.updateQuality(); - assertEquals(app.items[0].sellIn, 3); + assertEquals(app.items.get(0).sellIn, 3); app.updateQuality(); - assertEquals(app.items[0].sellIn, 2); + assertEquals(app.items.get(0).sellIn, 2); } @Test @@ -159,11 +159,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item(GildedRose.BACKSTAGE_PASSES, 5, 1) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].sellIn, 4); + assertEquals(app.items.get(0).sellIn, 4); app.updateQuality(); - assertEquals(app.items[0].sellIn, 3); + assertEquals(app.items.get(0).sellIn, 3); app.updateQuality(); - assertEquals(app.items[0].sellIn, 2); + assertEquals(app.items.get(0).sellIn, 2); } @Test @@ -171,11 +171,11 @@ class GildedRoseTest { Item[] items = new Item[] { new Item("generic item", 5, 1) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].sellIn, 4); + assertEquals(app.items.get(0).sellIn, 4); app.updateQuality(); - assertEquals(app.items[0].sellIn, 3); + assertEquals(app.items.get(0).sellIn, 3); app.updateQuality(); - assertEquals(app.items[0].sellIn, 2); + assertEquals(app.items.get(0).sellIn, 2); } @Test @@ -183,10 +183,12 @@ class GildedRoseTest { Item[] items = new Item[] { new Item("generic item", 1, 1) }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(app.items[0].sellIn, 0); + assertEquals(app.items.get(0).sellIn, 0); app.updateQuality(); - assertEquals(app.items[0].sellIn, -1); + assertEquals(app.items.get(0).sellIn, -1); app.updateQuality(); - assertEquals(app.items[0].sellIn, -2); + assertEquals(app.items.get(0).sellIn, -2); } + + // todo: add test that multiple items update at once (so can pass in multiple items) }