code wiki / _hdl_build / nx_chat_unicode_gate_t59.nx

nx_chat_unicode_gate_t59.nx source

↩ module page · 22 lines · 1608 B

1import "../nx_chat_demo_unicode_t59.nx" 2import "nx_gate_verdict.nx" 3func main(argc:i64,argv:*i64)->i64{ 4 let c:*i64=gv_ctr() 5 let out:*u8=sys_mmap(CDA_TEXT_MAX+2) 6 let jp:*u8="こんにちは";let ru:*u8="Привет";let emoji:*u8="🌊";let ascii:*u8="Beach" 7 gv_check("Japanese preserved",cda_text(jp,out,CDA_TEXT_MAX)==cda_len(jp)&&cda_eq(jp,out)==1,c) 8 gv_check("Cyrillic preserved",cda_text(ru,out,CDA_TEXT_MAX)==cda_len(ru)&&cda_eq(ru,out)==1,c) 9 gv_check("emoji preserved",cda_text(emoji,out,CDA_TEXT_MAX)==cda_len(emoji)&&cda_eq(emoji,out)==1,c) 10 gv_check("ASCII preserved",cda_text(ascii,out,CDA_TEXT_MAX)==5&&cda_eq(ascii,out)==1,c) 11 out[6]=93 as u8 12 gv_check("exact capacity terminated",cda_text(ascii,out,5)==5&&out[5]==(0 as u8)&&out[6]==(93 as u8),c) 13 gv_check("oversize explicitly refused",cda_text(jp,out,14)==CDA_TEXT_TOO_LONG&&out[0]==(0 as u8),c) 14 let bad:*u8=sys_mmap(4);bad[0]=192 as u8;bad[1]=128 as u8;bad[2]=0 as u8 15 gv_check("malformed UTF8 refused",cda_text(bad,out,CDA_TEXT_MAX)==CDA_TEXT_BAD_UTF8,c) 16 let ctl:*u8=sys_mmap(4);ctl[0]=10 as u8;ctl[1]=9 as u8;ctl[2]=0 as u8 17 gv_check("linebreak and tab retained",cda_text(ctl,out,CDA_TEXT_MAX)==2&&out[0]==(10 as u8)&&out[1]==(9 as u8),c) 18 let json:*u8=sys_mmap(32);let n:i64=cda_jesc(json,0,ctl,2);json[n]=0 as u8 19 gv_check("JSON controls escaped",n==12&&cda_eq(json,"\\u000a\\u0009")==1,c) 20 gv_check("UTF8 JSON preserved",cda_jesc(json,0,jp,cda_len(jp))==cda_len(jp)&&utf8_validate(json,cda_len(jp))==cda_len(jp),c) 21 return gv_verdict("CHAT-UNICODE-CANDIDATE",c,"existing validator and JSON path; no store or HTTP acceptance") 22}