mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
adding first set of tests: refactoring
This commit is contained in:
parent
f6aab4941b
commit
1029dca6f6
@ -1,15 +1,19 @@
|
||||
package com.gildedrose
|
||||
|
||||
import org.junit.jupiter.api.TestInstance
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
import java.util.stream.Stream
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
internal class GildedRoseAgedBrieTest : GildedRoseBaseTest() {
|
||||
|
||||
private val combinationsToTest = arrayOf(
|
||||
// Below are all testcases for this test, with the following arguments:
|
||||
// - name
|
||||
// - initialSellIn
|
||||
// - initialQuality
|
||||
// - numberDays
|
||||
// - resultingSellIn
|
||||
// - resultingQuality
|
||||
override val combinationsToTest = arrayOf(
|
||||
// tests where sellIn and quality are initially the same
|
||||
Arguments.of("Aged Brie", 5, 5, 1, 4, 6),
|
||||
Arguments.of("Aged Brie", 5, 5, 2, 3, 7),
|
||||
@ -69,40 +73,6 @@ internal class GildedRoseAgedBrieTest : GildedRoseBaseTest() {
|
||||
Arguments.of("Aged Brie", -1, -2, 3, -4, 4),
|
||||
Arguments.of("Aged Brie", 100, -1, 1, 99, 0),
|
||||
Arguments.of("Aged Brie", 100, 100, 1, 99, 100),
|
||||
|
||||
Arguments.of("Aged Brie", 1, 0, 16, -15, 31),
|
||||
|
||||
)
|
||||
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Legacy algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Legacy algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Refactored algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Refactored algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
|
||||
fun combinationsSource(): Stream<Arguments> = Stream.of(*combinationsToTest)
|
||||
|
||||
|
||||
}
|
||||
@ -1,16 +1,19 @@
|
||||
package com.gildedrose
|
||||
|
||||
import org.junit.jupiter.api.TestInstance
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
import java.util.stream.Stream
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
internal class GildedRoseBackstageTest : GildedRoseBaseTest(){
|
||||
|
||||
|
||||
private val combinationsToTest = arrayOf(
|
||||
// Below are all testcases for this test, with the following arguments:
|
||||
// - name
|
||||
// - initialSellIn
|
||||
// - initialQuality
|
||||
// - numberDays
|
||||
// - resultingSellIn
|
||||
// - resultingQuality
|
||||
override val combinationsToTest = arrayOf(
|
||||
// tests where sellIn is initially less then the quality
|
||||
Arguments.of("Backstage passes to a TAFKAL80ETC concert", 12, 25, 1, 11, 26),
|
||||
Arguments.of("Backstage passes to a TAFKAL80ETC concert", 12, 25, 2, 10, 27),// 10 days before concert, quality goes up by 2 each day
|
||||
@ -55,32 +58,4 @@ internal class GildedRoseBackstageTest : GildedRoseBaseTest(){
|
||||
|
||||
)
|
||||
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Legacy algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Legacy algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Refactored algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Refactored algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
fun combinationsSource(): Stream<Arguments> = Stream.of(*combinationsToTest)
|
||||
}
|
||||
@ -1,8 +1,41 @@
|
||||
package com.gildedrose
|
||||
|
||||
import org.assertj.core.api.Assertions
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
import java.util.stream.Stream
|
||||
|
||||
abstract class GildedRoseBaseTest {
|
||||
|
||||
abstract val combinationsToTest : Array<Arguments> // this array is created in all subclass tests
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Legacy algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Legacy algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Refactored algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Refactored algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
open class GildedRoseBaseTest {
|
||||
fun testGildedRose(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
@ -23,4 +56,7 @@ open class GildedRoseBaseTest {
|
||||
Assertions.assertThat(item.quality).isEqualTo(resultingQuality)
|
||||
}
|
||||
|
||||
fun combinationsSource(): Stream<Arguments> = Stream.of(*combinationsToTest)
|
||||
|
||||
|
||||
}
|
||||
@ -1,15 +1,19 @@
|
||||
package com.gildedrose
|
||||
|
||||
import org.junit.jupiter.api.TestInstance
|
||||
import org.junit.jupiter.params.ParameterizedTest
|
||||
import org.junit.jupiter.params.provider.Arguments
|
||||
import org.junit.jupiter.params.provider.MethodSource
|
||||
import java.util.stream.Stream
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
internal class GildedRoseDefaultTest : GildedRoseBaseTest(){
|
||||
internal class GildedRoseDefaultTest : GildedRoseBaseTest() {
|
||||
|
||||
private val combinationsToTest = arrayOf(
|
||||
// Below are all testcases for this test, with the following arguments:
|
||||
// - name
|
||||
// - initialSellIn
|
||||
// - initialQuality
|
||||
// - numberDays
|
||||
// - resultingSellIn
|
||||
// - resultingQuality
|
||||
override val combinationsToTest: Array<Arguments> = arrayOf(
|
||||
// tests where sellIn and quality are initially the same
|
||||
Arguments.of("foo", 5, 5, 1, 4, 4),
|
||||
Arguments.of("foo", 5, 5, 2, 3, 3),
|
||||
@ -49,36 +53,6 @@ internal class GildedRoseDefaultTest : GildedRoseBaseTest(){
|
||||
Arguments.of("foo", -1, -2, 3, -4, -2),
|
||||
Arguments.of("foo", 100, -1, 1, 99, -1),
|
||||
Arguments.of("foo", 100, 100, 1, 99, 99),
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Legacy algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Legacy algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Refactored algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Refactored algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
|
||||
fun combinationsSource(): Stream<Arguments> = Stream.of(*combinationsToTest)
|
||||
}
|
||||
@ -9,7 +9,14 @@ import java.util.stream.Stream
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
internal class GildedRoseSulfurasTest : GildedRoseBaseTest(){
|
||||
|
||||
private val combinationsToTest = arrayOf(
|
||||
// Below are all testcases for this test, with the following arguments:
|
||||
// - name
|
||||
// - initialSellIn
|
||||
// - initialQuality
|
||||
// - numberDays
|
||||
// - resultingSellIn
|
||||
// - resultingQuality
|
||||
override val combinationsToTest = arrayOf(
|
||||
Arguments.of("Sulfuras, Hand of Ragnaros", 5, 5, 1, 5, 5),// sellIn and quality always stays unchanged
|
||||
Arguments.of("Sulfuras, Hand of Ragnaros", 5, 5, 2, 5, 5),// sellIn and quality always stays unchanged
|
||||
Arguments.of("Sulfuras, Hand of Ragnaros", 5, 5, 100, 5, 5),// sellIn and quality always stays unchanged
|
||||
@ -19,31 +26,4 @@ internal class GildedRoseSulfurasTest : GildedRoseBaseTest(){
|
||||
Arguments.of("Sulfuras, Hand of Ragnaros", 100, 100, 1, 100, 100),// sellIn and quality always stays unchanged
|
||||
)
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Legacy algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Legacy algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0}: initial sellIn:{1} and initial quality:{2}, after {3} days: sellIn:{4} and quality {5}, using Refactored algorithm")
|
||||
@MethodSource("combinationsSource")
|
||||
fun `given input item, when some days are passed, then the item state is correctly modified, using Refactored algorithm`(
|
||||
name: String,
|
||||
initialSellIn: Int,
|
||||
initialQuality: Int,
|
||||
numberDays: Int,
|
||||
resultingSellIn: Int,
|
||||
resultingQuality: Int
|
||||
) {
|
||||
testGildedRose(name, initialSellIn, initialQuality, numberDays, resultingSellIn, resultingQuality)
|
||||
}
|
||||
|
||||
fun combinationsSource(): Stream<Arguments> = Stream.of(*combinationsToTest)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user