vec_test.nx source
↩ module page · 45 lines · 1102 B
1// vec_test.nx -- self-test for vec.nx.
2
3import "syscalls.nx"
4import "vec.nx"
5
6func main() -> i64 {
7 let v: *Vec = vec_new(0)
8 if vec_len(v) != 0 { return 1 }
9
10 vec_push(v, 10)
11 vec_push(v, 20)
12 vec_push(v, 30)
13 if vec_len(v) != 3 { return 2 }
14 if vec_get(v, 0) != 10 { return 3 }
15 if vec_get(v, 1) != 20 { return 4 }
16 if vec_get(v, 2) != 30 { return 5 }
17
18 // Growth: push past initial cap and verify all stays correct.
19 var i: i64 = 0
20 while i < 30 {
21 vec_push(v, i * 2)
22 i = i + 1
23 }
24 if vec_len(v) != 33 { return 6 }
25 if vec_get(v, 3) != 0 { return 7 }
26 if vec_get(v, 32) != 58 { return 8 }
27
28 // Pop + truncate.
29 let last: i64 = vec_pop(v)
30 if last != 58 { return 9 }
31 if vec_len(v) != 32 { return 10 }
32
33 vec_truncate(v, 3)
34 if vec_len(v) != 3 { return 11 }
35
36 // Search.
37 if vec_index_of(v, 20) != 1 { return 12 }
38 if vec_index_of(v, 999) != -1 { return 13 }
39
40 // Set / overwrite.
41 vec_set(v, 0, 100)
42 if vec_get(v, 0) != 100 { return 14 }
43
44 return 0
45}