Skip to content

Commit 1995071

Browse files
committed
Small test improvement
1 parent 0ca5675 commit 1995071

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

firebase-common/src/commonMain/kotlin/dev/gitlive/firebase/Polymorphic.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal fun <T> FirebaseEncoder.encodePolymorphically(
1616
value: T,
1717
ifPolymorphic: (String) -> Unit
1818
) {
19-
// If serializer is not an AbstractPolymorphicSerializer or if we are encoding this as a list, we can just use the regular serializer
19+
// If serializer is not an AbstractPolymorphicSerializer we can just use the regular serializer
2020
// This will result in calling structureEncoder for complicated structures
2121
// For PolymorphicKind this will first encode the polymorphic discriminator as a String and the remaining StructureKind.Class as a map of key-value pairs
2222
// This will result in a list structured like: (type, { classKey = classValue })
@@ -25,7 +25,6 @@ internal fun <T> FirebaseEncoder.encodePolymorphically(
2525
return
2626
}
2727

28-
// When doing Polymorphic Serialization with EncodeDecodeSettings.PolymorphicStructure.MAP we will use the polymorphic serializer of the class.
2928
val casted = serializer as AbstractPolymorphicSerializer<Any>
3029
val baseClassDiscriminator = serializer.descriptor.classDiscriminator()
3130
val actualSerializer = casted.findPolymorphicSerializer(this, value as Any)
@@ -38,7 +37,7 @@ internal fun <T> FirebaseDecoder.decodeSerializableValuePolymorphic(
3837
value: Any?,
3938
deserializer: DeserializationStrategy<T>,
4039
): T {
41-
// If deserializer is not an AbstractPolymorphicSerializer or if we are decoding this from a list, we can just use the regular serializer
40+
// If deserializer is not an AbstractPolymorphicSerializer we can just use the regular serializer
4241
if (deserializer !is AbstractPolymorphicSerializer<*>) {
4342
return deserializer.deserialize(this)
4443
}

firebase-common/src/commonMain/kotlin/dev/gitlive/firebase/decoders.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,7 @@ class FirebaseClassDecoder(
8787
override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
8888
return (index until descriptor.elementsCount)
8989
.firstOrNull {
90-
!descriptor.isElementOptional(it) || containsKey(
91-
descriptor.getElementName(
92-
it
93-
)
94-
)
90+
!descriptor.isElementOptional(it) || containsKey(descriptor.getElementName(it))
9591
}
9692
?.also { index = it + 1 }
9793
?: DECODE_DONE

firebase-common/src/commonTest/kotlin/dev/gitlive/firebase/EncodersTest.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ data class ImplementedClass(override val value: String, val otherValue: Boolean)
5858

5959
@Serializable
6060
data class NestedClass(
61+
val testData: TestData,
6162
val sealed: SealedClass,
6263
val abstract: AbstractClass,
6364
val sealedList: List<SealedClass>,
@@ -185,18 +186,21 @@ class EncodersTest {
185186
}
186187
}
187188

189+
val testData = TestData(mapOf("key" to "value"), mapOf(1 to 1), true, null, ValueClass(42))
188190
val sealedClass: SealedClass = SealedClass.Test("value")
189191
val abstractClass: AbstractClass = ImplementedClass("value", true)
190-
val nestedClass = NestedClass(sealedClass, abstractClass, listOf(sealedClass), listOf(abstractClass), mapOf(sealedClass to sealedClass), mapOf(abstractClass to abstractClass))
192+
val nestedClass = NestedClass(testData, sealedClass, abstractClass, listOf(sealedClass), listOf(abstractClass), mapOf(sealedClass to sealedClass), mapOf(abstractClass to abstractClass))
191193
val encoded = encode(NestedClass.serializer(), nestedClass) {
192194
encodeDefaults = true
193195
serializersModule = module
194196
}
195197

198+
val testDataEncoded = nativeMapOf("map" to nativeMapOf("key" to "value"), "otherMap" to nativeMapOf(1 to 1), "bool" to true, "nullableBool" to null, "valueClass" to 42)
196199
val sealedEncoded = nativeMapOf("type" to "test", "value" to "value")
197200
val abstractEncoded = nativeMapOf("type" to "implemented", "value" to "value", "otherValue" to true)
198201
nativeAssertEquals(
199202
nativeMapOf(
203+
"testData" to testDataEncoded,
200204
"sealed" to sealedEncoded,
201205
"abstract" to abstractEncoded,
202206
"sealedList" to nativeListOf(sealedEncoded),
@@ -337,9 +341,10 @@ class EncodersTest {
337341
}
338342
}
339343

344+
val testData = TestData(mapOf("key" to "value"), mapOf(1 to 1), true, null, ValueClass(42))
340345
val sealedClass: SealedClass = SealedClass.Test("value")
341346
val abstractClass: AbstractClass = ImplementedClass("value", true)
342-
val nestedClass = NestedClass(sealedClass, abstractClass, listOf(sealedClass), listOf(abstractClass), mapOf(sealedClass to sealedClass), mapOf(abstractClass to abstractClass))
347+
val nestedClass = NestedClass(testData, sealedClass, abstractClass, listOf(sealedClass), listOf(abstractClass), mapOf(sealedClass to sealedClass), mapOf(abstractClass to abstractClass))
343348
val encoded = encode(NestedClass.serializer(), nestedClass) {
344349
encodeDefaults = true
345350
serializersModule = module
@@ -353,10 +358,12 @@ class EncodersTest {
353358
it.copy(sealed = SealedClass.Test("newValue"))
354359
}
355360

361+
val testDataEncoded = nativeMapOf("map" to nativeMapOf("key" to "value"), "otherMap" to nativeMapOf(1 to 1), "bool" to true, "nullableBool" to null, "valueClass" to 42)
356362
val sealedEncoded = nativeMapOf("type" to "test", "value" to "value")
357363
val abstractEncoded = nativeMapOf("type" to "implemented", "value" to "value", "otherValue" to true)
358364
nativeAssertEquals(
359365
nativeMapOf(
366+
"testData" to testDataEncoded,
360367
"sealed" to nativeMapOf("type" to "test", "value" to "newValue"),
361368
"abstract" to abstractEncoded,
362369
"sealedList" to nativeListOf(sealedEncoded),

0 commit comments

Comments
 (0)