code wiki / (root) / nx_intent_survival_test.nx

nx_intent_survival_test.nx source

↩ module page · 122 lines · 5479 B

1// nx_intent_survival_test.nx -- smoke for tiered survival verdict. 2 3import "nx_syscalls.nx" 4import "nx_tier.nx" 5import "nx_directors_note.nx" 6import "nx_intent_survival.nx" 7 8func main() -> nx_int { 9 // === Test 1: alloc returns all-UNMEASURED + DRIFT tier ========= 10 let r: *SurvivalReport = nx_is_alloc(42, 7) 11 if r.arc_id != 42 { return 1 } 12 if r.moment_seq != 7 { return 2 } 13 if r.n_elems != NX_IS_N_ELEMS { return 3 } 14 if r.n_unmeasured != NX_IS_N_ELEMS { return 4 } 15 var i: nx_int = 0 16 while i < NX_IS_N_ELEMS { 17 if r.verdicts[i] != NX_IS_UNMEASURED { return 10 + i } 18 i = i + 1 19 } 20 21 // === Test 2: set + get round-trip =============================== 22 nx_is_set_verdict(r, NX_IS_ELEM_OUTFIT, NX_IS_SURVIVED) 23 if nx_is_get_verdict(r, NX_IS_ELEM_OUTFIT) != NX_IS_SURVIVED { return 20 } 24 nx_is_set_verdict(r, NX_IS_ELEM_POSE, NX_IS_PARTIAL) 25 if nx_is_get_verdict(r, NX_IS_ELEM_POSE) != NX_IS_PARTIAL { return 21 } 26 27 // Invalid elem -> -1; verdict unchanged 28 if nx_is_set_verdict(r, 99, NX_IS_SURVIVED) != 0 - 1 { return 22 } 29 if nx_is_set_verdict(r, NX_IS_ELEM_OUTFIT, 99) != 0 - 1 { return 23 } 30 31 // === Test 3: GOOD tier (all SURVIVED) =========================== 32 let g: *SurvivalReport = nx_is_alloc(1, 1) 33 var j: nx_int = 0 34 while j < NX_IS_N_ELEMS { 35 nx_is_set_verdict(g, j, NX_IS_SURVIVED) 36 j = j + 1 37 } 38 let tier_g: nx_int = nx_is_aggregate(g) 39 if tier_g != NX_PFT_GOOD { return 30 } 40 if g.n_survived != NX_IS_N_ELEMS { return 31 } 41 if g.n_missing != 0 { return 32 } 42 if g.n_partial != 0 { return 33 } 43 if g.n_unmeasured != 0 { return 34 } 44 if g.coverage_q10 != 1024 { return 35 } // 100% Q10 45 46 // === Test 4: DRIFT tier (one PARTIAL, no MISSING) ============== 47 let d: *SurvivalReport = nx_is_alloc(1, 2) 48 var k: nx_int = 0 49 while k < NX_IS_N_ELEMS { 50 nx_is_set_verdict(d, k, NX_IS_SURVIVED) 51 k = k + 1 52 } 53 nx_is_set_verdict(d, NX_IS_ELEM_BODY_ARCHETYPE, NX_IS_PARTIAL) 54 let tier_d: nx_int = nx_is_aggregate(d) 55 if tier_d != NX_PFT_DRIFT { return 40 } 56 if d.n_partial != 1 { return 41 } 57 if d.n_missing != 0 { return 42 } 58 // Coverage = 7/8 * 1024 = 896 59 if d.coverage_q10 != 896 { return 43 } 60 61 // === Test 5: BROKEN tier (one MISSING) ========================= 62 let b: *SurvivalReport = nx_is_alloc(1, 3) 63 var m: nx_int = 0 64 while m < NX_IS_N_ELEMS { 65 nx_is_set_verdict(b, m, NX_IS_SURVIVED) 66 m = m + 1 67 } 68 nx_is_set_verdict(b, NX_IS_ELEM_OUTFIT, NX_IS_MISSING) 69 let tier_b: nx_int = nx_is_aggregate(b) 70 if tier_b != NX_PFT_BROKEN { return 50 } 71 if b.n_missing != 1 { return 51 } 72 // First missing -> OUTFIT -> NX_DN_UNDERSPEC_OUTFIT 73 if nx_is_first_missing_underspec(b) != NX_DN_UNDERSPEC_OUTFIT { return 52 } 74 75 // === Test 6: BROKEN beats DRIFT (any missing dominates) ======== 76 let mx: *SurvivalReport = nx_is_alloc(1, 4) 77 nx_is_set_verdict(mx, NX_IS_ELEM_OUTFIT, NX_IS_SURVIVED) 78 nx_is_set_verdict(mx, NX_IS_ELEM_LOCATION, NX_IS_PARTIAL) 79 nx_is_set_verdict(mx, NX_IS_ELEM_POSE, NX_IS_SURVIVED) 80 nx_is_set_verdict(mx, NX_IS_ELEM_AFFECT, NX_IS_MISSING) // -> BROKEN 81 nx_is_set_verdict(mx, NX_IS_ELEM_PERSPECTIVE, NX_IS_SURVIVED) 82 nx_is_set_verdict(mx, NX_IS_ELEM_SHOT_SIZE, NX_IS_SURVIVED) 83 nx_is_set_verdict(mx, NX_IS_ELEM_CAMERA_MOTIVATION, NX_IS_SURVIVED) 84 nx_is_set_verdict(mx, NX_IS_ELEM_BODY_ARCHETYPE, NX_IS_SURVIVED) 85 if nx_is_aggregate(mx) != NX_PFT_BROKEN { return 60 } 86 // First missing here is AFFECT 87 if nx_is_first_missing_underspec(mx) != NX_DN_UNDERSPEC_AFFECT { return 61 } 88 89 // === Test 7: UNMEASURED routes to DRIFT (cautious ship) ======== 90 let u: *SurvivalReport = nx_is_alloc(1, 5) 91 // Set 6 SURVIVED, leave 2 UNMEASURED 92 nx_is_set_verdict(u, NX_IS_ELEM_OUTFIT, NX_IS_SURVIVED) 93 nx_is_set_verdict(u, NX_IS_ELEM_LOCATION, NX_IS_SURVIVED) 94 nx_is_set_verdict(u, NX_IS_ELEM_POSE, NX_IS_SURVIVED) 95 nx_is_set_verdict(u, NX_IS_ELEM_AFFECT, NX_IS_SURVIVED) 96 nx_is_set_verdict(u, NX_IS_ELEM_PERSPECTIVE, NX_IS_SURVIVED) 97 nx_is_set_verdict(u, NX_IS_ELEM_SHOT_SIZE, NX_IS_SURVIVED) 98 // CAMERA_MOTIVATION + BODY_ARCHETYPE still UNMEASURED 99 if nx_is_aggregate(u) != NX_PFT_DRIFT { return 70 } 100 if u.n_unmeasured != 2 { return 71 } 101 102 // === Test 8: apply tier back onto DirectorsNote =============== 103 let dn: *DirectorsNote = nx_dn_alloc() 104 nx_is_apply_to_dn(b, dn) // b is BROKEN with OUTFIT missing 105 if dn.preflight_tier != NX_PFT_BROKEN { return 80 } 106 if dn.underspec_code != NX_DN_UNDERSPEC_OUTFIT { return 81 } 107 108 nx_is_apply_to_dn(g, dn) // g is GOOD 109 if dn.preflight_tier != NX_PFT_GOOD { return 82 } 110 if dn.underspec_code != NX_DN_UNDERSPEC_NONE { return 83 } 111 112 // === Test 9: sealed-enum validators ============================ 113 if nx_is_verdict_is_valid(NX_IS_SURVIVED) != 1 { return 90 } 114 if nx_is_verdict_is_valid(NX_IS_MISSING) != 1 { return 91 } 115 if nx_is_verdict_is_valid(NX_IS_N_VERDICTS) != 0 { return 92 } 116 if nx_is_verdict_is_valid(99) != 0 { return 93 } 117 if nx_is_elem_is_valid(NX_IS_ELEM_OUTFIT) != 1 { return 94 } 118 if nx_is_elem_is_valid(NX_IS_ELEM_BODY_ARCHETYPE) != 1 { return 95 } 119 if nx_is_elem_is_valid(NX_IS_N_ELEMS) != 0 { return 96 } 120 121 return 0 122}