From 31d2cb5a7b5bd2cd93d84c7c76b6646dd9a5155e Mon Sep 17 00:00:00 2001 From: rverlind Date: Tue, 5 Dec 2023 21:46:48 +0100 Subject: [PATCH] Add initial tests according to spec for standard items --- .../java/com/gildedrose/GildedRoseTest.java | 63 +++++++++++++++++-- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..1387f5c5 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -3,15 +3,70 @@ package com.gildedrose; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; class GildedRoseTest { @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; - GildedRose app = new GildedRose(items); + void updateQuality_standardItem_normalStep() { + GildedRose app = createApp(createItem("standard", 10, 15)); app.updateQuality(); - assertEquals("fixme", app.items[0].name); + assertEquals(9, app.items[0].sellIn); + assertEquals(14, app.items[0].quality); } + @Test + void updateQuality_standardItem_sellInTo0() { + GildedRose app = createApp(createItem("standard", 1, 15)); + app.updateQuality(); + assertEquals(0, app.items[0].sellIn); + assertEquals(14, app.items[0].quality); + } + + @Test + void updateQuality_standardItem_minQualityO() { + GildedRose app = createApp(createItem("standard", 1, 0)); + app.updateQuality(); + assertEquals(0, app.items[0].sellIn); + assertEquals(0, app.items[0].quality); + } + + @Test + void updateQuality_standardItem_doubleDecayAfterLastSellDate() { + GildedRose app = createApp(createItem("standard", 0, 10)); + app.updateQuality(); + assertEquals(-1, app.items[0].sellIn); + assertEquals(8, app.items[0].quality); + } + + @Test + void updateQuality_standardItem_maxQuality50() { + GildedRose app = createApp(createItem("standard", 10, 60)); + + app.updateQuality(); + assertEquals(49, app.items[0].quality); + } + + @Test + void updateQuality_legendaryItem() { + fail("NYI"); + } + + @Test + void updateQuality_agingItem() { + fail("NYI"); + } + + @Test + void updateQuality_conjuredItem() { + fail("NYI"); + } + + private GildedRose createApp(Item[] items) { + return new GildedRose(items); + } + + private Item[] createItem(String name, int sellIn, int quality) { + return new Item[] { new Item(name, sellIn, quality) }; + } }