add more tests and fixed more glitches
This commit is contained in:
parent
2823692b03
commit
d97de2c3ea
@ -23,10 +23,10 @@ interface DataSink {
|
|||||||
for(d in data) writeByte(d)
|
for(d in data) writeByte(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun writeVarUInt(value: UInt) { Varint.encodeUnsigned(value.toULong())}
|
fun writeVarUInt(value: UInt) { Varint.encodeUnsigned(value.toULong(), this)}
|
||||||
fun writeVarInt(value: UInt) { Varint.encodeSigned(value.toLong())}
|
fun writeVarInt(value: UInt) { Varint.encodeSigned(value.toLong(), this)}
|
||||||
fun writeSmartUInt(value: UInt) { Smartint.encodeUnsigned(value.toULong())}
|
fun writeSmartUInt(value: UInt) { Smartint.encodeUnsigned(value.toULong(), this)}
|
||||||
fun writeSmartInt(value: UInt) { Smartint.encodeSigned(value.toLong())}
|
fun writeSmartInt(value: UInt) { Smartint.encodeSigned(value.toLong(), this)}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T:Any>DataSink.writeNumber(value: T) {
|
inline fun <reified T:Any>DataSink.writeNumber(value: T) {
|
||||||
|
@ -112,6 +112,7 @@ fun ByteArray.toDumpLines(wide: Boolean = false): List<String> {
|
|||||||
}
|
}
|
||||||
val remainder = from % lineSize
|
val remainder = from % lineSize
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
|
if( remainder < lineSize/2) b.append(' ')
|
||||||
var cnt = lineSize - remainder
|
var cnt = lineSize - remainder
|
||||||
while (cnt-- > 0) b.append(' ')
|
while (cnt-- > 0) b.append(' ')
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ class BipackDecoder(val input: DataSource, var elementsCount: Int = 0,val isColl
|
|||||||
var count = descriptor.elementsCount
|
var count = descriptor.elementsCount
|
||||||
for (a in descriptor.annotations) {
|
for (a in descriptor.annotations) {
|
||||||
if (a is Extendable)
|
if (a is Extendable)
|
||||||
count = source.readSmartUInt().toInt()
|
count = source.readVarUInt().toInt()
|
||||||
else if (a is Framed) {
|
else if (a is Framed) {
|
||||||
val code = CRC.crc32(descriptor.serialName.encodeToByteArray())
|
val code = CRC.crc32(descriptor.serialName.encodeToByteArray())
|
||||||
// if we fail to read CRC, it is IO error, so DataSource.EndOfData will be
|
// if we fail to read CRC, it is IO error, so DataSource.EndOfData will be
|
||||||
|
@ -73,7 +73,7 @@ class BipackEncoder(val output: DataSink) : AbstractEncoder() {
|
|||||||
CRC.crc32(descriptor.serialName.encodeToByteArray())
|
CRC.crc32(descriptor.serialName.encodeToByteArray())
|
||||||
)
|
)
|
||||||
} else if (a is Extendable) {
|
} else if (a is Extendable) {
|
||||||
sink.writeSmartUInt(descriptor.elementsCount.toUInt())
|
sink.writeVarUInt(descriptor.elementsCount.toUInt())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return BipackEncoder(sink)
|
return BipackEncoder(sink)
|
||||||
|
@ -64,14 +64,12 @@ class BipackEncoderTest {
|
|||||||
@Test
|
@Test
|
||||||
fun encodeExtendable() {
|
fun encodeExtendable() {
|
||||||
val a = Foobar1(1, 2)//, "bum")
|
val a = Foobar1(1, 2)//, "bum")
|
||||||
println(BipackEncoder.encode(a).toDump())
|
|
||||||
val b = BipackDecoder.decode<Foobar1>(BipackEncoder.encode(a))
|
val b = BipackDecoder.decode<Foobar1>(BipackEncoder.encode(a))
|
||||||
assertEquals(3, BipackEncoder.encode(a).size)
|
assertEquals(3, BipackEncoder.encode(a).size)
|
||||||
assertEquals(a, b)
|
assertEquals(a, b)
|
||||||
println(b)
|
|
||||||
val c = BipackDecoder.decode<Foobar2>(BipackEncoder.encode(a))
|
val c = BipackDecoder.decode<Foobar2>(BipackEncoder.encode(a))
|
||||||
// assertEquals(-1, c.other)
|
assertEquals(-1, c.other)
|
||||||
// assertEquals(a.bar, c.bar)
|
assertEquals(a.bar, c.bar)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -220,7 +218,7 @@ class BipackEncoderTest {
|
|||||||
// @Test
|
// @Test
|
||||||
@Test
|
@Test
|
||||||
fun testMaps() {
|
fun testMaps() {
|
||||||
val t1 = mapOf("foo" to "f1", "bar" to "b1", "bazz" to "b3")//f=17f/7f)
|
val t1 = mapOf("foo bar" to "f1", "bar" to "b1", "bazz" to "b3")//f=17f/7f)
|
||||||
val d = BipackEncoder.encode(t1)
|
val d = BipackEncoder.encode(t1)
|
||||||
println(d.toDump())
|
println(d.toDump())
|
||||||
println(t1)
|
println(t1)
|
||||||
@ -229,6 +227,33 @@ class BipackEncoderTest {
|
|||||||
// assertEquals(t1, d.decodeFromBipack())
|
// assertEquals(t1, d.decodeFromBipack())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testMaps2() {
|
||||||
|
// val t1 = mapOf("foo" to Foobar1N(7))
|
||||||
|
val t1 = mapOf("foo" to Foobar1N(7), "bar" to Foobar1N(14), "bazz" to Foobar1N(77))//f=17f/7f)
|
||||||
|
val d = BipackEncoder.encode(t1)
|
||||||
|
println(d.toDump())
|
||||||
|
println(t1)
|
||||||
|
println(BipackDecoder.decode<Map<String,Foobar1N>>(d))
|
||||||
|
// println(d.decodeFromBipack<Map<String,String>>())
|
||||||
|
// assertEquals(t1, d.decodeFromBipack())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testMaps3() {
|
||||||
|
println(BipackEncoder.encode(Foobar1(1)).toDump())
|
||||||
|
println(BipackEncoder.encode(Foobar1(1)).decodeFromBipack<Foobar1>())
|
||||||
|
// val t1 = mapOf("foo" to Foobar1N(7))
|
||||||
|
val t1 = mapOf("foo" to Foobar1(7), "bar" to Foobar1(14), "bazz" to Foobar1(77))//f=17f/7f)
|
||||||
|
val d = BipackEncoder.encode(t1)
|
||||||
|
println(d.toDump())
|
||||||
|
println(t1)
|
||||||
|
println(BipackDecoder.decode<Map<String,Foobar1>>(d))
|
||||||
|
// println(d.decodeFromBipack<Map<String,String>>())
|
||||||
|
// assertEquals(t1, d.decodeFromBipack())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
// @CrcProtected
|
// @CrcProtected
|
||||||
// @Framed
|
// @Framed
|
||||||
|
Loading…
Reference in New Issue
Block a user