use crate::minecraft::varint::{ varint_read, varint_write }; use std::collections::VecDeque; #[test] fn test_varint_no_interfere_other_values() { let mut buf: VecDeque = 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 = 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 = 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 = vec![0x0].into(); let res_zero = varint_read(&mut buf); let mut buf: VecDeque = vec![0xff, 0xff, 0xff, 0xff, 0x07].into(); let res_max_int = varint_read(&mut buf); let mut buf: VecDeque = 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]) }