Commit 9d206d1a authored by Him188's avatar Him188

Fix nested struct list deserializing

parent d8eb2e12
...@@ -496,9 +496,7 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo ...@@ -496,9 +496,7 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo
@PublishedApi @PublishedApi
internal val input: IoBuffer internal val input: IoBuffer
) : Closeable { ) : Closeable {
override fun close() { override fun close() = IoBuffer.Pool.recycle(input)
input.close()
}
@PublishedApi @PublishedApi
internal fun readHead(): JceHead = input.readHead() ?: error("no enough data to read head") internal fun readHead(): JceHead = input.readHead() ?: error("no enough data to read head")
......
...@@ -13,7 +13,7 @@ import kotlin.test.assertEquals ...@@ -13,7 +13,7 @@ import kotlin.test.assertEquals
class JceDecoderTest { class JceDecoderTest {
@Serializable @Serializable
class TestSimpleJceStruct( data class TestSimpleJceStruct(
@SerialId(0) val string: String = "123", @SerialId(0) val string: String = "123",
@SerialId(1) val byte: Byte = 123, @SerialId(1) val byte: Byte = 123,
@SerialId(2) val short: Short = 123, @SerialId(2) val short: Short = 123,
...@@ -182,8 +182,8 @@ class JceDecoderTest { ...@@ -182,8 +182,8 @@ class JceDecoderTest {
@Test @Test
fun testNestedStruct() { fun testNestedStruct() {
@Serializable @Serializable
class OuterStruct( data class OuterStruct(
@SerialId(0) val innerSturctList: List<TestSimpleJceStruct> @SerialId(0) val innerStructList: List<TestSimpleJceStruct>
) : JceStruct ) : JceStruct
assertEquals( assertEquals(
...@@ -192,6 +192,15 @@ class JceDecoderTest { ...@@ -192,6 +192,15 @@ class JceDecoderTest {
}.readBytes().toUHexString(), }.readBytes().toUHexString(),
OuterStruct(listOf(TestSimpleJceStruct(), TestSimpleJceStruct())).toByteArray(OuterStruct.serializer()).toUHexString() OuterStruct(listOf(TestSimpleJceStruct(), TestSimpleJceStruct())).toByteArray(OuterStruct.serializer()).toUHexString()
) )
//println(OuterStruct(listOf(TestSimpleJceStruct(), TestSimpleJceStruct())).toByteArray(OuterStruct.serializer()).loadAs(OuterStruct.serializer()))
assertEquals(
OuterStruct(
listOf(
TestSimpleJceStruct(),
TestSimpleJceStruct()
)
).toByteArray(OuterStruct.serializer()).loadAs(OuterStruct.serializer()).contentToString(),
OuterStruct(listOf(TestSimpleJceStruct(), TestSimpleJceStruct())).contentToString()
)
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment