• 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
6 
7 import kotlinx.serialization.descriptors.*
8 import kotlinx.serialization.encoding.*
9 import kotlinx.serialization.test.*
10 import kotlin.test.*
11 
12 @Suppress("RemoveExplicitTypeArguments") // This is exactly what's being tested
13 class SerializersLookupObjectTest {
14     @Serializable(with = ObjectCustomObjectSerializer::class)
15     object ObjectExternalObject
16 
17     object ObjectCustomObjectSerializer: KSerializer<ObjectExternalObject> {
18         override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", StructureKind.OBJECT)
19 
serializenull20         override fun serialize(encoder: Encoder, value: ObjectExternalObject) {
21             TODO()
22         }
23 
deserializenull24         override fun deserialize(decoder: Decoder): ObjectExternalObject {
25             TODO()
26         }
27     }
28 
29     @Serializable(with = ObjectCustomClassSerializer::class)
30     object ObjectExternalClass
31 
32     class ObjectCustomClassSerializer: KSerializer<ObjectExternalClass> {
33         override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", StructureKind.OBJECT)
34 
serializenull35         override fun serialize(encoder: Encoder, value: ObjectExternalClass) {
36             TODO()
37         }
38 
deserializenull39         override fun deserialize(decoder: Decoder): ObjectExternalClass {
40             TODO()
41         }
42     }
43 
44     @Serializable
45     object PlainObject
46 
47     @Test
testPlainObjectnull48     fun testPlainObject() {
49         assertSame(PlainObject.serializer(), serializer<PlainObject>())
50     }
51 
52 
53     @Test
testObjectExternalObjectnull54     fun testObjectExternalObject() {
55         assertSame(ObjectCustomObjectSerializer, ObjectExternalObject.serializer())
56         assertSame(ObjectCustomObjectSerializer, serializer<ObjectExternalObject>())
57     }
58 
59     @Test
testObjectExternalClassnull60     fun testObjectExternalClass() {
61         assertIs<ObjectCustomClassSerializer>(ObjectExternalClass.serializer())
62         assertIs<ObjectCustomClassSerializer>(serializer<ObjectExternalClass>())
63     }
64 }
65