pub mod stack;
pub use stack::*;
#[cfg(test)]
mod tests {
use crate::stacks::{Stack, Queue};
#[test]
fn stack_push_pop() {
let mut stack: Stack<i32> = Stack::new();
stack.push(4);
assert_eq!(stack.pop(), Some(4));
}
#[test]
fn empty_stack_pop() {
let mut stack: Stack<i32> = Stack::new();
assert_eq!(stack.pop(), None);
}
#[test]
fn stack_len() {
let mut stack: Stack<i32> = Stack::new();
assert_eq!(stack.len(), 0);
stack.push(4);
assert_eq!(stack.len(), 1);
let _var = stack.pop();
assert_eq!(stack.len(), 0);
}
#[test]
fn queue_push_pop() {
let mut queue: Queue<i32> = Queue::new();
queue.push(4);
queue.push(5);
assert_eq!(queue.pop(), Some(4));
assert_eq!(queue.pop(), Some(5));
}
#[test]
fn empty_queue_pop() {
let mut queue: Queue<i32> = Queue::new();
assert_eq!(queue.pop(), None);
}
#[test]
fn queue_len() {
let mut queue: Queue<i32> = Queue::new();
assert_eq!(queue.len(), 0);
queue.push(4);
assert_eq!(queue.len(), 1);
let _var = queue.pop();
assert_eq!(queue.len(), 0);
}
}