2022-09-21 19:42:59 +03:00
|
|
|
import datatypes
|
|
|
|
|
|
|
|
fn test_push_and_pop() {
|
2022-11-26 19:23:26 +03:00
|
|
|
mut r := datatypes.new_ringbuffer[int](2)
|
2022-09-21 19:42:59 +03:00
|
|
|
|
|
|
|
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() {
|
2022-11-26 19:23:26 +03:00
|
|
|
mut r := datatypes.new_ringbuffer[int](4)
|
2022-09-21 19:42:59 +03:00
|
|
|
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() {
|
2022-11-26 19:23:26 +03:00
|
|
|
mut r := datatypes.new_ringbuffer[int](4)
|
2022-09-21 19:42:59 +03:00
|
|
|
|
|
|
|
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() {
|
2022-11-26 19:23:26 +03:00
|
|
|
mut r := datatypes.new_ringbuffer[int](4)
|
2022-09-21 19:42:59 +03:00
|
|
|
|
|
|
|
r.push(3) or { panic(err) }
|
|
|
|
r.push(4) or { panic(err) }
|
|
|
|
|
|
|
|
assert r.occupied() == r.remaining()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn test_push_and_pop_many() {
|
2022-11-26 19:23:26 +03:00
|
|
|
mut r := datatypes.new_ringbuffer[int](4)
|
2022-09-21 19:42:59 +03:00
|
|
|
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
|
|
|
|
}
|