diff options
Diffstat (limited to 'formats/json-tests/commonTest/src/kotlinx/serialization/test/TestingFramework.kt')
-rw-r--r-- | formats/json-tests/commonTest/src/kotlinx/serialization/test/TestingFramework.kt | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/test/TestingFramework.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/test/TestingFramework.kt new file mode 100644 index 00000000..3ec07149 --- /dev/null +++ b/formats/json-tests/commonTest/src/kotlinx/serialization/test/TestingFramework.kt @@ -0,0 +1,100 @@ +/* + * Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.serialization.test + +import kotlinx.serialization.* +import kotlinx.serialization.json.* +import kotlin.test.* + + +inline fun <reified T : Any> assertStringFormAndRestored( + expected: String, + original: T, + serializer: KSerializer<T>, + format: StringFormat = Json, + printResult: Boolean = false +) { + val string = format.encodeToString(serializer, original) + if (printResult) println("[Serialized form] $string") + assertEquals(expected, string) + val restored = format.decodeFromString(serializer, string) + if (printResult) println("[Restored form] $restored") + assertEquals(original, restored) +} + +inline fun <reified T : Any> StringFormat.assertStringFormAndRestored( + expected: String, + original: T, + serializer: KSerializer<T>, + printResult: Boolean = false +) { + val string = this.encodeToString(serializer, original) + if (printResult) println("[Serialized form] $string") + assertEquals(expected, string) + val restored = this.decodeFromString(serializer, string) + if (printResult) println("[Restored form] $restored") + assertEquals(original, restored) +} + +fun <T : Any> assertSerializedAndRestored( + original: T, + serializer: KSerializer<T>, + format: StringFormat = Json, + printResult: Boolean = false +) { + if (printResult) println("[Input] $original") + val string = format.encodeToString(serializer, original) + if (printResult) println("[Serialized form] $string") + val restored = format.decodeFromString(serializer, string) + if (printResult) println("[Restored form] $restored") + assertEquals(original, restored) +} + +inline fun assertFailsWithSerial( + exceptionName: String, + assertionMessage: String? = null, + block: () -> Unit +) { + val exception = assertFailsWith(SerializationException::class, assertionMessage, block) + assertEquals( + exceptionName, + exception::class.simpleName, + "Expected exception with type '${exceptionName}' but got '${exception::class.simpleName}'" + ) +} +inline fun assertFailsWithSerialMessage( + exceptionName: String, + message: String, + assertionMessage: String? = null, + block: () -> Unit +) { + val exception = assertFailsWith(SerializationException::class, assertionMessage, block) + assertEquals( + exceptionName, + exception::class.simpleName, + "Expected exception type '$exceptionName' but actual is '${exception::class.simpleName}'" + ) + assertTrue( + exception.message!!.contains(message), + "expected:<$message> but was:<${exception.message}>" + ) +} +inline fun <reified T : Throwable> assertFailsWithMessage( + message: String, + assertionMessage: String? = null, + block: () -> Unit +) { + val exception = assertFailsWith(T::class, assertionMessage, block) + assertTrue( + exception.message!!.contains(message), + "expected:<$message> but was:<${exception.message}>" + ) +} + +inline fun checkSerializationException(action: () -> Unit, assertions: SerializationException.(String) -> Unit) { + val e = assertFailsWith(SerializationException::class, action) + assertNotNull(e.message) + e.assertions(e.message!!) +} |