#[cfg(test)]
mod tests {
use gaia_binary::*;
use std::io::Cursor;
#[test]
fn test_fixed_endianness() {
let mut buf = Vec::new();
let mut writer = BinaryWriter::<_, Fixed<LittleEndian>>::new(&mut buf);
writer.write_u32(0x12345678).unwrap();
assert_eq!(buf, vec![0x78, 0x56, 0x34, 0x12]);
let mut reader = BinaryReader::<_, Fixed<LittleEndian>>::new(Cursor::new(buf));
assert_eq!(reader.read_u32().unwrap(), 0x12345678);
}
#[test]
fn test_leb128_unsigned() {
let mut buf = Vec::new();
let mut writer = BinaryWriter::<_, Leb128>::new(&mut buf);
writer.write_u32(127).unwrap();
writer.write_u32(128).unwrap();
assert_eq!(buf, vec![127, 0x80, 0x01]);
let mut reader = BinaryReader::<_, Leb128>::new(Cursor::new(buf));
assert_eq!(reader.read_u32().unwrap(), 127);
assert_eq!(reader.read_u32().unwrap(), 128);
}
#[test]
fn test_zigzag_leb128() {
let mut buf = Vec::new();
let mut writer = BinaryWriter::<_, ZigZag<Leb128>>::new(&mut buf);
writer.write_i32(0).unwrap(); writer.write_i32(-1).unwrap(); writer.write_i32(1).unwrap(); writer.write_i32(-2).unwrap();
assert_eq!(buf, vec![0, 1, 2, 3]);
let mut reader = BinaryReader::<_, ZigZag<Leb128>>::new(Cursor::new(buf));
assert_eq!(reader.read_i32().unwrap(), 0);
assert_eq!(reader.read_i32().unwrap(), -1);
assert_eq!(reader.read_i32().unwrap(), 1);
assert_eq!(reader.read_i32().unwrap(), -2);
}
#[test]
fn test_position_tracking() {
let mut buf = Vec::new();
let mut writer = BinaryWriter::<_, Leb128>::new(&mut buf);
writer.write_u32(127).unwrap(); assert_eq!(writer.position(), 1);
writer.write_u32(128).unwrap(); assert_eq!(writer.position(), 3);
let mut reader = BinaryReader::<_, Leb128>::new(Cursor::new(buf));
reader.read_u32().unwrap();
assert_eq!(reader.position(), 1);
reader.read_u32().unwrap();
assert_eq!(reader.position(), 3);
}
}