• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
<lambda>null2  * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 
5 package kotlinx.serialization.json
6 
7 import kotlinx.serialization.*
8 import kotlinx.serialization.builtins.*
9 import kotlin.test.*
10 
11 class JsonGenericTest : JsonTestBase() {
12 
13     @Serializable
14     class Array2DBox(val arr: Array<Array<Double>>) {
15         override fun toString(): String {
16             return arr.contentDeepToString()
17         }
18     }
19 
20     @Test
21     fun testWriteDefaultPair() = parametrizedTest { jsonTestingMode ->
22         val pair = 42 to "foo"
23         val serializer = PairSerializer(
24             Int.serializer(),
25             String.serializer()
26         )
27         val s = default.encodeToString(serializer, pair, jsonTestingMode)
28         assertEquals("""{"first":42,"second":"foo"}""", s)
29         val restored = default.decodeFromString(serializer, s, jsonTestingMode)
30         assertEquals(pair, restored)
31     }
32 
33     @Test
34     fun testWritePlainTriple() = parametrizedTest { jsonTestingMode ->
35         val triple = Triple(42, "foo", false)
36         val serializer = TripleSerializer(
37             Int.serializer(),
38             String.serializer(),
39             Boolean.serializer()
40         )
41         val s = default.encodeToString(serializer, triple, jsonTestingMode)
42         assertEquals("""{"first":42,"second":"foo","third":false}""", s)
43         val restored = default.decodeFromString(serializer, s, jsonTestingMode)
44         assertEquals(triple, restored)
45     }
46 
47     @Test
48     fun testRecursiveArrays() = parametrizedTest { jsonTestingMode ->
49         val arr = Array2DBox(arrayOf(arrayOf(2.1, 1.2), arrayOf(42.3, -3.4)))
50         val str = default.encodeToString(Array2DBox.serializer(), arr, jsonTestingMode)
51         assertEquals("""{"arr":[[2.1,1.2],[42.3,-3.4]]}""", str)
52         val restored = default.decodeFromString(Array2DBox.serializer(), str, jsonTestingMode)
53         assertTrue(arr.arr.contentDeepEquals(restored.arr))
54     }
55 }
56