v / vlib / datatypes / ringbuffer_test.v
65 lines · 43 sloc · 1.16 KB · ef5be22f81005b2237311a79b6383138084b0c53
Raw
1import datatypes
2
3fn test_push_and_pop() {
4 mut r := datatypes.new_ringbuffer[int](2)
5
6 r.push(3) or { panic(err) }
7 r.push(4) or { panic(err) }
8
9 mut oldest_value := r.pop() or { 0 }
10
11 assert oldest_value == 3
12
13 r.push(5) or { panic(err) }
14
15 oldest_value = r.pop() or { 0 }
16
17 assert oldest_value == 4
18}
19
20fn test_clear_and_empty() {
21 mut r := datatypes.new_ringbuffer[int](4)
22 r.push(3) or { panic(err) }
23 r.push(4) or { panic(err) }
24
25 oldest_value := r.pop() or { 0 }
26 assert oldest_value == 3
27
28 r.clear()
29
30 assert r.is_empty() == true
31}
32
33fn test_capacity_and_is_full() {
34 mut r := datatypes.new_ringbuffer[int](4)
35
36 assert r.capacity() == 4
37
38 r.push(3) or { panic(err) }
39 r.push(4) or { panic(err) }
40 r.push(5) or { panic(err) }
41 r.push(6) or { panic(err) }
42
43 assert r.is_full() == true
44}
45
46fn test_occupied_and_remaining() {
47 mut r := datatypes.new_ringbuffer[int](4)
48
49 r.push(3) or { panic(err) }
50 r.push(4) or { panic(err) }
51
52 assert r.occupied() == r.remaining()
53}
54
55fn test_push_and_pop_many() {
56 mut r := datatypes.new_ringbuffer[int](4)
57 a := [1, 2, 3, 4]
58 r.push_many(a) or { panic(err) }
59
60 assert r.is_full() == true
61
62 b := r.pop_many(4) or { panic(err) }
63
64 assert a == b
65}
66