#[cfg(test)]
mod tests {
use std::str::FromStr;
use tokio::io::BufReader;
use crate::{
config::PRE_ALLOCATED_BUFFER_SIZE,
utils::buffer::{Buffer, BufferType},
};
#[test]
fn test_buffer_from_str_and_to_string() {
let original = "hello world";
let buffer = Buffer::from_str(original).unwrap();
assert_eq!(buffer.to_string(), original);
}
#[test]
fn test_small_buffer_stack() {
let buffer = Buffer::new(100);
match buffer.buffer {
BufferType::Stack(_) => {}
_ => panic!("Expected stack buffer"),
}
}
#[test]
fn test_large_buffer_heap() {
let buffer = Buffer::new(PRE_ALLOCATED_BUFFER_SIZE + 1);
match buffer.buffer {
BufferType::Heap(_) => {}
_ => panic!("Expected heap buffer"),
}
}
#[tokio::test]
async fn test_async_read_stack() {
let data = b"async data";
let mut reader = BufReader::new(&data[..]);
let mut buffer = Buffer::new(50);
let size = buffer.async_read(&mut reader).await.unwrap();
assert_eq!(size, data.len());
assert_eq!(buffer.to_string(), "async data");
}
#[tokio::test]
async fn test_async_read_heap() {
let data = b"async data";
let mut reader = BufReader::new(&data[..]);
let mut buffer = Buffer::new(PRE_ALLOCATED_BUFFER_SIZE + 1);
let size = buffer.async_read(&mut reader).await.unwrap();
assert_eq!(buffer.to_string(), "async data");
assert_eq!(size, data.len());
}
}