diff options
Diffstat (limited to 'runtime/commonTest/src/kotlinx/serialization/json/serializers/JsonSerializerInGenericsTest.kt')
-rw-r--r-- | runtime/commonTest/src/kotlinx/serialization/json/serializers/JsonSerializerInGenericsTest.kt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/runtime/commonTest/src/kotlinx/serialization/json/serializers/JsonSerializerInGenericsTest.kt b/runtime/commonTest/src/kotlinx/serialization/json/serializers/JsonSerializerInGenericsTest.kt new file mode 100644 index 00000000..24895a2d --- /dev/null +++ b/runtime/commonTest/src/kotlinx/serialization/json/serializers/JsonSerializerInGenericsTest.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.serialization.json.serializers + +import kotlinx.serialization.* +import kotlinx.serialization.json.* +import kotlinx.serialization.test.assertStringFormAndRestored +import kotlin.test.* + +class JsonSerializerInGenericsTest : JsonTestBase() { + + @Serializable + data class NonTrivialClass( + val list: List<JsonElement?>, + val nullableNull: JsonNull?, + val nestedMap: Map<String, Map<String, JsonElement?>> + ) + + private val expected = "{\"list\":[42,[{\"key\":\"value\"}],null],\"nullableNull\":null,\"nestedMap\":{\"key1\":{\"nested\":{\"first\":\"second\"},\"nullable\":null}}}" + + @Test + fun testGenericsWithNulls() = parametrizedTest(strict) { + assertStringFormAndRestored(expected, create(), NonTrivialClass.serializer()) + } + + private fun create(): NonTrivialClass { + return NonTrivialClass( + arrayListOf(JsonPrimitive(42), jsonArray { +json { "key" to "value" } }, null), + null, + mapOf("key1" to mapOf("nested" to json { + "first" to "second" + }, "nullable" to null)) + ) + } +} |