1 /*
2 * Copyright 2017-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3 */
4
5 package kotlinx.serialization.test
6
7 import kotlinx.serialization.*
8 import kotlinx.serialization.json.*
9 import kotlin.test.*
10
11
assertStringFormAndRestorednull12 inline fun <reified T : Any> assertStringFormAndRestored(
13 expected: String,
14 original: T,
15 serializer: KSerializer<T>,
16 format: StringFormat = Json,
17 printResult: Boolean = false
18 ) {
19 val string = format.encodeToString(serializer, original)
20 if (printResult) println("[Serialized form] $string")
21 assertEquals(expected, string)
22 val restored = format.decodeFromString(serializer, string)
23 if (printResult) println("[Restored form] $restored")
24 assertEquals(original, restored)
25 }
26
assertStringFormAndRestorednull27 inline fun <reified T : Any> StringFormat.assertStringFormAndRestored(
28 expected: String,
29 original: T,
30 serializer: KSerializer<T>,
31 printResult: Boolean = false
32 ) {
33 val string = this.encodeToString(serializer, original)
34 if (printResult) println("[Serialized form] $string")
35 assertEquals(expected, string)
36 val restored = this.decodeFromString(serializer, string)
37 if (printResult) println("[Restored form] $restored")
38 assertEquals(original, restored)
39 }
40
assertSerializedAndRestorednull41 fun <T : Any> assertSerializedAndRestored(
42 original: T,
43 serializer: KSerializer<T>,
44 format: StringFormat = Json,
45 printResult: Boolean = false
46 ) {
47 if (printResult) println("[Input] $original")
48 val string = format.encodeToString(serializer, original)
49 if (printResult) println("[Serialized form] $string")
50 val restored = format.decodeFromString(serializer, string)
51 if (printResult) println("[Restored form] $restored")
52 assertEquals(original, restored)
53 }
54
assertFailsWithSerialnull55 inline fun assertFailsWithSerial(
56 exceptionName: String,
57 assertionMessage: String? = null,
58 block: () -> Unit
59 ) {
60 val exception = assertFailsWith(SerializationException::class, assertionMessage, block)
61 assertEquals(
62 exceptionName,
63 exception::class.simpleName,
64 "Expected exception with type '${exceptionName}' but got '${exception::class.simpleName}'"
65 )
66 }
assertFailsWithSerialMessagenull67 inline fun assertFailsWithSerialMessage(
68 exceptionName: String,
69 message: String,
70 assertionMessage: String? = null,
71 block: () -> Unit
72 ) {
73 val exception = assertFailsWith(SerializationException::class, assertionMessage, block)
74 assertEquals(
75 exceptionName,
76 exception::class.simpleName,
77 "Expected exception type '$exceptionName' but actual is '${exception::class.simpleName}'"
78 )
79 assertTrue(
80 exception.message!!.contains(message),
81 "expected:<$message> but was:<${exception.message}>"
82 )
83 }
assertFailsWithMessagenull84 inline fun <reified T : Throwable> assertFailsWithMessage(
85 message: String,
86 assertionMessage: String? = null,
87 block: () -> Unit
88 ) {
89 val exception = assertFailsWith(T::class, assertionMessage, block)
90 assertTrue(
91 exception.message!!.contains(message),
92 "expected:<$message> but was:<${exception.message}>"
93 )
94 }
95
checkSerializationExceptionnull96 inline fun checkSerializationException(action: () -> Unit, assertions: SerializationException.(String) -> Unit) {
97 val e = assertFailsWith(SerializationException::class, action)
98 assertNotNull(e.message)
99 e.assertions(e.message!!)
100 }
101