nx_substrate_layers_test.nx source
↩ module page · 71 lines · 2851 B
1// nx_substrate_layers_test.nx -- smoke for layer + handoff enums.
2//
3// expect_exit: 0
4//
5// license_tier: ORIGINAL
6
7import "nx_substrate_layers.nx"
8
9func bytes_eq(a: *u8, b: *u8, n: i64) -> i64 {
10 var i: i64 = 0
11 while i < n {
12 if a[i] != b[i] { return 0 }
13 i = i + 1
14 }
15 return 1
16}
17
18func main() -> i64 {
19 // ---- Layer validity gate ----
20 if nx_layer_is_valid(NX_LAYER_BITS) != 1 { return 1 }
21 if nx_layer_is_valid(NX_LAYER_SURFACES) != 1 { return 2 }
22 if nx_layer_is_valid(NX_LAYER_N) != 0 { return 3 }
23 if nx_layer_is_valid(-1) != 0 { return 4 }
24
25 // ---- Layer names + tags ----
26 if bytes_eq(nx_layer_name(NX_LAYER_BITS), "BITS" as *u8, 4) != 1 { return 10 }
27 if bytes_eq(nx_layer_name(NX_LAYER_COMPOSITES), "COMPOSITES" as *u8, 10) != 1 { return 11 }
28 if bytes_eq(nx_layer_tag(NX_LAYER_BITS), "L0" as *u8, 2) != 1 { return 12 }
29 if bytes_eq(nx_layer_tag(NX_LAYER_SURFACES), "L5" as *u8, 2) != 1 { return 13 }
30
31 // ---- Layer tag parse round-trip ----
32 var i: i64 = 0
33 while i < NX_LAYER_N {
34 let parsed: i64 = nx_layer_parse_tag(nx_layer_tag(i), 2)
35 if parsed != i { return 20 + i }
36 i = i + 1
37 }
38
39 // ---- Layer parse failure paths ----
40 if nx_layer_parse_tag("L9" as *u8, 2) != NX_LAYER_N { return 30 }
41 if nx_layer_parse_tag("XX" as *u8, 2) != NX_LAYER_N { return 31 }
42 if nx_layer_parse_tag(0 as *u8, 2) != NX_LAYER_N { return 32 }
43 if nx_layer_parse_tag("L0" as *u8, 1) != NX_LAYER_N { return 33 }
44 if nx_layer_parse_tag("L0" as *u8, 3) != NX_LAYER_N { return 34 }
45
46 // ---- Handoff validity gate ----
47 if nx_handoff_is_valid(NX_HANDOFF_CLEAN) != 1 { return 40 }
48 if nx_handoff_is_valid(NX_HANDOFF_BROKEN) != 1 { return 41 }
49 if nx_handoff_is_valid(NX_HANDOFF_N) != 0 { return 42 }
50 if nx_handoff_is_valid(-1) != 0 { return 43 }
51
52 // ---- Handoff names ----
53 if bytes_eq(nx_handoff_name(NX_HANDOFF_CLEAN), "CLEAN" as *u8, 5) != 1 { return 50 }
54 if bytes_eq(nx_handoff_name(NX_HANDOFF_LEAKY), "LEAKY" as *u8, 5) != 1 { return 51 }
55 if bytes_eq(nx_handoff_name(NX_HANDOFF_DERIVED), "DERIVED" as *u8, 7) != 1 { return 52 }
56
57 // ---- Severity ordering ----
58 if nx_handoff_severity(NX_HANDOFF_CLEAN) != 0 { return 60 }
59 if nx_handoff_severity(NX_HANDOFF_DERIVED) != 1 { return 61 }
60 if nx_handoff_severity(NX_HANDOFF_LEAKY) != 2 { return 62 }
61 if nx_handoff_severity(NX_HANDOFF_BROKEN) != 3 { return 63 }
62 if nx_handoff_severity(-1) != 99 { return 64 }
63
64 // ---- SSS-class graduation gate ----
65 if nx_handoff_is_sss_gating(NX_HANDOFF_CLEAN) != 0 { return 70 }
66 if nx_handoff_is_sss_gating(NX_HANDOFF_DERIVED) != 0 { return 71 }
67 if nx_handoff_is_sss_gating(NX_HANDOFF_LEAKY) != 1 { return 72 }
68 if nx_handoff_is_sss_gating(NX_HANDOFF_BROKEN) != 1 { return 73 }
69
70 return 0
71}