nx_mergesort_test.nx source
↩ module page · 40 lines · 1394 B
1import "nx_syscalls.nx"
2import "nx_mergesort.nx"
3
4func is_sorted_asc(arr: *i64, n: i64) -> i64 {
5 var i: i64 = 1
6 while i < n {
7 if arr[i - 1] > arr[i] { return 0 }
8 i = i + 1
9 }
10 return 1
11}
12
13func main() -> i64 {
14 let buf: *u8 = sys_mmap(80)
15 let arr: *nx_int = buf as *nx_int
16
17 arr[0] = 5; arr[1] = 1; arr[2] = 4; arr[3] = 2; arr[4] = 3
18 nx_mergesort(arr, 5)
19 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 1, 0, 0, 0, 0, 0) }
20
21 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5
22 nx_mergesort(arr, 5)
23 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 2, 0, 0, 0, 0, 0) }
24
25 arr[0] = 5; arr[1] = 4; arr[2] = 3; arr[3] = 2; arr[4] = 1
26 nx_mergesort(arr, 5)
27 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 3, 0, 0, 0, 0, 0) }
28
29 arr[0] = 7; arr[1] = 7; arr[2] = 7; arr[3] = 7; arr[4] = 7
30 nx_mergesort(arr, 5)
31 if is_sorted_asc(arr, 5) != 1 { return __syscall(93, 4, 0, 0, 0, 0, 0) }
32
33 arr[0] = -3; arr[1] = 10; arr[2] = 0; arr[3] = 7; arr[4] = -100
34 arr[5] = 42; arr[6] = 1; arr[7] = 5; arr[8] = -1; arr[9] = 3
35 nx_mergesort(arr, 10)
36 if is_sorted_asc(arr, 10) != 1 { return __syscall(93, 5, 0, 0, 0, 0, 0) }
37 if arr[0] != -100 { return __syscall(93, 6, 0, 0, 0, 0, 0) }
38 if arr[9] != 42 { return __syscall(93, 7, 0, 0, 0, 0, 0) }
39 return 0
40}