• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package kotlinx.serialization
2 
3 import kotlinx.serialization.builtins.*
4 import kotlinx.serialization.json.*
5 import kotlin.test.*
6 
7 class JsonOverwriteKeyTest : JsonTestBase() {
8     private val json = Json
9 
10     @Serializable
11     data class Data(val a: Int)
12 
13     @Serializable
14     data class Updatable(val d: Data)
15 
16     @Test
testLatestValueWinsnull17     fun testLatestValueWins() {
18         val parsed: Updatable = default.decodeFromString("""{"d":{"a":"42"},"d":{"a":43}}""")
19         assertEquals(Data(43), parsed.d)
20     }
21 
22     @Serializable
23     data class WrappedMap<T>(val mp: Map<String, T>)
24 
25     @Test
testLatestKeyInMapnull26     fun testLatestKeyInMap() {
27         val parsed = json.decodeFromString(WrappedMap.serializer(Int.serializer()), """{"mp": { "x" : 23, "x" : 42, "y": 4 }}""")
28         assertEquals(WrappedMap(mapOf("x" to 42, "y" to 4)), parsed)
29     }
30 
31     @Test
testLastestListValueInMapnull32     fun testLastestListValueInMap() {
33         val parsed = json.decodeFromString(WrappedMap.serializer(ListSerializer(Int.serializer())), """{"mp": { "x" : [23], "x" : [42], "y": [4] }}""")
34         assertEquals(WrappedMap(mapOf("x" to listOf(42), "y" to listOf(4))), parsed)
35     }
36 }
37