synchronous_queue/
lib.rs

1pub mod queue;
2
3#[cfg(test)]
4mod tests {
5    use super::*;
6
7    #[test]
8    fn test_queue() {
9        let mut queue = queue::Queue::new();
10
11        assert_eq!(queue.is_empty(), true);
12        assert_eq!(queue.length(), 0);
13
14        queue.enqueue(1);
15        queue.enqueue(2);
16        queue.enqueue(3);
17
18        assert_eq!(queue.is_empty(), false);
19        assert_eq!(queue.length(), 3);
20
21        assert_eq!(queue.dequeue(), Some(1));
22        assert_eq!(queue.dequeue(), Some(2));
23        assert_eq!(queue.dequeue(), Some(3));
24
25        assert_eq!(queue.is_empty(), true);
26        assert_eq!(queue.length(), 0);
27
28        // Enqueue some elements
29        queue.enqueue(1);
30        queue.enqueue(2);
31        queue.enqueue(3);
32
33        assert_eq!(queue.length(), 3);
34
35        // Safely iterate over the queue by cloning the internal Vec
36        for item in queue.iter() {
37            println!("Read-only item: {}", item);
38        }
39
40        assert_eq!(queue.length(), 3);
41    }
42}