nx_water_design_test.nx source
↩ module page · 42 lines · 1905 B
1// nx_water_design_test.nx -- smoke for nx_water_design. Proves the full
2// research->design chain: raw condensate is flat AND unsafe; treatment makes
3// it potable; remineralization makes it delicious + healthful; and the
4// harvester recommender + yield compose in.
5// Exit code = failed assertion number; 0 = all pass.
6
7import "nx_syscalls.nx"
8import "nx_water_awg.nx"
9import "nx_water_quality.nx"
10import "nx_water_design.nx"
11
12func main() -> i64 {
13 // --- raw atmospheric condensate: flat AND unsafe (Legionella risk) ---
14 let raw: *NxWaterSample = wd_raw_condensate()
15 if wq_taste_score(raw) != 15 { return 1 } // insipid
16 if wq_is_potable(raw) != 0 { return 2 } // not safe
17 if wq_safety_admit(raw) != WQ_REFUSED_BACTERIA { return 3 }
18
19 // --- treatment (UV + filter) makes it potable but still flat ---
20 wd_treat(raw)
21 if wq_is_potable(raw) != 1 { return 4 }
22 if wq_is_healthful(raw) != 0 { return 5 } // safe but no minerals
23 if wq_taste_score(raw) != 15 { return 6 } // still flat
24
25 // --- the fully designed water: delicious + healthful + safe ---
26 let best: *NxWaterSample = wd_design_best_water()
27 if wq_taste_score(best) != 100 { return 7 }
28 if wq_tds_taste_class(best.tds) != WQ_EXCELLENT { return 8 }
29 if wq_is_potable(best) != 1 { return 9 }
30 if wq_is_healthful(best) != 1 { return 10 }
31
32 // --- MEASURED EXCEED: designed water beats raw condensate on taste ---
33 if wq_taste_score(best) <= wq_taste_score(raw) { return 11 }
34
35 // --- harvester choice + yield compose from the climate ---
36 if wd_recommend_harvester(30, 70) != WA_CONDENSATION { return 12 }
37 if wd_recommend_harvester(25, 20) != WA_SORBENT { return 13 }
38 if wd_recommend_harvester(20, 35) != WA_PASSIVE_CAP { return 14 }
39 if wd_daily_yield_ml(30, 70, 5, 100) != 34560 { return 15 }
40
41 return 0
42}