code wiki / (root) / nx_doc_render_mermaid_test.nx

nx_doc_render_mermaid_test.nx source

↩ module page · 64 lines · 2508 B

1// nx_doc_render_mermaid_test.nx -- KAT for D10 Mermaid emitter. 2// 3// Tests primitive correctness via the escape primitive (which has 4// substrate-honest return value). The emit_* functions write to 5// stdout; their correctness is verified by composition smoke 6// (next session emits a real graph + greps the output). 7 8import "nx_syscalls.nx" 9import "nx_string_ops.nx" 10import "nx_doc_render_mermaid.nx" 11 12func main() -> i64 { 13 // ----- T1 Direction enum ----- 14 if nx_mermaid_dir_is_valid(NX_MERMAID_LR) != 1 { return 1 } 15 if nx_mermaid_dir_is_valid(NX_MERMAID_TD) != 1 { return 2 } 16 if nx_mermaid_dir_is_valid(0 - 1) != 0 { return 3 } 17 if nx_mermaid_dir_is_valid(NX_MERMAID_N) != 0 { return 4 } 18 19 // ----- T2 Escape id: alphanumeric passes through ----- 20 let src1: *u8 = "nx_doc_census" 21 let dst1: *u8 = sys_mmap(64) 22 let n1: i64 = nx_doc_mermaid_escape_id(src1, 13, dst1, 64) 23 if n1 != 13 { return 10 } 24 if dst1[0] != 110 { return 11 } // 'n' 25 if dst1[1] != 120 { return 12 } // 'x' 26 if dst1[2] != 95 { return 13 } // '_' 27 if dst1[3] != 100 { return 14 } // 'd' at index 3 of "nx_doc_census" 28 29 // ----- T3 Escape id: dots and slashes replaced with underscore ----- 30 let src2: *u8 = "foo.bar/baz" 31 let dst2: *u8 = sys_mmap(64) 32 let n2: i64 = nx_doc_mermaid_escape_id(src2, 11, dst2, 64) 33 if n2 != 11 { return 20 } 34 if dst2[0] != 102 { return 21 } // 'f' 35 if dst2[3] != 95 { return 22 } // '_' (was '.') 36 if dst2[4] != 98 { return 23 } // 'b' 37 if dst2[7] != 95 { return 24 } // '_' (was '/') 38 if dst2[8] != 98 { return 25 } // 'b' 39 40 // ----- T4 Escape id: dash preserved ----- 41 let src3: *u8 = "feedback-foo-bar" 42 let dst3: *u8 = sys_mmap(64) 43 let n3: i64 = nx_doc_mermaid_escape_id(src3, 16, dst3, 64) 44 if n3 != 16 { return 30 } 45 if dst3[8] != 45 { return 31 } // '-' preserved 46 if dst3[12] != 45 { return 32 } // '-' preserved 47 48 // ----- T5 Escape id: digit + uppercase ----- 49 let src4: *u8 = "NX42_x" 50 let dst4: *u8 = sys_mmap(64) 51 let n4: i64 = nx_doc_mermaid_escape_id(src4, 6, dst4, 64) 52 if n4 != 6 { return 40 } 53 if dst4[0] != 78 { return 41 } // 'N' 54 if dst4[2] != 52 { return 42 } // '4' 55 if dst4[3] != 50 { return 43 } // '2' 56 57 // ----- T6 Escape id: cap exhaustion ----- 58 let src5: *u8 = "abcdef" 59 let dst5: *u8 = sys_mmap(64) 60 let n5: i64 = nx_doc_mermaid_escape_id(src5, 6, dst5, 3) 61 if n5 != -1 { return 50 } 62 63 return 0 64}