summaryrefslogtreecommitdiff
path: root/runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt')
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt53
1 files changed, 53 insertions, 0 deletions
diff --git a/runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt b/runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt
new file mode 100644
index 00000000..afba6606
--- /dev/null
+++ b/runtime/commonTest/src/kotlinx/serialization/test/TestingFramework.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2017-2019 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.Json
+import kotlin.test.assertEquals
+
+
+inline fun <reified T : Any> assertStringForm(
+ expected: String,
+ original: T,
+ serializer: KSerializer<T>,
+ format: StringFormat = Json.plain,
+ printResult: Boolean = false
+) {
+ val string = format.stringify(serializer, original)
+ if (printResult) println("[Serialized form] $string")
+ assertEquals(expected, string)
+}
+
+inline fun <reified T : Any> assertStringFormAndRestored(
+ expected: String,
+ original: T,
+ serializer: KSerializer<T>,
+ format: StringFormat = Json.plain,
+ printResult: Boolean = false
+) {
+ val string = format.stringify(serializer, original)
+ if (printResult) println("[Serialized form] $string")
+ assertEquals(expected, string)
+ val restored = format.parse(serializer, string)
+ if (printResult) println("[Restored form] $original")
+ assertEquals(original, restored)
+}
+
+inline fun <reified T : Any> StringFormat.assertStringFormAndRestored(
+ expected: String,
+ original: T,
+ serializer: KSerializer<T>,
+ printResult: Boolean = false
+) {
+ val string = this.stringify(serializer, original)
+ if (printResult) println("[Serialized form] $string")
+ assertEquals(expected, string)
+ val restored = this.parse(serializer, string)
+ if (printResult) println("[Restored form] $original")
+ assertEquals(original, restored)
+}
+
+infix fun <T> T.shouldBe(expected: T) = assertEquals(expected, this)