code wiki / (root) / nx_wflow_bind_event_gate_t282.nx

nx_wflow_bind_event_gate_t282.nx source

↩ module page · 36 lines · 2192 B

1import "nx_wflow_engine.nx" 2import "nx_gate_verdict.nx" 3func main(argc:i64,argv:*i64)->i64{ 4 if argc!=3{return 2} 5 let kn:i64=wf_atoi(argv[1] as *u8);let vn:i64=wf_atoi(argv[2] as *u8) 6 if kn<=0||vn<=0{return 2} 7 let key:*u8=sys_mmap_try(kn+1);let value:*u8=sys_mmap_try(vn+1) 8 if (key as i64)<=0||(value as i64)<=0{return 3} 9 var i:i64=0;while i<kn{key[i]=(97+i%26) as u8;i=i+1};key[kn]=0 10 i=0;while i<vn{value[i]=(65+i%26) as u8;i=i+1};value[vn]=0 11 let event:*u8=sys_mmap_try(slen("event~=" as *u8)+kn+vn+1) 12 var o:i64=wf_cat(event,0,"event~" as *u8);o=wf_cat(event,o,key);o=wf_cat(event,o,"=" as *u8);o=wf_cat(event,o,value);event[o]=0 13 let prefix:*u8="knowledge/gates/wflow-event-t282-" 14 let path:*u8=sys_mmap_try(slen(prefix)+__size_of(i64)*3+1) 15 o=wf_cat(path,0,prefix);o=wf_catn(path,o,__syscall(39,0,0,0,0,0,0));path[o]=0 16 let cx:*i64=sys_mmap_try(__size_of(i64)*3) as *i64;cx[2]=path as i64 17 let beforeSize:*i64=sys_mmap_try(__size_of(i64)) as *i64 18 let before:*u8=wf_readall(path,beforeSize) 19 var prior:i64=0;if (before as i64)>0{prior=beforeSize[0]} 20 let c:*i64=gv_ctr() 21 gv_check_eq("bind full event",wf_bind_event(cx,"review",event),1,c) 22 let size:*i64=sys_mmap_try(__size_of(i64)) as *i64 23 let actual:*u8=wf_readall(path,size) 24 let expected:*u8=sys_mmap_try(slen("WFVAR rid=review k= v=\n" as *u8)+kn+vn+1) 25 o=wf_cat(expected,0,"WFVAR rid=review k=" as *u8);o=wf_cat(expected,o,key);o=wf_cat(expected,o," v=" as *u8);o=wf_cat(expected,o,value);o=wf_cat(expected,o,"\n" as *u8);expected[o]=0 26 gv_check("journal readable",(actual as i64)>0,c) 27 if (actual as i64)>0{ 28 gv_check_eq("full key and value record extent",size[0],prior+o,c) 29 var equal:i64=1;i=0;while i<o&&prior+i<size[0]{if actual[prior+i]!=expected[i]{equal=0};i=i+1} 30 gv_check("all event bytes retained",equal==1&&size[0]==prior+o,c) 31 } 32 gv_check_eq("empty event",wf_bind_event(cx,"review",""),0,c) 33 gv_check_eq("non assignment fields",wf_bind_event(cx,"review","event~unused~~=ignored"),0,c) 34 gv_check_eq("empty and embedded-equals values",wf_bind_event(cx,"review","event~empty=~other=a=b"),2,c) 35 return gv_verdict("WFLOW-EVENT-OWNED-T282",c,"Actual journal bytes; downstream substitution qualification separate") 36}