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