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