• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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