diff --git a/src/main/java/com/gildedrose/main/GildedRose.java b/src/main/java/com/gildedrose/main/GildedRose.java index b04c1a10..553748e1 100644 --- a/src/main/java/com/gildedrose/main/GildedRose.java +++ b/src/main/java/com/gildedrose/main/GildedRose.java @@ -1,22 +1,16 @@ package com.gildedrose.main; -import java.util.List; - import static com.gildedrose.item_helpers.ItemFactory.getItemType; -import static java.util.Collections.singletonList; +import static java.util.Arrays.stream; public class GildedRose { - private final List items; + Item[] items; - public GildedRose(List items) { - this.items = items; - } + public GildedRose(Item[] items) { + this.items = items; + } - public GildedRose(Item items) { - this.items = singletonList(items); - } - - public void updateQuality() { - items.forEach(item -> getItemType(item).updateQuality()); - } + public void updateQuality() { + stream(items).forEach(item -> getItemType(item).updateQuality()); + } } diff --git a/src/test/java/com/gildedrose/helper/TestHelper.java b/src/test/java/com/gildedrose/helper/TestHelper.java index fcea4d71..996768b9 100644 --- a/src/test/java/com/gildedrose/helper/TestHelper.java +++ b/src/test/java/com/gildedrose/helper/TestHelper.java @@ -9,30 +9,36 @@ import static org.junit.jupiter.api.Assertions.*; public class TestHelper { - public static void testItem(Item item, int daysToPass, int expectedSellIn, int expectedQuality) { - // given - GildedRose app = new GildedRose(item); - // when - for (int i = 0; i < daysToPass; i++) { - app.updateQuality(); - } - //then - assertEquals(expectedSellIn, item.sellIn); - assertEquals(expectedQuality, item.quality); + public static void testItem(Item item, int daysToPass, int expectedSellIn, int expectedQuality) { + Item[] items = new Item[1]; + items[0] = item; + // given + GildedRose app = new GildedRose(items); + // when + for (int i = 0; i < daysToPass; i++) { + app.updateQuality(); } + //then + assertEquals(expectedSellIn, item.sellIn); + assertEquals(expectedQuality, item.quality); + } - public static void testItemException(Item item) { - GildedRose gildedRose = new GildedRose(item); - Exception exception = assertThrows(IllegalArgumentException.class, gildedRose::updateQuality); - String actualMessage = exception.getMessage(); - assertTrue(actualMessage.contains(QUALITY_ERROR_MESSAGE)); - } + public static void testItemException(Item item) { + Item[] items = new Item[1]; + items[0] = item; + GildedRose gildedRose = new GildedRose(items); + Exception exception = assertThrows(IllegalArgumentException.class, gildedRose::updateQuality); + String actualMessage = exception.getMessage(); + assertTrue(actualMessage.contains(QUALITY_ERROR_MESSAGE)); + } - public static void testItemQualityAboveLimitException(Item item) { - GildedRose gildedRose = new GildedRose(item); - Exception exception = assertThrows(IllegalArgumentException.class, gildedRose::updateQuality); - String actualMessage = exception.getMessage(); - assertTrue(actualMessage.contains(OUT_OF_BOUND_QUALITY_MESSAGE)); - } + public static void testItemQualityAboveLimitException(Item item) { + Item[] items = new Item[1]; + items[0] = item; + GildedRose gildedRose = new GildedRose(items); + Exception exception = assertThrows(IllegalArgumentException.class, gildedRose::updateQuality); + String actualMessage = exception.getMessage(); + assertTrue(actualMessage.contains(OUT_OF_BOUND_QUALITY_MESSAGE)); + } } diff --git a/src/test/java/com/gildedrose/items/LegendaryItemTest.java b/src/test/java/com/gildedrose/items/LegendaryItemTest.java index c2e70351..b352fc43 100644 --- a/src/test/java/com/gildedrose/items/LegendaryItemTest.java +++ b/src/test/java/com/gildedrose/items/LegendaryItemTest.java @@ -35,7 +35,7 @@ class LegendaryItemTest { @Test @Order(3) void testFakeLegendaryItemExceptionFail() { - GildedRose gildedRose = new GildedRose(fakeLegendaryItem); + GildedRose gildedRose = new GildedRose(new Item[]{fakeLegendaryItem}); Exception exception = assertThrows(IllegalArgumentException.class, gildedRose::updateQuality); String actualMessage = exception.getMessage(); assertTrue(actualMessage.contains(NOT_LEGENDARY_ITEM_ERROR_MESSAGE)); diff --git a/src/test/java/com/gildedrose/main/GildedRoseTest.java b/src/test/java/com/gildedrose/main/GildedRoseTest.java new file mode 100644 index 00000000..21dde5ad --- /dev/null +++ b/src/test/java/com/gildedrose/main/GildedRoseTest.java @@ -0,0 +1,17 @@ +package com.gildedrose.main; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class GildedRoseTest { + + @Test + void foo() { + Item[] items = new Item[]{new Item("foo", 0, 0)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals("foo", app.items[0].name); + } + +} diff --git a/src/test/java/com/gildedrose/main/TexttestFixture.java b/src/test/java/com/gildedrose/main/TexttestFixture.java new file mode 100644 index 00000000..c5abf3b4 --- /dev/null +++ b/src/test/java/com/gildedrose/main/TexttestFixture.java @@ -0,0 +1,37 @@ +package com.gildedrose.main; + +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(items); + + 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(); + } + } + +} diff --git a/src/test/java/com/gildedrose/multiple_items/MultipleItemsTest.java b/src/test/java/com/gildedrose/multiple_items/MultipleItemsTest.java index f94bdd33..ad08ff23 100644 --- a/src/test/java/com/gildedrose/multiple_items/MultipleItemsTest.java +++ b/src/test/java/com/gildedrose/multiple_items/MultipleItemsTest.java @@ -8,108 +8,105 @@ import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; -import java.util.List; - -import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.assertEquals; @TestMethodOrder(OrderAnnotation.class) class MultipleItemsTest { - public static final String BACKSTAGE_PASS = "Backstage passes to a TAFKAL80ETC concert"; - public static final String LEGENDARY_ITEM_NAME = "Sulfuras, Hand of Ragnaros"; + public static final String BACKSTAGE_PASS = "Backstage passes to a TAFKAL80ETC concert"; + public static final String LEGENDARY_ITEM_NAME = "Sulfuras, Hand of Ragnaros"; - public static final Item normalItem1 = new Item("+5 Dexterity Vest", 10, 20); - public static final Item agedBrieItem = new Item("Aged Brie", 2, 0); - public static final Item normalItem2 = new Item("Elixir of the Mongoose", 5, 7); - public static final Item legendaryItem1 = new Item(LEGENDARY_ITEM_NAME, 0, 80); - public static final Item legendaryItem2 = new Item(LEGENDARY_ITEM_NAME, -1, 80); - public static final Item backStagePassItem1 = new Item(BACKSTAGE_PASS, 15, 20); - public static final Item backStagePassItem2 = new Item(BACKSTAGE_PASS, 10, 49); - public static final Item backStagePassItem3 = new Item(BACKSTAGE_PASS, 5, 49); - public static final Item conjuredItem = new Item("Conjured Mana Cake", 3, 6); + public static final Item normalItem1 = new Item("+5 Dexterity Vest", 10, 20); + public static final Item agedBrieItem = new Item("Aged Brie", 2, 0); + public static final Item normalItem2 = new Item("Elixir of the Mongoose", 5, 7); + public static final Item legendaryItem1 = new Item(LEGENDARY_ITEM_NAME, 0, 80); + public static final Item legendaryItem2 = new Item(LEGENDARY_ITEM_NAME, -1, 80); + public static final Item backStagePassItem1 = new Item(BACKSTAGE_PASS, 15, 20); + public static final Item backStagePassItem2 = new Item(BACKSTAGE_PASS, 10, 49); + public static final Item backStagePassItem3 = new Item(BACKSTAGE_PASS, 5, 49); + public static final Item conjuredItem = new Item("Conjured Mana Cake", 3, 6); - public static List getMultipleItems() { - return asList(normalItem1, agedBrieItem, normalItem2, - legendaryItem1, legendaryItem2, - backStagePassItem1, backStagePassItem2, backStagePassItem3, - conjuredItem); + public static Item[] getMultipleItems() { + return new Item[]{normalItem1, agedBrieItem, normalItem2, + legendaryItem1, legendaryItem2, + backStagePassItem1, backStagePassItem2, backStagePassItem3, + conjuredItem}; + } + + @BeforeAll + static void updateItemsQualityFor20Days() { + Item[] items = getMultipleItems(); + GildedRose gildedRose = new GildedRose(items); + int days = 20; + for (int i = 0; i < days; i++) { + gildedRose.updateQuality(); + for (Item item : items) { + System.out.println(item); + } } + } - @BeforeAll - static void updateItemsQualityFor20Days() { - List items = getMultipleItems(); - GildedRose gildedRose = new GildedRose(items); - int days = 20; - for (int i = 0; i < days; i++) { - gildedRose.updateQuality(); - for (Item item : items) { - System.out.println(item); - } - } - } + @Test + @Order(1) + void checkNormalItem1() { + assertEquals(-10, normalItem1.sellIn); + assertEquals(0, normalItem1.quality); + } - @Test - @Order(1) - void checkNormalItem1() { - assertEquals(-10, normalItem1.sellIn); - assertEquals(0, normalItem1.quality); - } + @Test + @Order(2) + void checkAgedBrie() { + assertEquals(-18, agedBrieItem.sellIn); + assertEquals(38, agedBrieItem.quality); + } - @Test - @Order(2) - void checkAgedBrie() { - assertEquals(-18, agedBrieItem.sellIn); - assertEquals(38, agedBrieItem.quality); - } + @Test + @Order(3) + void checkNormalItem2() { + assertEquals(-15, normalItem2.sellIn); + assertEquals(0, normalItem2.quality); + } - @Test - @Order(3) - void checkNormalItem2() { - assertEquals(-15, normalItem2.sellIn); - assertEquals(0, normalItem2.quality); - } + @Test + @Order(4) + void checkLegendaryItem1() { + assertEquals(-20, legendaryItem1.sellIn); + assertEquals(80, legendaryItem1.quality); + } - @Test - @Order(4) - void checkLegendaryItem1() { - assertEquals(-20, legendaryItem1.sellIn); - assertEquals(80, legendaryItem1.quality); - } + @Test + @Order(5) + void checkLegendaryItem2() { + assertEquals(-21, legendaryItem2.sellIn); + assertEquals(80, legendaryItem2.quality); + } - @Test - @Order(5) - void checkLegendaryItem2() { - assertEquals(-21, legendaryItem2.sellIn); - assertEquals(80, legendaryItem2.quality); - } + @Test + @Order(6) + void checkBackStagePass1() { + assertEquals(-5, backStagePassItem1.sellIn); + assertEquals(0, backStagePassItem1.quality); + } - @Test - @Order(6) - void checkBackStagePass1() { - assertEquals(-5, backStagePassItem1.sellIn); - assertEquals(0, backStagePassItem1.quality); - } + @Test + @Order(7) + void checkBackStagePass2() { + assertEquals(-10, backStagePassItem2.sellIn); + assertEquals(0, backStagePassItem2.quality); + } - @Test - @Order(7) - void checkBackStagePass2() { - assertEquals(-10, backStagePassItem2.sellIn); - assertEquals(0, backStagePassItem2.quality); - } + @Test + @Order(8) + void checkBackStagePass3() { + assertEquals(-15, backStagePassItem3.sellIn); + assertEquals(0, backStagePassItem3.quality); + } - @Test - @Order(8) - void checkBackStagePass3() { - assertEquals(-15, backStagePassItem3.sellIn); - assertEquals(0, backStagePassItem3.quality); - } - - @Test - @Order(9) - void checkConjuredItem() { - assertEquals(-17, conjuredItem.sellIn); - assertEquals(0, conjuredItem.quality); - } + @Test + @Order(9) + void checkConjuredItem() { + assertEquals(-17, conjuredItem.sellIn); + assertEquals(0, conjuredItem.quality); + } }