#![doc = include_str!("../README.md")]
#![feature(min_specialization)]
#![feature(error_generic_member_access)]
mod definitions;
pub mod impls;
mod serializable_uuid;
pub use azalea_buf_macros::*;
pub use definitions::*;
pub use impls::*;
pub use serializable_uuid::*;
const MAX_STRING_LENGTH: u32 = 32767;
#[cfg(test)]
mod tests {
use std::{collections::HashMap, io::Cursor};
use super::*;
#[test]
fn test_write_varint() {
let mut buf = Vec::new();
0.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![0]);
let mut buf = Vec::new();
1.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![1]);
let mut buf = Vec::new();
2.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![2]);
let mut buf = Vec::new();
127.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![127]);
let mut buf = Vec::new();
128.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![128, 1]);
let mut buf = Vec::new();
255.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![255, 1]);
let mut buf = Vec::new();
25565.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![221, 199, 1]);
let mut buf = Vec::new();
2097151.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![255, 255, 127]);
let mut buf = Vec::new();
2147483647.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![255, 255, 255, 255, 7]);
let mut buf = Vec::new();
(-1).azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![255, 255, 255, 255, 15]);
let mut buf = Vec::new();
(-2147483648).azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![128, 128, 128, 128, 8]);
}
#[test]
fn test_read_varint() {
let buf = vec![0];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 0);
let buf = vec![1];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 1);
let buf = vec![2];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 2);
let buf = vec![127];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 127);
let buf = vec![128, 1];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 128);
let buf = vec![255, 1];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 255);
let buf = vec![221, 199, 1];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 25565);
let buf = vec![255, 255, 127];
assert_eq!(
i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(),
2097151
);
let buf = vec![255, 255, 255, 255, 7];
assert_eq!(
i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(),
2147483647
);
let buf = vec![255, 255, 255, 255, 15];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), -1);
let buf = vec![128, 128, 128, 128, 8];
assert_eq!(
i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(),
-2147483648
);
}
#[test]
fn test_read_varint_longer() {
let buf = vec![138, 56, 0, 135, 56, 123];
assert_eq!(i32::azalea_read_var(&mut Cursor::new(&buf)).unwrap(), 7178);
}
#[test]
fn test_write_varlong() {
let mut buf = Vec::new();
0u64.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![0]);
let mut buf = Vec::new();
1u64.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![1]);
let mut buf = Vec::new();
9223372036854775807u64.azalea_write_var(&mut buf).unwrap();
assert_eq!(buf, vec![255, 255, 255, 255, 255, 255, 255, 255, 127]);
}
#[test]
fn test_list() {
let original_vec = vec!["a".to_owned(), "bc".to_owned(), "def".to_owned()];
let mut buf = Vec::new();
original_vec.azalea_write(&mut buf).unwrap();
dbg!(&buf);
let result = Vec::<String>::azalea_read(&mut Cursor::new(&buf)).unwrap();
assert_eq!(result, original_vec);
}
#[test]
fn test_int_id_list() {
let mut buf = Vec::new();
vec![1, 2, 3].azalea_write_var(&mut buf).unwrap();
let result = Vec::<i32>::azalea_read_var(&mut Cursor::new(&buf)).unwrap();
assert_eq!(result, vec![1, 2, 3]);
}
#[test]
fn test_map() {
let original_map = HashMap::from([
("a".to_owned(), 1),
("bc".to_owned(), 23),
("def".to_owned(), 456),
]);
let mut buf = Vec::new();
original_map.azalea_write_var(&mut buf).unwrap();
let result = HashMap::<String, i32>::azalea_read_var(&mut Cursor::new(&buf)).unwrap();
assert_eq!(result, original_map);
}
#[test]
fn test_long() {
let mut buf: Vec<u8> = Vec::new();
123456u64.azalea_write(&mut buf).unwrap();
assert_eq!(u64::azalea_read(&mut Cursor::new(&buf)).unwrap(), 123456);
}
}