code wiki / (root) / vec_test.nx

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}