diff options
Diffstat (limited to 'runtime/commonTest/src/kotlinx/serialization/features/SkipDefaults.kt')
-rw-r--r-- | runtime/commonTest/src/kotlinx/serialization/features/SkipDefaults.kt | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/runtime/commonTest/src/kotlinx/serialization/features/SkipDefaults.kt b/runtime/commonTest/src/kotlinx/serialization/features/SkipDefaults.kt new file mode 100644 index 00000000..85625024 --- /dev/null +++ b/runtime/commonTest/src/kotlinx/serialization/features/SkipDefaults.kt @@ -0,0 +1,64 @@ +/* + * Copyright 2018 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package kotlinx.serialization.features + +import kotlinx.serialization.* +import kotlinx.serialization.cbor.* +import kotlinx.serialization.json.* +import kotlin.test.* + +@Serializable +data class Data(val bar: String, val foo: Int = 42) { + var list: List<Int> = emptyList() + + val listWithSomething: List<Int> = listOf(1, 2, 3) +} + +class SkipDefaultsTest { + private val json = Json { encodeDefaults = false } + private val cbor = Cbor(encodeDefaults = false) + + @Test + fun serializeCorrectlyDefaults() { + val d = Data("bar") + assertEquals("""{"bar":"bar","foo":42,"list":[],"listWithSomething":[1,2,3]}""", Json.stringify(Data.serializer(), d)) + } + + @Test + fun serializeCorrectly() { + val d = Data("bar", 100).apply { list = listOf(1, 2, 3) } + assertEquals("""{"bar":"bar","foo":100,"list":[1,2,3]}""", json.stringify(Data.serializer(), d)) + } + + @Test + fun serializeCorrectlyAndDropBody() { + val d = Data("bar", 43) + assertEquals("""{"bar":"bar","foo":43}""", json.stringify(Data.serializer(), d)) + } + + @Test + fun serializeCorrectlyAndDropAll() { + val d = Data("bar") + assertEquals("""{"bar":"bar"}""", json.stringify(Data.serializer(), d)) + } + + @Test + fun cborDropsDefaults() { + val d = Data("bar") + assertEquals("bf6362617263626172ff", cbor.dumps(Data.serializer(), d)) + } +} |