#![allow(non_snake_case)]
pub mod Buffer;
pub mod ByteOrder;
#[cfg(test)]
mod tests {
use std::{fs::File, io::Write};
use super::Buffer::Buffer;
#[test]
fn read_single_byte() {
let mut buffer = Buffer::new();
let value = 0x01;
buffer.write_byte(value);
let res = buffer.read_byte();
assert_eq!(res, Some(value));
}
#[test]
fn read_bytes() {
let mut buffer = Buffer::new();
let value = Vec::from([0x01, 0x02, 0x03, 0x04]);
buffer.write_bytes(&value);
let res = buffer.read_bytes(4);
assert_eq!(res, Some(value));
}
#[test]
fn read_bool() {
let mut buffer = Buffer::new();
let value = 0x1;
buffer.write_byte(value);
let res = buffer.read_boolean();
assert_eq!(res, Some(value == 0x1));
}
#[test]
fn read_i8() {
let mut buffer = Buffer::new();
let value = 0x01;
buffer.write_i8(value);
let res = buffer.read_i8();
assert_eq!(res, Some(value));
}
#[test]
fn read_i16() {
let mut buffer = Buffer::new();
let value = 0x0102;
buffer.write_i16(value);
let res = buffer.read_i16();
assert_eq!(res, Some(value));
}
#[test]
fn read_i32() {
let mut buffer = Buffer::new();
let value = 0x01020304;
buffer.write_i32(value);
let res = buffer.read_i32();
assert_eq!(res, Some(value));
}
#[test]
fn read_i64() {
let mut buffer = Buffer::new();
let value = 0x0102030405060708;
buffer.write_i64(value);
let res = buffer.read_i64();
assert_eq!(res, Some(value));
}
#[test]
fn read_u8() {
let mut buffer = Buffer::new();
let value = 0x01;
buffer.write_u8(value);
let res = buffer.read_u8();
assert_eq!(res, Some(value));
}
#[test]
fn read_u16() {
let mut buffer = Buffer::new();
let value = 0x0102;
buffer.write_u16(value);
let res = buffer.read_u16();
assert_eq!(res, Some(value));
}
#[test]
fn read_u32() {
let mut buffer = Buffer::new();
let value = 0x01020304;
buffer.write_u32(value);
let res = buffer.read_u32();
assert_eq!(res, Some(value));
}
#[test]
fn read_u64() {
let mut buffer = Buffer::new();
let value = 0x0102030405060708;
buffer.write_u64(value);
let res = buffer.read_u64();
assert_eq!(res, Some(value));
}
#[test]
fn read_varint() {
let mut buffer = Buffer::new();
let value = 0x0102030405060708;
buffer.write_varint(value);
let res = buffer.read_varint();
assert_eq!(res, Some(value));
}
#[test]
fn read_f32() {
let mut buffer = Buffer::new();
let value = 1.0_f32;
buffer.write_f32(value);
let res = buffer.read_f32();
assert_eq!(res, Some(value));
}
#[test]
fn read_f64() {
let mut buffer = Buffer::new();
let value = 1.0_f64;
buffer.write_f64(value);
let res = buffer.read_f64();
assert_eq!(res, Some(value));
}
#[test]
fn read_null_terminated_string() {
let mut buffer = Buffer::new();
let value = "Hello, world!";
buffer.write_string(value);
let res = buffer.read_string();
assert_eq!(res, Some(value.to_string()));
}
#[test]
fn read_string_with_length() {
let mut buffer = Buffer::new();
let value = "Hello, world!";
buffer.write_string(value);
let res = buffer.read_string_with_length();
assert_eq!(res, Some(value.to_string()));
}
#[test]
fn test_all_reads() {
let mut buffer = Buffer::new();
let v_byte = 0x01;
let v_bool = true;
let v_i8 = 0x01;
let v_i16 = 0x0102;
let v_i32 = 0x01020304;
let v_i64 = 0x0102030405060708;
let v_varint: i64 = 0x0102030405060708;
let v_u8 = 0x01;
let v_u16 = 0x0102;
let v_u32 = 0x01020304;
let v_u64 = 0x0102030405060708;
let v_f32 = 1.0_f32;
let v_f64 = 1.0_f64;
let v_string = "Hello, world!";
let v_string_with_length = "Hello, world!";
buffer.write_byte(v_byte);
buffer.write_byte(v_bool as u8);
buffer.write_i8(v_i8);
buffer.write_i16(v_i16);
buffer.write_i32(v_i32);
buffer.write_i64(v_i64);
buffer.write_varint(v_varint);
buffer.write_u8(v_u8);
buffer.write_u16(v_u16);
buffer.write_u32(v_u32);
buffer.write_u64(v_u64);
buffer.write_f32(v_f32);
buffer.write_f64(v_f64);
buffer.write_string(v_string);
buffer.write_string_with_length(v_string_with_length);
let mut file = File::create("test.bin").unwrap();
let data = buffer.get_data();
file.write_all(&data[..]).unwrap();
let r_byte = buffer.read_byte();
let r_bool = buffer.read_boolean();
let r_i8 = buffer.read_i8();
let r_i16 = buffer.read_i16();
let r_i32 = buffer.read_i32();
let r_i64 = buffer.read_i64();
let r_varint = buffer.read_varint();
let r_u8 = buffer.read_u8();
let r_u16 = buffer.read_u16();
let r_u32 = buffer.read_u32();
let r_u64 = buffer.read_u64();
let r_f32 = buffer.read_f32();
let r_f64 = buffer.read_f64();
let r_string = buffer.read_string();
let r_string_with_length = buffer.read_string_with_length();
assert_eq!(r_byte, Some(v_byte));
assert_eq!(r_bool, Some(v_bool));
assert_eq!(r_i8, Some(v_i8));
assert_eq!(r_i16, Some(v_i16));
assert_eq!(r_i32, Some(v_i32));
assert_eq!(r_i64, Some(v_i64));
assert_eq!(r_varint, Some(v_varint));
assert_eq!(r_u8, Some(v_u8));
assert_eq!(r_u16, Some(v_u16));
assert_eq!(r_u32, Some(v_u32));
assert_eq!(r_u64, Some(v_u64));
assert_eq!(r_f32, Some(v_f32));
assert_eq!(r_f64, Some(v_f64));
assert_eq!(r_string, Some(v_string.to_string()));
assert_eq!(r_string_with_length, Some(v_string_with_length.to_string()));
}
}