data-structures-algorithms 1.0.0

Data Structures and Algorithms in Rust!
Documentation
#[cfg(test)]
mod tests {
    use crate::data_structures::queue::Queue;

    #[test]
    fn test_queue_is_empty() {
        let queue: Queue<i32> = Queue::new();
        assert!(queue.is_empty());
    }

    #[test]
    fn test_queue_enqueue_dequeue() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);

        assert_eq!(queue.dequeue(), Some(10));
        assert_eq!(queue.dequeue(), Some(20));
        assert!(queue.dequeue().is_none());
    }

    #[test]
    fn test_queue_peek() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);

        assert_eq!(queue.peek(), Some(10).as_ref());
    }

    #[test]
    fn test_queue_size() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);
        queue.dequeue();

        assert_eq!(queue.size(), 1);
    }

    #[test]
    fn test_queue_multiple_dequeues() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);
        queue.enqueue(30);

        assert_eq!(queue.dequeue(), Some(10));
        assert_eq!(queue.dequeue(), Some(20));
        assert_eq!(queue.dequeue(), Some(30));
        assert!(queue.dequeue().is_none());
    }

    #[test]
    fn test_queue_peek_after_dequeue() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);
        queue.dequeue();

        assert_eq!(queue.peek(), Some(20).as_ref());
    }

    #[test]
    fn test_queue_empty_after_all_dequeues() {
        let mut queue: Queue<i32> = Queue::new();
        queue.enqueue(10);
        queue.enqueue(20);
        queue.dequeue();
        queue.dequeue();

        assert!(queue.is_empty());
    }
}