1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

leb128: make decoding return the number of decoded bytes, in addition to the decoded value (#17912)

This commit is contained in:
Surman The Dead
2023-04-09 09:32:49 +02:00
committed by GitHub
parent abe0ad886b
commit b772731b98
2 changed files with 24 additions and 16 deletions

View File

@@ -13,9 +13,13 @@ struct PairI {
fn test_basic() {
assert leb128.encode_u64(624485) == [u8(0xe5), 0x8e, 0x26]
assert leb128.decode_u64([u8(0xe5), 0x8e, 0x26]) == 624485
uval, ulen := leb128.decode_u64([u8(0xe5), 0x8e, 0x26])
assert uval == 624485, 'val, _ := leb128.decode_u64([u8(0xe5), 0x8e, 0x26]) == 624486'
assert ulen == 3, '_, len := leb128.decode_u64([u8(0xe5), 0x8e, 0x26]) == 3'
assert leb128.encode_i64(-123456) == [u8(0xc0), 0xbb, 0x78]
assert leb128.decode_i64([u8(0xc0), 0xbb, 0x78]) == -123456
sval, slen := leb128.decode_i64([u8(0xc0), 0xbb, 0x78])
assert sval == -123456, 'val, _ := leb128.decode_i64([u8(0xc0), 0xbb, 0x78]) == -123456'
assert slen == 3, '_, len := leb128.decode_i64([u8(0xc0), 0xbb, 0x78]) == 3'
}
fn test_unsigned_data() {
@@ -23,7 +27,9 @@ fn test_unsigned_data() {
assert leb128.encode_u64(x.value).hex() == x.encoded, 'leb128.encode_u64( ${x.value} ) == ${x.encoded}'
bytes := hex.decode(x.encoded)!
// eprintln('>> bytes: ${bytes} | pair: ${x}')
assert leb128.decode_u64(bytes) == x.value, 'leb128.decode_u64( ${x.encoded} ) == ${x.value}'
val, len := leb128.decode_u64(bytes)
assert val == x.value, 'val, _ := leb128.decode_u64( ${x.encoded} ) == ${x.value}'
assert len == bytes.len, '_, len := leb128.decode_u64( ${x.encoded} ) = ${bytes.len}'
}
}
@@ -32,7 +38,9 @@ fn test_signed_data() {
assert leb128.encode_i64(x.value).hex() == x.encoded, 'k: ${x.value} | v: ${x.encoded}'
bytes := hex.decode(x.encoded)!
// eprintln('>> bytes: ${bytes} | pair: ${x}')
assert leb128.decode_i64(bytes) == x.value, 'leb128.decode_i64( ${x.encoded} ) == ${x.value}'
val, len := leb128.decode_i64(bytes)
assert val == x.value, 'val, _ := leb128.decode_i64( ${x.encoded} ) == ${x.value}'
assert len == bytes.len, '_, len := leb128.decode_i64( ${x.encoded} ) == ${x.value}'
}
}