import datatypes fn test_push_and_pop() { mut r := datatypes.new_ringbuffer[int](2) r.push(3) or { panic(err) } r.push(4) or { panic(err) } mut oldest_value := r.pop() or { 0 } assert oldest_value == 3 r.push(5) or { panic(err) } oldest_value = r.pop() or { 0 } assert oldest_value == 4 } fn test_clear_and_empty() { mut r := datatypes.new_ringbuffer[int](4) r.push(3) or { panic(err) } r.push(4) or { panic(err) } oldest_value := r.pop() or { 0 } assert oldest_value == 3 r.clear() assert r.is_empty() == true } fn test_capacity_and_is_full() { mut r := datatypes.new_ringbuffer[int](4) assert r.capacity() == 4 r.push(3) or { panic(err) } r.push(4) or { panic(err) } r.push(5) or { panic(err) } r.push(6) or { panic(err) } assert r.is_full() == true } fn test_occupied_and_remaining() { mut r := datatypes.new_ringbuffer[int](4) r.push(3) or { panic(err) } r.push(4) or { panic(err) } assert r.occupied() == r.remaining() } fn test_push_and_pop_many() { mut r := datatypes.new_ringbuffer[int](4) a := [1, 2, 3, 4] r.push_many(a) or { panic(err) } assert r.is_full() == true b := r.pop_many(4) or { panic(err) } assert a == b }