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 }