rust_twostack 0.15.0

Support for two-dimentional stacks for the Rust programming language
Documentation
#[cfg(test)]
mod tests {
    #![allow(unused_imports)]
    use super::*;
    use rust_dynamic::value::Value;
    use rust_twostack::stack::Stack;

    #[test]
    fn test_stack_new() {
        let s: Stack<Value> = Stack::new();
        assert_eq!(s.len(), 0);
    }

    #[test]
    fn test_stack_is_empty() {
        let s: Stack<Value> = Stack::new();
        assert!(s.is_empty());
    }

    #[test]
    fn test_stack_clear() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(42.0).unwrap())
         .push(Value::from(41.0).unwrap())
         .clear();
        assert!(s.is_empty());
    }

    #[test]
    fn test_stack_push() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(42.0).unwrap())
         .push(Value::from(41.0).unwrap());
        assert_eq!(s.len(), 2);
    }

    #[test]
    fn test_stack_pull() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(41.0).unwrap())
         .push(Value::from(42.0).unwrap());
        let val = s.pull().expect("No value has been pulled");
        assert_eq!(val.cast_float().unwrap(), 42.0);
    }

    #[test]
    fn test_stack_rotate_left() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(42.0).unwrap())
         .push(Value::from(41.0).unwrap())
         .left();
        let val = s.pull().expect("No value has been pulled");
        assert_eq!(val.cast_float().unwrap(), 42.0);
    }

    #[test]
    fn test_stack_rotate_left_single_element() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(42.0).unwrap())
         .left();
        let val = s.pull().expect("No value has been pulled");
        assert_eq!(val.cast_float().unwrap(), 42.0);
    }

    #[test]
    fn test_stack_peek() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(41.0).unwrap())
         .push(Value::from(42.0).unwrap());
        let val = s.peek().expect("No value has been pulled");
        assert_eq!(val.cast_float().unwrap(), 42.0);
    }

    #[test]
    fn test_stack_peek_check_len() {
        let mut s: Stack<Value> = Stack::new();
        s.push(Value::from(41.0).unwrap())
         .push(Value::from(42.0).unwrap());
        let _ = s.peek().expect("No value has been pulled");
        assert_eq!(s.len(), 2);
    }
}