code wiki / (root) / nx_result_test.nx

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}