Replace texttest fixture with own acceptance test

This commit is contained in:
Ovi Trif 2018-10-05 13:57:10 +02:00
parent 538bbce81c
commit 7f08d805bb
3 changed files with 63 additions and 36 deletions

View File

@ -1,36 +0,0 @@
package com.gildedrose
fun main(args: Array<String>) {
println("OMGHAI!")
val items = 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),
// this conjured item does not work properly yet
Item("Conjured Mana Cake", 3, 6))
val app = GildedRose(items)
var days = 2
if (args.size > 0) {
days = Integer.parseInt(args[0]) + 1
}
for (i in 0..days - 1) {
println("-------- day $i --------")
println("name, sellIn, quality")
for (item in items) {
println(item)
}
println()
app.updateQuality()
}
}

View File

@ -0,0 +1,50 @@
package com.gildedrose.acceptance
import com.gildedrose.GildedRose
import com.gildedrose.Item
import com.gildedrose.core.TestToFileHandler
import org.junit.Assert.assertEquals
import org.junit.Test
class ThirtyDaysAcceptanceTests {
private val testToFileHandler = TestToFileHandler("ThirtyDays")
@Test
fun withInitialTextFixture_whenRunForThirtyDays_itShouldHaveSameOutputAsLegacyCode() {
val initialTextFixture = 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),
// this conjured item does not work properly yet
Item("Conjured Mana Cake", 3, 6))
val output = runWithItemsForDays(initialTextFixture, 30)
assertEquals(output, testToFileHandler.read())
}
private fun runWithItemsForDays(items: Array<Item>, days: Int): String {
var output = ""
val app = GildedRose(items)
for (i in 0 until days) {
output += "\nDAY $i\n"
items.forEach {
val newLine = if (it == items.last()) "" else "\n"
output += "$it$newLine"
}
app.updateQuality()
}
return output
}
}

View File

@ -0,0 +1,13 @@
package com.gildedrose.core
import java.io.File
class TestToFileHandler(
fileName: String) {
val filePath = "texttest/$fileName.txt"
fun write(text: String) = File(filePath).bufferedWriter().use { it.write(text) }
fun read() = File(filePath).bufferedReader().readLines().joinToString(separator = "\n")
}