extern crate adt;
use adt::Stack;
#[test]
fn stack_size() {
let stack: Stack<i32> = Stack::new();
assert_eq!(stack.size(), 0);
}
#[test]
fn stack_push() {
let mut stack: Stack<i32> = Stack::new();
stack.push(42);
assert_eq!(stack.size(), 1);
stack.push(216);
assert_eq!(stack.size(), 2);
}
#[test]
fn stack_pop() {
let mut stack: Stack<i32> = Stack::new();
stack.push(42);
assert_eq!(stack.size(), 1);
let off = stack.pop();
assert_eq!(off, Some(42));
assert_eq!(stack.size(), 0);
}
#[test]
fn stack_peek() {
let mut stack: Stack<i32> = Stack::new();
stack.push(13);
let top = stack.peek();
assert_eq!(top, Some(&13));
}
#[test]
fn stack_is_empty() {
let mut stack: Stack<i32> = Stack::new();
stack.push(216);
assert_eq!(stack.is_empty(), false);
stack.pop();
assert_eq!(stack.is_empty(), true);
}
#[test]
fn stack_clear() {
let mut stack: Stack<i32> = Stack::new();
stack.push(13);
stack.push(42);
stack.push(216);
assert_eq!(stack.is_empty(), false);
stack.clear();
assert_eq!(stack.is_empty(), true);
}