1 package kotlinx.serialization 2 3 import kotlinx.serialization.test.* 4 import kotlin.test.* 5 6 class SerializersLookupInterfaceTest { 7 8 interface I 9 10 @Polymorphic 11 interface I2 12 13 @Suppress("SERIALIZER_TYPE_INCOMPATIBLE") 14 @Serializable(PolymorphicSerializer::class) 15 interface I3 16 17 @Serializable 18 @SerialName("S") 19 sealed interface S 20 21 // TODO: not working because (see #1207, plugin does not produce companion object for interfaces) 22 // We even have #1853 with tests for that 23 // @Serializable(ExternalSerializer::class) 24 // interface External 25 26 27 @Test testSealedInterfaceLookupnull28 fun testSealedInterfaceLookup() { 29 val serializer = serializer<S>() 30 assertTrue(serializer is SealedClassSerializer) 31 assertEquals("S", serializer.descriptor.serialName) 32 } 33 34 @Test testInterfaceLookupnull35 fun testInterfaceLookup() { 36 // Native does not have KClass.isInterface 37 if (isNative() || isWasm()) return 38 39 val serializer1 = serializer<I>() 40 assertTrue(serializer1 is PolymorphicSerializer) 41 assertEquals("kotlinx.serialization.Polymorphic<I>", serializer1.descriptor.serialName) 42 43 val serializer2 = serializer<I2>() 44 assertTrue(serializer2 is PolymorphicSerializer) 45 assertEquals("kotlinx.serialization.Polymorphic<I2>", serializer2.descriptor.serialName) 46 47 val serializer3 = serializer<I3>() 48 assertTrue(serializer3 is PolymorphicSerializer) 49 assertEquals("kotlinx.serialization.Polymorphic<I3>", serializer3.descriptor.serialName) 50 } 51 } 52