Switched app tests to kotlin.test

This commit is contained in:
Erik C. Thauvin 2023-06-06 23:10:28 -07:00
parent 3a19b5e895
commit c946b9d6d9
4 changed files with 49 additions and 48 deletions

View file

@ -35,7 +35,8 @@ dependencies {
kover(projects.lib) kover(projects.lib)
// testImplementation("com.willowtreeapps.assertk:assertk-jvm:0.25") // testImplementation("com.willowtreeapps.assertk:assertk-jvm:0.25")
testImplementation("org.junit.jupiter:junit-jupiter:5.9.1") // testImplementation("org.junit.jupiter:junit-jupiter:5.9.1")
testImplementation(kotlin("test"))
} }
base { base {

View file

@ -19,64 +19,64 @@ package net.thauvin.erik.urlencoder
import net.thauvin.erik.urlencoder.UrlEncoder.processMain import net.thauvin.erik.urlencoder.UrlEncoder.processMain
import net.thauvin.erik.urlencoder.UrlEncoder.usage import net.thauvin.erik.urlencoder.UrlEncoder.usage
import org.junit.jupiter.api.Assertions.assertEquals import kotlin.test.Test
import org.junit.jupiter.api.Assertions.assertThrows import kotlin.test.assertEquals
import org.junit.jupiter.api.Test import kotlin.test.assertFailsWith
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.Arguments.arguments
import org.junit.jupiter.params.provider.MethodSource
import org.junit.jupiter.params.provider.ValueSource
import java.util.stream.Stream
class UrlEncoderTest { class UrlEncoderTest {
companion object { companion object {
@JvmStatic @JvmStatic
fun invalid() = arrayOf("sdkjfh%", "sdkjfh%6", "sdkjfh%xx", "sdfjfh%-1") var invalid = arrayOf("sdkjfh%", "sdkjfh%6", "sdkjfh%xx", "sdfjfh%-1")
@JvmStatic @JvmStatic
fun validMap(): Stream<Arguments> = Stream.of( var validMap = arrayOf(
arguments("a test &", "a%20test%20%26"), Pair("a test &", "a%20test%20%26"),
arguments( Pair(
"!abcdefghijklmnopqrstuvwxyz%%ABCDEFGHIJKLMNOPQRSTUVQXYZ0123456789-_.~=", "!abcdefghijklmnopqrstuvwxyz%%ABCDEFGHIJKLMNOPQRSTUVQXYZ0123456789-_.~=",
"%21abcdefghijklmnopqrstuvwxyz%25%25ABCDEFGHIJKLMNOPQRSTUVQXYZ0123456789-_.%7E%3D" "%21abcdefghijklmnopqrstuvwxyz%25%25ABCDEFGHIJKLMNOPQRSTUVQXYZ0123456789-_.%7E%3D"
), ),
arguments("%#okékÉȢ smile!😁", "%25%23ok%C3%A9k%C3%89%C8%A2%20smile%21%F0%9F%98%81"), Pair("%#okékÉȢ smile!😁", "%25%23ok%C3%A9k%C3%89%C8%A2%20smile%21%F0%9F%98%81"),
arguments( Pair(
"\uD808\uDC00\uD809\uDD00\uD808\uDF00\uD808\uDD00", "%F0%92%80%80%F0%92%94%80%F0%92%8C%80%F0%92%84%80" "\uD808\uDC00\uD809\uDD00\uD808\uDF00\uD808\uDD00", "%F0%92%80%80%F0%92%94%80%F0%92%8C%80%F0%92%84%80"
) )
) )
} }
@ParameterizedTest(name = "processMain(-d {1}) should be {0}") @Test
@MethodSource("validMap") fun `Main Decode`() {
fun `Main Decode`(expected: String, source: String) { for (m in validMap) {
val result: UrlEncoder.MainResult = processMain(arrayOf("-d", source)) val result: UrlEncoder.MainResult = processMain(arrayOf("-d", m.second))
assertEquals(expected, result.output) assertEquals(m.first, result.output)
assertEquals(0, result.status, "processMain(-d $source).status") assertEquals(0, result.status, "processMain(-d ${m.second}).status")
}
} }
@ParameterizedTest(name = "processMain(-d {0})") @Test
@MethodSource("invalid") fun `Main Decode with Exception`() {
fun `Main Decode with Exception`(source: String) { for (source in invalid) {
assertThrows(IllegalArgumentException::class.java, { processMain(arrayOf("-d", source)) }, source) assertFailsWith<IllegalArgumentException>(
message = source,
block = { processMain(arrayOf("-d", source)) }
)
}
} }
@ParameterizedTest(name = "processMain(-e {0})") @Test
@MethodSource("validMap") fun `Main Encode`() {
fun `Main Encode`(source: String, expected: String) { for (m in validMap) {
val result = processMain(arrayOf(source)) val result = processMain(arrayOf(m.first))
assertEquals(expected, result.output) assertEquals(m.second, result.output)
assertEquals(0, result.status, "processMain(-e $source).status") assertEquals(0, result.status, "processMain(-e ${m.first}).status")
}
} }
@ParameterizedTest(name = "processMain(-e {0})") @Test
@MethodSource("validMap") fun `Main Encode with Option`() {
fun `Main Encode with Option`(source: String, expected: String) { for (m in validMap) {
val result = processMain(arrayOf("-e", source)) val result = processMain(arrayOf("-e", m.first))
assertEquals(expected, result.output) assertEquals(m.second, result.output)
assertEquals(0, result.status, "processMain(-e $source).status") assertEquals(0, result.status, "processMain(-e ${m.first}).status")
}
} }
@ -90,13 +90,13 @@ class UrlEncoderTest {
assertEquals(" ", processMain(arrayOf("-d", " ")).output, "processMain('-d', ' ')") assertEquals(" ", processMain(arrayOf("-d", " ")).output, "processMain('-d', ' ')")
} }
@ParameterizedTest @Test
@ValueSource(strings = ["", "-d", "-e"]) fun `Main Usage with Invalid arg`() {
fun `Main Usage with Invalid arg`(arg: String) { for (arg in arrayOf("", "-d", "-e")) {
val result = processMain(arrayOf(arg)) val result = processMain(arrayOf(arg))
assertEquals(usage, result.output, "processMain('$arg')") assertEquals(usage, result.output, "processMain('$arg')")
assertEquals(1, result.status, "processMain('$arg').status") assertEquals(1, result.status, "processMain('$arg').status")
} }}
@Test @Test
fun `Main Usage with too Many Args`() { fun `Main Usage with too Many Args`() {

View file

@ -34,7 +34,7 @@ tasks.withType<KotlinCompile>().configureEach {
} }
tasks.withType<Test>().configureEach { tasks.withType<Test>().configureEach {
useJUnitPlatform() // useJUnitPlatform()
val testsBadgeApiKey = providers.gradleProperty("testsBadgeApiKey") val testsBadgeApiKey = providers.gradleProperty("testsBadgeApiKey")
addTestListener(Rife2TestListener(testsBadgeApiKey)) addTestListener(Rife2TestListener(testsBadgeApiKey))

View file

@ -36,7 +36,7 @@ kotlin {
targets.withType<KotlinJvmTarget>().configureEach { targets.withType<KotlinJvmTarget>().configureEach {
testRuns.configureEach { testRuns.configureEach {
executionTask.configure { executionTask.configure {
useJUnitPlatform() // useJUnitPlatform()
} }
} }
} }