summaryrefslogtreecommitdiff
path: root/runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt')
-rw-r--r--runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt42
1 files changed, 42 insertions, 0 deletions
diff --git a/runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt b/runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt
new file mode 100644
index 00000000..8fa9bf94
--- /dev/null
+++ b/runtime/commonTest/src/kotlinx/serialization/features/PartiallyCustomSerializerTest.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2019 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.json.Json
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+@Serializable
+data class WithNull(@SerialName("value") val nullable: String? = null) {
+ @Serializer(forClass = WithNull::class)
+ companion object : KSerializer<WithNull> {
+ override fun serialize(encoder: Encoder, obj: WithNull) {
+ val elemOutput = encoder.beginStructure(descriptor)
+ if (obj.nullable != null) elemOutput.encodeStringElement(descriptor, 0, obj.nullable)
+ elemOutput.endStructure(descriptor)
+ }
+ }
+}
+
+class PartiallyCustomSerializerTest {
+ @Test
+ fun partiallyCustom() {
+ assertEquals("""{"value":"foo"}""", Json.stringify(WithNull.serializer(), WithNull("foo")))
+ assertEquals("""{}""", Json.stringify(WithNull.serializer(), WithNull()))
+ }
+}