diff --git a/src/test/kotlin/com/gildedrose/GildedRoseTest.kt b/src/test/kotlin/com/gildedrose/GildedRoseTest.kt index 8e31a976..8ec4967e 100644 --- a/src/test/kotlin/com/gildedrose/GildedRoseTest.kt +++ b/src/test/kotlin/com/gildedrose/GildedRoseTest.kt @@ -6,8 +6,19 @@ import java.util.* class GildedRoseTest { + private val store = arrayOf( + Item("+5 Dexterity Vest", 10, 20), // + Item("Aged Brie", 2, 0), // + Item("Elixir of the Mongoose", 5, 7), // + Item("Sulfuras, Hand of Ragnaros", 0, 80), // + Item("Sulfuras, Hand of Ragnaros", -1, 80), + Item("Backstage passes to a TAFKAL80ETC concert", 15, 20), + Item("Backstage passes to a TAFKAL80ETC concert", 10, 49), + Item("Backstage passes to a TAFKAL80ETC concert", 5, 49) + ) + @Test - fun givenRandomItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() { + fun givenUnknownItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() { val days = generateRandomNumber() val initialSellIn = generateRandomNumber() val item = Item(generateRandomName(), initialSellIn, 0) @@ -15,7 +26,24 @@ class GildedRoseTest { app.advanceTimeBy(days) - assertThat(item.sellIn).isEqualTo(initialSellIn-days) + assertThat(item.sellIn).isEqualTo(initialSellIn - days) + } + + @Test + fun givenKnownItemExcepSulfuras_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() { + val days = generateRandomNumber() + val initialSellIn = generateRandomNumber() + var item = pickRandomItem().copy(sellIn = initialSellIn) + + while (item.name == "Sulfuras, Hand of Ragnaros") { + item = pickRandomItem().copy(sellIn = initialSellIn) + } + + val app = GildedRose(arrayOf(item)) + + app.advanceTimeBy(days) + + assertThat(item.sellIn).isEqualTo(initialSellIn - days) } @Test @@ -35,4 +63,6 @@ class GildedRoseTest { private fun generateRandomName() = UUID.randomUUID().toString() private fun generateRandomNumber() = (0 until 9999).shuffled().last() + + private fun pickRandomItem() = store[generateRandomNumber().coerceIn(store.indices)] }