Add unit test for sellIn covering known items except sulfuras

This commit is contained in:
Ovi Trif 2018-10-05 21:12:55 +02:00
parent fa253f047d
commit 9eedb327ae

View File

@ -6,8 +6,19 @@ import java.util.*
class GildedRoseTest { 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 @Test
fun givenRandomItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() { fun givenUnknownItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() {
val days = generateRandomNumber() val days = generateRandomNumber()
val initialSellIn = generateRandomNumber() val initialSellIn = generateRandomNumber()
val item = Item(generateRandomName(), initialSellIn, 0) val item = Item(generateRandomName(), initialSellIn, 0)
@ -15,7 +26,24 @@ class GildedRoseTest {
app.advanceTimeBy(days) 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 @Test
@ -35,4 +63,6 @@ class GildedRoseTest {
private fun generateRandomName() = UUID.randomUUID().toString() private fun generateRandomName() = UUID.randomUUID().toString()
private fun generateRandomNumber() = (0 until 9999).shuffled().last() private fun generateRandomNumber() = (0 until 9999).shuffled().last()
private fun pickRandomItem() = store[generateRandomNumber().coerceIn(store.indices)]
} }