nx_math_basics_test.nx source
↩ module page · 59 lines · 1772 B
1// nx_math_basics_test.nx -- smoke for the shared integer-math basics.
2//
3// expect_exit: 0
4//
5// license_tier: ORIGINAL
6
7import "nx_syscalls.nx"
8import "nx_types.nx"
9import "nx_tier.nx"
10import "nx_math_basics.nx"
11
12func main() -> nx_int {
13 // nx_iabs
14 if nx_iabs(0) != 0 { return 1 }
15 if nx_iabs(7) != 7 { return 2 }
16 if nx_iabs(-7) != 7 { return 3 }
17 if nx_iabs(-100) != 100 { return 4 }
18
19 // nx_imin / nx_imax
20 if nx_imin(3, 5) != 3 { return 10 }
21 if nx_imin(5, 3) != 3 { return 11 }
22 if nx_imin(-2, 0) != -2 { return 12 }
23 if nx_imax(3, 5) != 5 { return 13 }
24 if nx_imax(5, 3) != 5 { return 14 }
25 if nx_imax(-2, 0) != 0 { return 15 }
26
27 // nx_iclamp
28 if nx_iclamp(5, 0, 10) != 5 { return 20 }
29 if nx_iclamp(-3, 0, 10) != 0 { return 21 }
30 if nx_iclamp(15, 0, 10) != 10 { return 22 }
31 if nx_iclamp(7, 5, 5) != 5 { return 23 }
32 // defensive: lo > hi returns lo
33 if nx_iclamp(7, 10, 0) != 10 { return 24 }
34
35 // nx_isign
36 if nx_isign(0) != 0 { return 30 }
37 if nx_isign(42) != 1 { return 31 }
38 if nx_isign(-99) != -1 { return 32 }
39
40 // nx_ibool
41 if nx_ibool(0) != 0 { return 40 }
42 if nx_ibool(1) != 1 { return 41 }
43 if nx_ibool(99) != 1 { return 42 }
44 if nx_ibool(-1) != 1 { return 43 }
45
46 // nx_iand / nx_ior / nx_inot
47 if nx_iand(1, 1) != 1 { return 50 }
48 if nx_iand(1, 0) != 0 { return 51 }
49 if nx_iand(0, 1) != 0 { return 52 }
50 if nx_iand(0, 0) != 0 { return 53 }
51 if nx_ior(0, 0) != 0 { return 54 }
52 if nx_ior(1, 0) != 1 { return 55 }
53 if nx_ior(0, 1) != 1 { return 56 }
54 if nx_ior(1, 1) != 1 { return 57 }
55 if nx_inot(0) != 1 { return 58 }
56 if nx_inot(1) != 0 { return 59 }
57
58 return 0
59}