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