• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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