code wiki / (root) / nx_magnet_owned_gate_t271.nx

nx_magnet_owned_gate_t271.nx source

↩ module page · 42 lines · 2697 B

1import "nx_magnet.nx" 2import "nx_gate_verdict.nx" 3func mt_add(p:*u8,at:i64,s:*u8)->i64{var i:i64=0;while s[i]!=0 as u8{p[at+i]=s[i];i=i+1};return at+i} 4func main()->i64{ 5 let c:*i64=gv_ctr();let o:*MgOwned=sys_mmap_try(__size_of(MgOwned)) as *MgOwned 6 if (o as i64)<=0{return 3};mg_owned_clear(o) 7 let basic:*u8="magnet:?xt=urn:btih:bc83ee370076e0d0e7384bf3ea5a8451ee643a8b" 8 gv_check("basic hash",mg_parse_owned(basic,mg_len(basic),o)==1,c) 9 gv_check("no trackers retained as empty",o.tracker_count==0,c) 10 gv_check("release",mg_owned_release(o)==0,c) 11 gv_check("idempotent release",mg_owned_release(o)==0,c) 12 let bad:*u8="magnet:?xt=urn:btih:0123" 13 gv_check("malformed identity",mg_parse_owned(bad,mg_len(bad),o)==0,c) 14 gv_check("failed parse owns no mapping",(o.storage as i64)==0,c) 15 gv_check("zero extent",mg_parse_owned(0 as *u8,0,o)==0,c) 16 let small:*u8="magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&dn=Name+One&tr=https%3A%2F%2Fexample.test" 17 gv_check("base32 and encoded values",mg_parse_owned(small,mg_len(small),o)==1,c) 18 gv_check("decoded name",mg_len(o.name)==8&&o.name[4]==32 as u8,c) 19 gv_check("decoded tracker count",o.tracker_count==1,c);mg_owned_release(o) 20 let nul:*u8="magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&dn=a%00b" 21 gv_check("decoded NUL refused",mg_parse_owned(nul,mg_len(nul),o)==0,c) 22 let esc:*u8="magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&tr=%zz" 23 gv_check("invalid percent refused",mg_parse_owned(esc,mg_len(esc),o)==0,c) 24 let dupe:*u8="magnet:?xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&xt=urn:btih:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 25 gv_check("duplicate identity explicitly refused",mg_parse_owned(dupe,mg_len(dupe),o)==0,c) 26 let trackers:i64=35;let textlen:i64=2001 27 let bytes:i64=mg_len(basic)+4+textlen+trackers*(4+textlen)+1 28 let u:*u8=sys_mmap_try(bytes);if (u as i64)<=0{return 3} 29 var n:i64=mt_add(u,0,basic);n=mt_add(u,n,"&dn=") 30 var i:i64=0;while i<textlen{u[n]=65 as u8;n=n+1;i=i+1} 31 var t:i64=0;while t<trackers{ 32 n=mt_add(u,n,"&tr=");i=0;while i<textlen{u[n]=66 as u8;n=n+1;i=i+1};t=t+1 33 };u[n]=0 as u8 34 gv_check("input-derived long name and trackers",mg_parse_owned(u,n,o)==1,c) 35 gv_check("all trackers retained beyond old ceiling",o.tracker_count==trackers,c) 36 gv_check("long display name retained",mg_len(o.name)==textlen,c) 37 var exact:i64=1;t=0;while t<trackers{if mg_len(o.trackers[t] as *u8)!=textlen{exact=0};t=t+1} 38 gv_check("each long tracker retained",exact==1,c) 39 gv_check("long mapping release",mg_owned_release(o)==0,c) 40 sys_munmap(u,bytes);sys_munmap(o as *u8,__size_of(MgOwned)) 41 return gv_verdict("MAGNET-OWNED",c,"owned parser only; legacy pointer API and end-to-end torrent resume remain unqualified") 42}