From ace42fda3a154c3dd71d54fd0b1458bedac02225 Mon Sep 17 00:00:00 2001 From: Mahdi Malaki Date: Mon, 7 Aug 2023 21:13:41 -0400 Subject: [PATCH] Refactor and add more tests --- .../main/java/com/gildedrose/GildedRose.java | 16 ++-- .../java/com/gildedrose/GildedRoseTest.java | 90 +++++++++++++++++-- .../java/com/gildedrose/TexttestFixture.java | 37 -------- 3 files changed, 91 insertions(+), 52 deletions(-) delete mode 100644 Java/src/test/java/com/gildedrose/TexttestFixture.java diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index a68c272c..35471970 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -7,30 +7,30 @@ public class GildedRose { public static void updateQuality(Item[] items) { for (Item item : items) { if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { - item.sellIn--; + item.sellIn--; // Decrease sellIn for all items except Sulfuras if (item.name.equals("Aged Brie")) { increaseQuality(item); if (item.sellIn < 0) { - increaseQuality(item); + increaseQuality(item); // Quality increases twice after sellIn passes } } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) { increaseQuality(item); if (item.sellIn < 11) { - increaseQuality(item); + increaseQuality(item); // Quality increases by 2 when sellIn is 10 or less } if (item.sellIn < 6) { - increaseQuality(item); + increaseQuality(item); // Quality increases by 3 when sellIn is 5 or less } if (item.sellIn < 0) { - item.quality = MIN_QUALITY; + item.quality = MIN_QUALITY; // Quality drops to 0 after the concert } } else if (item.name.equals("Conjured Mana Cake")) { - decreaseQuality(item, 2); + decreaseQuality(item, 2); // Quality decreases twice as fast for conjured items } else { - decreaseQuality(item); + decreaseQuality(item); // Normal items decrease in quality if (item.sellIn < 0) { - decreaseQuality(item); + decreaseQuality(item); // Quality decreases twice after sellIn passes } } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 570d02ca..f04d1cdb 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -1,17 +1,93 @@ package com.gildedrose; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; -class GildedRoseTest { +public class GildedRoseTest { - @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; - GildedRose app = new GildedRose(); - app.updateQuality(items); - assertEquals("fixme", items[0].name); + private Item[] items; + + @BeforeEach + public void setUp() { + items = new Item[]{ + new Item("+5 Dexterity Vest", 10, 20), + new Item("Aged Brie", 2, 0), + new Item("Elixir of the Mongoose", 5, 7), + new Item("Sulfuras, Hand of Ragnaros", 0, 80), + new Item("Sulfuras, Hand of Ragnaros", -1, 80), + new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), + new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), + new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), + new Item("Conjured Mana Cake", 3, 6) + }; } + @Test + public void testDay1() { + GildedRose.updateQuality(items); + + // Assertions for Day 1 + assertEquals(9, items[0].sellIn); + assertEquals(19, items[0].quality); + + assertEquals(1, items[1].sellIn); + assertEquals(1, items[1].quality); + + assertEquals(4, items[2].sellIn); + assertEquals(6, items[2].quality); + + assertEquals(0, items[3].sellIn); + assertEquals(80, items[3].quality); + + assertEquals(-1, items[4].sellIn); + assertEquals(80, items[4].quality); + + assertEquals(14, items[5].sellIn); + assertEquals(21, items[5].quality); + + assertEquals(9, items[6].sellIn); + assertEquals(50, items[6].quality); + + assertEquals(4, items[7].sellIn); + assertEquals(50, items[7].quality); + + assertEquals(2, items[8].sellIn); + assertEquals(4, items[8].quality); + } + + @Test + public void testDay2() { + GildedRose.updateQuality(items); + GildedRose.updateQuality(items); + + // Assertions for Day 2 + assertEquals(8, items[0].sellIn); + assertEquals(18, items[0].quality); + + assertEquals(0, items[1].sellIn); + assertEquals(2, items[1].quality); + + assertEquals(3, items[2].sellIn); + assertEquals(5, items[2].quality); + + assertEquals(0, items[3].sellIn); + assertEquals(80, items[3].quality); + + assertEquals(-1, items[4].sellIn); + assertEquals(80, items[4].quality); + + assertEquals(13, items[5].sellIn); + assertEquals(22, items[5].quality); + + assertEquals(8, items[6].sellIn); + assertEquals(50, items[6].quality); + + assertEquals(3, items[7].sellIn); + assertEquals(50, items[7].quality); + + assertEquals(1, items[8].sellIn); + assertEquals(2, items[8].quality); + } } diff --git a/Java/src/test/java/com/gildedrose/TexttestFixture.java b/Java/src/test/java/com/gildedrose/TexttestFixture.java deleted file mode 100644 index fc65d0a5..00000000 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gildedrose; - -public class TexttestFixture { - public static void main(String[] args) { - System.out.println("OMGHAI!"); - - Item[] items = new Item[] { - new Item("+5 Dexterity Vest", 10, 20), // - new Item("Aged Brie", 2, 0), // - new Item("Elixir of the Mongoose", 5, 7), // - new Item("Sulfuras, Hand of Ragnaros", 0, 80), // - new Item("Sulfuras, Hand of Ragnaros", -1, 80), - new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), - new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), - new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49), - // this conjured item does not work properly yet - new Item("Conjured Mana Cake", 3, 6) }; - - GildedRose app = new GildedRose(); - - int days = 2; - if (args.length > 0) { - days = Integer.parseInt(args[0]) + 1; - } - - for (int i = 0; i < days; i++) { - System.out.println("-------- day " + i + " --------"); - System.out.println("name, sellIn, quality"); - for (Item item : items) { - System.out.println(item); - } - System.out.println(); - app.updateQuality(items); - } - } - -}