code wiki / (root) / nx_printers_render_test.nx

nx_printers_render_test.nx source

↩ module page · 74 lines · 3424 B

1// nx_printers_render_test.nx -- offline gate for the /printers HTML renderer. 2// Feeds a synthetic Brother-like response (stopped + exposed + toner-empty + duplex-waste) and asserts the 3// emitted HTML surfaces every hidden truth. Unique exit codes per missing marker. 4// expect_exit: 0 license_tier: ORIGINAL 5 6import "nx_syscalls.nx" 7import "nx_ipp_codec.nx" 8import "nx_printers_render.nx" 9 10func t_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 11 12// substring search: 1 if pat occurs in buf[0..len) 13func contains(buf: *u8, len: i64, pat: *u8) -> i64 { 14 var pl: i64 = 0 15 while pat[pl] != (0 as u8) { pl = pl + 1 } 16 if pl == 0 { return 1 } 17 if pl > len { return 0 } 18 var i: i64 = 0 19 let end: i64 = len - pl + 1 20 var hit: i64 = 0 21 while i < end { 22 if hit == 0 { 23 var j: i64 = 0 24 var ok: i64 = 1 25 while j < pl { 26 if (buf[i + j] as i64) != (pat[j] as i64) { ok = 0; j = pl } 27 else { j = j + 1 } 28 } 29 if ok == 1 { hit = 1 } 30 } 31 i = i + 1 32 } 33 return hit 34} 35 36func main() -> i64 { 37 let buf: *u8 = sys_mmap(4096) 38 var o: i64 = nx_ipp_begin(buf, 1, 1, NX_IPP_STATUS_OK, 1) 39 o = nx_ipp_group(buf, o, NX_IPP_GRP_PRINTER) 40 o = nx_ipp_attr(buf, o, NX_IPP_VT_TEXT, "printer-make-and-model", 22, "Brother DCP-L2540DW series", 26) 41 o = nx_ipp_attr_int(buf, o, NX_IPP_VT_ENUM, "printer-state", 13, NX_IPP_PSTATE_STOPPED) 42 o = nx_ipp_attr(buf, o, NX_IPP_VT_KEYWORD, "printer-state-reasons", 21, "media-empty", 11) 43 o = nx_ipp_attr_add(buf, o, NX_IPP_VT_KEYWORD, "toner-low-warning", 17) 44 o = nx_ipp_attr_bool(buf, o, "printer-is-accepting-jobs", 25, 1) 45 o = nx_ipp_attr(buf, o, NX_IPP_VT_KEYWORD, "uri-security-supported", 22, "none", 4) 46 o = nx_ipp_attr(buf, o, NX_IPP_VT_KEYWORD, "uri-authentication-supported", 28, "none", 4) 47 o = nx_ipp_attr_int(buf, o, NX_IPP_VT_INTEGER, "marker-levels", 13, 0) 48 o = nx_ipp_attr_int(buf, o, NX_IPP_VT_INTEGER, "marker-low-levels", 17, 10) 49 o = nx_ipp_attr_int(buf, o, NX_IPP_VT_INTEGER, "marker-high-levels", 18, 100) 50 o = nx_ipp_attr(buf, o, NX_IPP_VT_KEYWORD, "sides-supported", 15, "one-sided", 9) 51 o = nx_ipp_attr_add(buf, o, NX_IPP_VT_KEYWORD, "two-sided-long-edge", 19) 52 o = nx_ipp_attr(buf, o, NX_IPP_VT_KEYWORD, "sides-default", 13, "one-sided", 9) 53 o = nx_ipp_end(buf, o) 54 55 let html: *u8 = sys_mmap(16384) 56 let sc: *i64 = sys_mmap(128) as *i64 57 let hlen: i64 = nx_printers_render(html, buf, o, sc, 9991, 1198) 58 if hlen <= 0 { return 90 } 59 60 if contains(html, hlen, "Brother DCP-L2540DW") != 1 { return 91 } 61 if contains(html, hlen, "BLOCKED") != 1 { return 92 } 62 if contains(html, hlen, "media-empty") != 1 { return 93 } 63 if contains(html, hlen, "EXPOSED") != 1 { return 94 } 64 if contains(html, hlen, "EMPTY") != 1 { return 95 } 65 if contains(html, hlen, "Paper waste") != 1 { return 96 } 66 if contains(html, hlen, "CVE-2024-47176") != 1 { return 97 } 67 if contains(html, hlen, "Real toner") != 1 { return 99 } 68 if contains(html, hlen, "99.91%") != 1 { return 100 } 69 // well-formed-ish: ends with </html> 70 if contains(html, hlen, "</html>") != 1 { return 98 } 71 72 t_puts("nx_printers_render: PASS (HTML surfaces model + BLOCKED + media-empty + EXPOSED + toner EMPTY + paper waste + CVE)\n") 73 return 0 74}