mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-18 07:51:29 +00:00
Backstage passes are different.
This commit is contained in:
parent
ce81b8bb03
commit
383056ce50
@ -5,43 +5,34 @@ import org.junit.jupiter.api.Test
|
|||||||
|
|
||||||
internal class GildedRoseTest {
|
internal class GildedRoseTest {
|
||||||
|
|
||||||
val items = arrayOf(
|
private val gildedRose = GildedRose(
|
||||||
Item("+5 Dexterity Vest", 10, 20), //
|
arrayOf(
|
||||||
Item("Aged Brie", 2, 0), //
|
Item("+5 Dexterity Vest", 10, 20), //
|
||||||
Item("Elixir of the Mongoose", 5, 7), //
|
Item("Aged Brie", 2, 0), //
|
||||||
Item("Sulfuras, Hand of Ragnaros", 0, 80), //
|
Item("Elixir of the Mongoose", 5, 7), //
|
||||||
Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
Item("Sulfuras, Hand of Ragnaros", 0, 80), //
|
||||||
Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||||
Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||||
Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
||||||
// this conjured item does not work properly yet
|
Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
||||||
Item("Conjured Mana Cake", 3, 6)
|
// this conjured item does not work properly yet
|
||||||
|
Item("Conjured Mana Cake", 3, 6)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
|
||||||
fun foo() {
|
|
||||||
val items = arrayOf<Item>(Item("foo", 0, 0))
|
|
||||||
val app = GildedRose(items)
|
|
||||||
app.updateQuality()
|
|
||||||
assertEquals("foo", app.items[0].name)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun allItemsHaveASellInValue() {
|
fun allItemsHaveASellInValue() {
|
||||||
items.forEach {
|
gildedRose.items.forEach {
|
||||||
assertNotNull(it.sellIn)
|
assertNotNull(it.sellIn)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val gildedRose = GildedRose(items)
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun qualityIsNeverNegative() {
|
fun qualityIsNeverNegative() {
|
||||||
(items.map { it.sellIn }.maxOrNull()!! downTo -3).forEach {
|
(gildedRose.items.map { it.sellIn }.maxOrNull()!! downTo -3).forEach {
|
||||||
gildedRose.updateQuality()
|
gildedRose.updateQuality()
|
||||||
items.forEach {
|
gildedRose.items.forEach {
|
||||||
assertTrue(it.quality >= 0, "The quality of an item is never negative")
|
assertTrue(it.quality >= 0, "The quality of an item is never negative")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -49,10 +40,10 @@ internal class GildedRoseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun qualityIsNeverMoreThanFifty() {
|
fun qualityIsNeverMoreThanFifty() {
|
||||||
(items.map { it.sellIn }.maxOrNull()!! downTo -3).forEach {
|
(gildedRose.items.map { it.sellIn }.maxOrNull()!! downTo -3).forEach {
|
||||||
gildedRose.updateQuality()
|
gildedRose.updateQuality()
|
||||||
assertFalse(
|
assertFalse(
|
||||||
items
|
gildedRose.items
|
||||||
.filterNot { it.name.startsWith("Sulfuras") }
|
.filterNot { it.name.startsWith("Sulfuras") }
|
||||||
.map { it.quality }
|
.map { it.quality }
|
||||||
.maxOrNull()!!
|
.maxOrNull()!!
|
||||||
@ -98,18 +89,20 @@ internal class GildedRoseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun agedBrieIncreasesInQuality() {
|
fun agedBrieIncreasesInQuality() {
|
||||||
items.first { it.name == "Aged Brie" }.also { agedBrie ->
|
gildedRose.items.first { it.name == "Aged Brie" }.also { agedBrie ->
|
||||||
while (agedBrie.quality < 50) {
|
while (agedBrie.quality < 50) {
|
||||||
val quality = agedBrie.quality
|
val quality = agedBrie.quality
|
||||||
gildedRose.updateQuality()
|
gildedRose.updateQuality()
|
||||||
assertTrue(agedBrie.quality > quality)
|
assertTrue(agedBrie.quality > quality)
|
||||||
}
|
}
|
||||||
|
gildedRose.updateQuality()
|
||||||
|
assertTrue(agedBrie.quality == 50)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun sulfurasNeverHasToBeSoldOrDecreasesInQuality() {
|
fun sulfurasNeverHasToBeSoldOrDecreasesInQuality() {
|
||||||
val sulfuras = items.first { it.name.startsWith("Sulfuras") }
|
val sulfuras = gildedRose.items.first { it.name.startsWith("Sulfuras") }
|
||||||
val quality = sulfuras.quality
|
val quality = sulfuras.quality
|
||||||
val sellIn = sulfuras.sellIn
|
val sellIn = sulfuras.sellIn
|
||||||
gildedRose.updateQuality()
|
gildedRose.updateQuality()
|
||||||
@ -117,6 +110,28 @@ internal class GildedRoseTest {
|
|||||||
assertEquals(sellIn, sulfuras.sellIn)
|
assertEquals(sellIn, sulfuras.sellIn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun backstagePassesAreDifferent() {
|
||||||
|
val backstage = gildedRose.items.first { it.name.startsWith("Backstage") }
|
||||||
|
while (backstage.sellIn > 10) {
|
||||||
|
val quality = backstage.quality
|
||||||
|
gildedRose.updateQuality()
|
||||||
|
assertEquals(quality + 1, backstage.quality)
|
||||||
|
}
|
||||||
|
while (backstage.sellIn > 5) {
|
||||||
|
val quality = backstage.quality
|
||||||
|
gildedRose.updateQuality()
|
||||||
|
assertEquals(quality + 2, backstage.quality)
|
||||||
|
}
|
||||||
|
while (backstage.sellIn > 0) {
|
||||||
|
val quality = backstage.quality
|
||||||
|
gildedRose.updateQuality()
|
||||||
|
assertEquals(quality + 3, backstage.quality)
|
||||||
|
}
|
||||||
|
gildedRose.updateQuality()
|
||||||
|
assertEquals(-1, backstage.sellIn)
|
||||||
|
assertEquals(0, backstage.quality)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user