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)
|
||||
}
|
||||
|
||||
fun writeVarUInt(value: UInt) { Varint.encodeUnsigned(value.toULong())}
|
||||
fun writeVarInt(value: UInt) { Varint.encodeSigned(value.toLong())}
|
||||
fun writeSmartUInt(value: UInt) { Smartint.encodeUnsigned(value.toULong())}
|
||||
fun writeSmartInt(value: UInt) { Smartint.encodeSigned(value.toLong())}
|
||||
fun writeVarUInt(value: UInt) { Varint.encodeUnsigned(value.toULong(), this)}
|
||||
fun writeVarInt(value: UInt) { Varint.encodeSigned(value.toLong(), this)}
|
||||
fun writeSmartUInt(value: UInt) { Smartint.encodeUnsigned(value.toULong(), this)}
|
||||
fun writeSmartInt(value: UInt) { Smartint.encodeSigned(value.toLong(), this)}
|
||||
}
|
||||
|
||||
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
|
||||
if (remainder > 0) {
|
||||
if( remainder < lineSize/2) b.append(' ')
|
||||
var cnt = lineSize - remainder
|
||||
while (cnt-- > 0) b.append(' ')
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ class BipackDecoder(val input: DataSource, var elementsCount: Int = 0,val isColl
|
||||
var count = descriptor.elementsCount
|
||||
for (a in descriptor.annotations) {
|
||||
if (a is Extendable)
|
||||
count = source.readSmartUInt().toInt()
|
||||
count = source.readVarUInt().toInt()
|
||||
else if (a is Framed) {
|
||||
val code = CRC.crc32(descriptor.serialName.encodeToByteArray())
|
||||
// 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())
|
||||
)
|
||||
} else if (a is Extendable) {
|
||||
sink.writeSmartUInt(descriptor.elementsCount.toUInt())
|
||||
sink.writeVarUInt(descriptor.elementsCount.toUInt())
|
||||
}
|
||||
}
|
||||
return BipackEncoder(sink)
|
||||
|
@ -64,14 +64,12 @@ class BipackEncoderTest {
|
||||
@Test
|
||||
fun encodeExtendable() {
|
||||
val a = Foobar1(1, 2)//, "bum")
|
||||
println(BipackEncoder.encode(a).toDump())
|
||||
val b = BipackDecoder.decode<Foobar1>(BipackEncoder.encode(a))
|
||||
assertEquals(3, BipackEncoder.encode(a).size)
|
||||
assertEquals(a, b)
|
||||
println(b)
|
||||
val c = BipackDecoder.decode<Foobar2>(BipackEncoder.encode(a))
|
||||
// assertEquals(-1, c.other)
|
||||
// assertEquals(a.bar, c.bar)
|
||||
assertEquals(-1, c.other)
|
||||
assertEquals(a.bar, c.bar)
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -220,7 +218,7 @@ class BipackEncoderTest {
|
||||
// @Test
|
||||
@Test
|
||||
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)
|
||||
println(d.toDump())
|
||||
println(t1)
|
||||
@ -229,6 +227,33 @@ class BipackEncoderTest {
|
||||
// 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
|
||||
// @CrcProtected
|
||||
// @Framed
|
||||
|
Loading…
Reference in New Issue
Block a user