diff options
Diffstat (limited to 'core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt')
-rw-r--r-- | core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt | 61 |
1 files changed, 31 insertions, 30 deletions
diff --git a/core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt b/core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt index 4fb61b04..5f5a6f7b 100644 --- a/core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt +++ b/core/commonTest/src/kotlinx/serialization/SerializersLookupEnumTest.kt @@ -6,6 +6,7 @@ package kotlinx.serialization import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.* +import kotlinx.serialization.internal.EnumSerializer import kotlinx.serialization.test.* import kotlin.test.* @@ -15,8 +16,7 @@ class SerializersLookupEnumTest { @Serializable(with = EnumExternalObjectSerializer::class) enum class EnumExternalObject - @Serializer(forClass = EnumExternalObject::class) - object EnumExternalObjectSerializer { + object EnumExternalObjectSerializer: KSerializer<EnumExternalObject> { override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", SerialKind.ENUM) override fun serialize(encoder: Encoder, value: EnumExternalObject) { @@ -28,11 +28,10 @@ class SerializersLookupEnumTest { } } - @Serializable(with = EnumExternalClassSerializer::class) + @Serializable(with = EnumCustomClassSerializer::class) enum class EnumExternalClass - @Serializer(forClass = EnumExternalClass::class) - class EnumExternalClassSerializer { + class EnumCustomClassSerializer: KSerializer<EnumExternalClass> { override val descriptor: SerialDescriptor = buildSerialDescriptor("tmp", SerialKind.ENUM) override fun serialize(encoder: Encoder, value: EnumExternalClass) { @@ -44,45 +43,47 @@ class SerializersLookupEnumTest { } } - @Polymorphic - enum class EnumPolymorphic - @Serializable enum class PlainEnum + @Serializable + enum class SerializableEnum { C, D } + + @Serializable + enum class SerializableMarkedEnum { C, @SerialName("NotD") D } + @Test fun testPlainEnum() { - assertEquals(PlainEnum.serializer(), serializer<PlainEnum>()) + assertSame(PlainEnum.serializer(), serializer<PlainEnum>()) + + if (!isJs()) { + assertIs<EnumSerializer<PlainEnum>>(serializer<PlainEnum>()) + } } @Test - fun testEnumExternalObject() { - assertSame(EnumExternalObjectSerializer, EnumExternalObject.serializer()) - assertSame(EnumExternalObjectSerializer, serializer<EnumExternalObject>()) + fun testSerializableEnumSerializer() { + assertIs<EnumSerializer<SerializableEnum>>(SerializableEnum.serializer()) + + assertSame(SerializableEnum.serializer(), serializer<SerializableEnum>()) } @Test - fun testEnumExternalClass() { - assertIs<EnumExternalClassSerializer>(EnumExternalClass.serializer()) + fun testSerializableMarkedEnumSerializer() { + assertIs<EnumSerializer<SerializableMarkedEnum>>(SerializableMarkedEnum.serializer()) - if (isJvm()) { - assertIs<EnumExternalClassSerializer>(serializer<EnumExternalClass>()) - } else if (isJsIr() || isNative()) { - // FIXME serializer<EnumWithClassSerializer> is broken for K/JS and K/Native. Remove `assertFails` after fix - assertFails { serializer<EnumExternalClass>() } - } + assertSame(SerializableMarkedEnum.serializer(), serializer<SerializableMarkedEnum>()) } @Test - fun testEnumPolymorphic() { - if (isJvm()) { - assertEquals( - PolymorphicSerializer(EnumPolymorphic::class).descriptor, - serializer<EnumPolymorphic>().descriptor - ) - } else { - // FIXME serializer<PolymorphicEnum> is broken for K/JS and K/Native. Remove `assertFails` after fix - assertFails { serializer<EnumPolymorphic>() } - } + fun testEnumExternalObject() { + assertSame(EnumExternalObjectSerializer, EnumExternalObject.serializer()) + assertSame(EnumExternalObjectSerializer, serializer<EnumExternalObject>()) + } + + @Test + fun testEnumExternalClass() { + assertIs<EnumCustomClassSerializer>(EnumExternalClass.serializer()) + assertIs<EnumCustomClassSerializer>(serializer<EnumExternalClass>()) } } |