francoisgib_webserver 1.0.3

HTTP Webserver
Documentation
#[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());
    }
}