From 7f08d805bb1b42f353dfd72e1ab1b54a4691eb87 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Fri, 5 Oct 2018 13:57:10 +0200 Subject: [PATCH] Replace texttest fixture with own acceptance test --- .../kotlin/com/gildedrose/TexttestFixture.kt | 36 ------------- .../acceptance/ThirtyDaysAcceptanceTests.kt | 50 +++++++++++++++++++ .../com/gildedrose/core/TestToFileHandler.kt | 13 +++++ 3 files changed, 63 insertions(+), 36 deletions(-) delete mode 100644 src/test/kotlin/com/gildedrose/TexttestFixture.kt create mode 100644 src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt create mode 100644 src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt diff --git a/src/test/kotlin/com/gildedrose/TexttestFixture.kt b/src/test/kotlin/com/gildedrose/TexttestFixture.kt deleted file mode 100644 index 7eeac81e..00000000 --- a/src/test/kotlin/com/gildedrose/TexttestFixture.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.gildedrose - -fun main(args: Array) { - - 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() - } - - -} diff --git a/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt b/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt new file mode 100644 index 00000000..b9fab047 --- /dev/null +++ b/src/test/kotlin/com/gildedrose/acceptance/ThirtyDaysAcceptanceTests.kt @@ -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, 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 + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt b/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt new file mode 100644 index 00000000..9db55ac8 --- /dev/null +++ b/src/test/kotlin/com/gildedrose/core/TestToFileHandler.kt @@ -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") +} \ No newline at end of file