nx_result_test.nx source
↩ module page · 44 lines · 1566 B
1// nx_result_test.nx -- smoke for the Result type.
2
3import "nx_syscalls.nx"
4import "nx_runtime.nx"
5import "nx_tier.nx"
6import "nx_result.nx"
7
8func main() -> nx_exit {
9 println("=== nx_result smoke ===" as *u8)
10
11 // OK case
12 let ok: *NxResult = nx_result_ok(42)
13 if nx_result_is_ok(ok) != 1 { return 1 }
14 if nx_result_is_err(ok) != 0 { return 2 }
15 if nx_result_unwrap(ok) != 42 { return 3 }
16 if nx_result_err_code(ok) != NX_ERR_NONE { return 4 }
17 println(" ok(42) -> is_ok=1 unwrap=42 err_code=NONE" as *u8)
18
19 // ERR case
20 let err: *NxResult = nx_result_err(NX_ERR_OUT_OF_RANGE)
21 if nx_result_is_ok(err) != 0 { return 10 }
22 if nx_result_is_err(err) != 1 { return 11 }
23 if nx_result_err_code(err) != NX_ERR_OUT_OF_RANGE { return 12 }
24 println(" err(OUT_OF_RANGE) -> is_err=1 err_code=OUT_OF_RANGE" as *u8)
25
26 // Status enum is sealed: status is exactly 0 or 1, never anything else
27 if ok.status != 1 { return 20 }
28 if err.status != 0 { return 21 }
29 println(" status enum: sealed (ok=1, err=0)" as *u8)
30
31 // Error name lookup
32 print(" err_name(OUT_OF_RANGE) = '" as *u8)
33 print(nx_err_name(NX_ERR_OUT_OF_RANGE))
34 println("'" as *u8)
35 print(" err_name(INVALID_INPUT) = '" as *u8)
36 print(nx_err_name(NX_ERR_INVALID_INPUT))
37 println("'" as *u8)
38 print(" err_name(FILE_NOT_FOUND) = '" as *u8)
39 print(nx_err_name(NX_ERR_FILE_NOT_FOUND))
40 println("'" as *u8)
41
42 println("=== ALL nx_result smoke checks PASS ===" as *u8)
43 return 0
44}