Add unit tests for sellIn value

This commit is contained in:
Ovi Trif 2018-10-05 21:00:20 +02:00
parent b0614b6bdf
commit fa253f047d

View File

@ -1,19 +1,38 @@
package com.gildedrose package com.gildedrose
import org.junit.Assert.* import org.assertj.core.api.Java6Assertions.assertThat
import org.junit.Test import org.junit.Test
import java.util.*
class GildedRoseTest { class GildedRoseTest {
@Test fun foo() { @Test
val items = arrayOf<Item>(Item("foo", 0, 0)) fun givenRandomItem_afterRandomNumberOfDays_shouldDecreaseSellInByNumberOfDays() {
val app = GildedRose(items) val days = generateRandomNumber()
app.updateQuality() val initialSellIn = generateRandomNumber()
assertEquals("fixme", app.items[0].name) val item = Item(generateRandomName(), initialSellIn, 0)
val app = GildedRose(arrayOf(item))
app.advanceTimeBy(days)
assertThat(item.sellIn).isEqualTo(initialSellIn-days)
} }
@Test
fun givenSulfuras_afterRandomNumberOfDays_shouldHaveSameSellIn() {
val days = generateRandomNumber()
val initialSellIn = generateRandomNumber()
val item = Item("Sulfuras, Hand of Ragnaros", initialSellIn, 0)
val app = GildedRose(arrayOf(item))
app.advanceTimeBy(days)
assertThat(item.sellIn).isEqualTo(initialSellIn)
}
private fun GildedRose.advanceTimeBy(days: Int) = repeat(days, { this.updateQuality() })
private fun generateRandomName() = UUID.randomUUID().toString()
private fun generateRandomNumber() = (0 until 9999).shuffled().last()
} }