• 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
6 
7 import kotlin.test.*
8 
assertSerializedToBinaryAndRestorednull9 internal inline fun <reified T> assertSerializedToBinaryAndRestored(
10     original: T,
11     serializer: KSerializer<T>,
12     format: BinaryFormat,
13     printResult: Boolean = false,
14     hexResultToCheck: String? = null
15 ) {
16     val bytes = format.encodeToByteArray(serializer, original)
17     val hexString = HexConverter.printHexBinary(bytes, lowerCase = true)
18     if (printResult) {
19         println("[Serialized form] $hexString")
20     }
21     if (hexResultToCheck != null) {
22         assertEquals(
23             hexResultToCheck.lowercase(),
24             hexString,
25             "Expected serialized binary to be equal in hex representation"
26         )
27     }
28     val restored = format.decodeFromByteArray(serializer, bytes)
29     if (printResult) println("[Restored form] $restored")
30     assertEquals(original, restored)
31 }
32