Make ResultTest common

Use custom exception type to avoid platform differences in toString implementation.
This commit is contained in:
Ilya Gorbunov
2018-09-09 21:09:02 +03:00
parent b1c2daf1fe
commit 6bfb5c59a3
@@ -8,6 +8,13 @@ package test.kotlin
import kotlin.test.* import kotlin.test.*
class ResultTest { class ResultTest {
class CustomException(message: String) : Exception(message) {
override fun toString(): String = "CustomException: $message"
}
fun error(message: String): Nothing = throw CustomException(message)
@Test @Test
fun testRunCatchingSuccess() { fun testRunCatchingSuccess() {
val ok = runCatching { "OK" } val ok = runCatching { "OK" }
@@ -28,7 +35,7 @@ class ResultTest {
@Test @Test
fun testConstructedFailure() { fun testConstructedFailure() {
val fail = Result.failure<Unit>(IllegalStateException("F")) val fail = Result.failure<Unit>(CustomException("F"))
checkFailure(fail, "F", true) checkFailure(fail, "F", true)
} }
@@ -70,11 +77,11 @@ class ResultTest {
assertEquals(null, fail.getOrNull()) assertEquals(null, fail.getOrNull())
assertEquals(null, fail.getOrElse { null }) assertEquals(null, fail.getOrElse { null })
assertEquals("DEF", fail.getOrDefault("DEF")) assertEquals("DEF", fail.getOrDefault("DEF"))
assertEquals("EX:java.lang.IllegalStateException: $msg", fail.getOrElse { "EX:$it" }) assertEquals("EX:CustomException: $msg", fail.getOrElse { "EX:$it" })
assertEquals("EX:java.lang.IllegalStateException: $msg", fail.fold({ "V:$it" }, { "EX:$it" })) assertEquals("EX:CustomException: $msg", fail.fold({ "V:$it" }, { "EX:$it" }))
assertEquals(msg, fail.exceptionOrNull()!!.message) assertEquals(msg, fail.exceptionOrNull()!!.message)
assertEquals(msg, fail.fold(onSuccess = { null }, onFailure = { it })!!.message) assertEquals(msg, fail.fold(onSuccess = { null }, onFailure = { it })!!.message)
assertEquals("Failure(java.lang.IllegalStateException: $msg)", fail.toString()) assertEquals("Failure(CustomException: $msg)", fail.toString())
assertEquals(fail, fail) assertEquals(fail, fail)
if (topLevel) { if (topLevel) {
checkFailure(fail.map { 42 }, msg) checkFailure(fail.map { 42 }, msg)