Skip to content

Commit 7a2ae5d

Browse files
committed
Add value class fix
1 parent 59b4522 commit 7a2ae5d

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ class FirebaseEncoder(
127127
this.value = value
128128
}
129129

130-
override fun encodeInline(descriptor: SerialDescriptor): Encoder =
131-
FirebaseEncoder(settings)
130+
override fun encodeInline(descriptor: SerialDescriptor): Encoder = this
132131

133132
override fun <T> encodeSerializableValue(serializer: SerializationStrategy<T>, value: T) {
134133
encodePolymorphically(serializer, value) {

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.serialization.builtins.MapSerializer
1111
import kotlinx.serialization.builtins.serializer
1212
import kotlinx.serialization.modules.SerializersModule
1313
import kotlinx.serialization.modules.polymorphic
14+
import kotlin.jvm.JvmInline
1415
import kotlin.test.Test
1516
import kotlin.test.assertEquals
1617

@@ -55,6 +56,13 @@ data class NestedClass(
5556
val abstractMap: Map<AbstractClass, AbstractClass>
5657
)
5758

59+
@Serializable
60+
@JvmInline
61+
value class ValueClass(val int: Int)
62+
63+
@Serializable
64+
data class ValueClassWrapper(val value: ValueClass)
65+
5866
class EncodersTest {
5967

6068
@Test
@@ -191,6 +199,28 @@ class EncodersTest {
191199
assertEquals(nestedClass, decoded)
192200
}
193201

202+
@Test
203+
fun encodeDecodeValueClassWrapper() {
204+
val testValueClassWrapper = ValueClassWrapper(ValueClass(42))
205+
val encoded = encode(ValueClassWrapper.serializer(), testValueClassWrapper) { encodeDefaults = false }
206+
207+
nativeAssertEquals(nativeMapOf("value" to 42), encoded)
208+
209+
val decoded = decode(ValueClassWrapper.serializer(), encoded)
210+
assertEquals(testValueClassWrapper, decoded)
211+
}
212+
213+
@Test
214+
fun encodeDecodeValueClass() {
215+
val testValueClass = ValueClass(42)
216+
val encoded = encode(ValueClass.serializer(), testValueClass) { encodeDefaults = false }
217+
218+
nativeAssertEquals(42, encoded)
219+
220+
val decoded = decode(ValueClass.serializer(), encoded)
221+
assertEquals(testValueClass, decoded)
222+
}
223+
194224
@Test
195225
fun reencodeTransformationList() {
196226
val reencoded = reencodeTransformation<List<String>>(nativeListOf("One", "Two", "Three")) {

0 commit comments

Comments
 (0)