module datatypes fn test_is_empty() { mut queue := Queue{} assert queue.is_empty() == true queue.push(1) assert queue.is_empty() == false } fn test_len() ? { mut queue := Queue{} assert queue.len() == 0 queue.push(1) assert queue.len() == 1 queue.pop() ? assert queue.len() == 0 } fn test_peek() ? { mut queue := Queue{} queue.push(1) assert queue.peek() ? == 1 queue.push(2) assert queue.peek() ? == 1 queue = Queue{} queue.peek() or { return } assert false } fn test_last() ? { mut queue := Queue{} queue.push(1) assert queue.last() ? == 1 queue.push(2) assert queue.last() ? == 2 queue = Queue{} queue.last() or { return } assert false } fn test_index() ? { mut queue := Queue{} queue.push(1) assert queue.index(0) ? == 1 queue.push(2) assert queue.index(1) ? == 2 queue.pop() ? queue.index(1) or { return } assert false } fn test_push() ? { mut queue := Queue{} queue.push(1) queue.push(2) assert queue.peek() ? == 1 } fn test_pop() ? { mut queue := Queue{} queue.push(1) queue.push(2) queue.push(3) assert queue.pop() ? == 1 queue.push(4) assert queue.pop() ? == 2 assert queue.pop() ? == 3 queue = Queue{} queue.pop() or { return } assert false }