1 /* 2 * Copyright 2017-2020 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 kotlinx.serialization.serializer 10 import kotlin.test.* 11 12 class JsonNumericKeysTest : JsonTestBase() { 13 @Serializable 14 data class EntryWrapper(val e: Map.Entry<Int, Int>) 15 16 @Serializable 17 data class MapWrapper(val m: Map<Int, Int>) 18 19 @Test testIntegerKeyInTopLevelEntrynull20 fun testIntegerKeyInTopLevelEntry() { 21 assertJsonFormAndRestored(MapEntrySerializer(Int.serializer(), Int.serializer()), getEntry(), """{"1":2}""") 22 } 23 24 @Test testIntegerKeyInEntrynull25 fun testIntegerKeyInEntry() { 26 assertJsonFormAndRestored(EntryWrapper.serializer(), EntryWrapper(getEntry()), """{"e":{"1":2}}""") 27 } 28 29 @Test <lambda>null30 fun testIntegerKeyInTopLevelMap() = parametrizedTest { 31 assertJsonFormAndRestored(serializer(), mapOf(1 to 2), """{"1":2}""") 32 33 } 34 35 @Test <lambda>null36 fun testIntegerKeyInMap() = parametrizedTest { 37 assertJsonFormAndRestored(MapWrapper.serializer(), MapWrapper(mapOf(1 to 2)), """{"m":{"1":2}}""") 38 } 39 40 // Workaround equals on JS and Native getEntrynull41 fun getEntry(): Map.Entry<Int, Int> { 42 val e = default.decodeFromString(MapEntrySerializer(Int.serializer(), Int.serializer()), """{"1":2}""") 43 assertEquals(1, e.key) 44 assertEquals(2, e.value) 45 return e 46 } 47 } 48