62 lines
1.6 KiB
Rust
62 lines
1.6 KiB
Rust
use crate::minecraft::varint::{ varint_read, varint_write };
|
|
use std::collections::VecDeque;
|
|
|
|
|
|
#[test]
|
|
fn test_varint_no_interfere_other_values() {
|
|
let mut buf: VecDeque<u8> = vec![123, 0x28, 0x21].into();
|
|
let _ = varint_read(&mut buf);
|
|
|
|
assert_eq!(buf, vec![0x28, 0x21]);
|
|
}
|
|
|
|
#[test]
|
|
fn test_varint_right_answer() {
|
|
let mut buf: VecDeque<u8> = vec![0xa8, 0x60].into();
|
|
let res = varint_read(&mut buf);
|
|
|
|
assert_eq!(buf.len(), 0);
|
|
assert_eq!(res, Ok(12328));
|
|
}
|
|
|
|
#[test]
|
|
fn test_varint_incomplete() {
|
|
let mut buf: VecDeque<u8> = vec![0xa8].into();
|
|
let res = varint_read(&mut buf);
|
|
|
|
assert_eq!(buf.len(), 0);
|
|
assert_eq!(res.is_err(), true);
|
|
}
|
|
#[test]
|
|
fn test_varint_limits() {
|
|
let mut buf: VecDeque<u8> = vec![0x0].into();
|
|
let res_zero = varint_read(&mut buf);
|
|
|
|
let mut buf: VecDeque<u8> = vec![0xff, 0xff, 0xff, 0xff, 0x07].into();
|
|
let res_max_int = varint_read(&mut buf);
|
|
|
|
let mut buf: VecDeque<u8> = vec![0x80, 0x80, 0x80, 0x80, 0x8].into();
|
|
let res_min_int = varint_read(&mut buf);
|
|
|
|
assert_eq!(buf.len(), 0);
|
|
assert_eq!(res_zero, Ok(0));
|
|
assert_eq!(res_max_int, Ok(2147483647));
|
|
assert_eq!(res_min_int, Ok(-2147483648));
|
|
}
|
|
|
|
#[test]
|
|
fn test_varint_write_normal() {
|
|
let res = varint_write(82149);
|
|
assert_eq!(res, vec![0xe5, 0x81, 0x05]);
|
|
}
|
|
#[test]
|
|
fn test_varint_write_limits() {
|
|
let res_zero = varint_write(0);
|
|
let res_max_int = varint_write(2147483647);
|
|
let res_min_int = varint_write(-2147483648);
|
|
|
|
assert_eq!(res_zero, vec![0x00]);
|
|
assert_eq!(res_max_int, vec![0xff, 0xff, 0xff, 0xff, 0x07]);
|
|
assert_eq!(res_min_int, vec![0x80, 0x80, 0x80, 0x80, 0x8])
|
|
}
|