mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-13 16:16:46 +08:00
79 lines
1.8 KiB
Rust
79 lines
1.8 KiB
Rust
use super::*;
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
use lib0::encoding::Write;
|
|
|
|
fn test_var_uint_enc_dec(num: u64) {
|
|
let mut buf1 = Vec::new();
|
|
write_var_u64(&mut buf1, num).unwrap();
|
|
|
|
let mut buf2 = Vec::new();
|
|
buf2.write_var(num);
|
|
|
|
{
|
|
let (rest, decoded_num) = read_var_u64(&buf1).unwrap();
|
|
assert_eq!(num, decoded_num);
|
|
assert_eq!(rest.len(), 0);
|
|
}
|
|
|
|
{
|
|
let (rest, decoded_num) = read_var_u64(&buf2).unwrap();
|
|
assert_eq!(num, decoded_num);
|
|
assert_eq!(rest.len(), 0);
|
|
}
|
|
}
|
|
|
|
fn test_var_int_enc_dec(num: i32) {
|
|
{
|
|
let mut buf1: Vec<u8> = Vec::new();
|
|
write_var_i32(&mut buf1, num).unwrap();
|
|
|
|
let (rest, decoded_num) = read_var_i32(&buf1).unwrap();
|
|
assert_eq!(num, decoded_num);
|
|
assert_eq!(rest.len(), 0);
|
|
}
|
|
|
|
{
|
|
let mut buf2 = Vec::new();
|
|
buf2.write_var(num);
|
|
|
|
let (rest, decoded_num) = read_var_i32(&buf2).unwrap();
|
|
assert_eq!(num, decoded_num);
|
|
assert_eq!(rest.len(), 0);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_var_uint_codec() {
|
|
test_var_uint_enc_dec(0);
|
|
test_var_uint_enc_dec(1);
|
|
test_var_uint_enc_dec(127);
|
|
test_var_uint_enc_dec(0b1000_0000);
|
|
test_var_uint_enc_dec(0b1_0000_0000);
|
|
test_var_uint_enc_dec(0b1_1111_1111);
|
|
test_var_uint_enc_dec(0b10_0000_0000);
|
|
test_var_uint_enc_dec(0b11_1111_1111);
|
|
test_var_uint_enc_dec(0x7fff_ffff_ffff_ffff);
|
|
test_var_uint_enc_dec(u64::max_value());
|
|
}
|
|
|
|
#[test]
|
|
fn test_var_int() {
|
|
test_var_int_enc_dec(0);
|
|
test_var_int_enc_dec(1);
|
|
test_var_int_enc_dec(-1);
|
|
test_var_int_enc_dec(63);
|
|
test_var_int_enc_dec(-63);
|
|
test_var_int_enc_dec(64);
|
|
test_var_int_enc_dec(-64);
|
|
test_var_int_enc_dec(i32::MAX);
|
|
test_var_int_enc_dec(i32::MIN);
|
|
test_var_int_enc_dec(((1 << 20) - 1) * 8);
|
|
test_var_int_enc_dec(-((1 << 20) - 1) * 8);
|
|
}
|
|
}
|