nx_tracker_test.nx source
↩ module page · 45 lines · 2179 B
1// nx_tracker_test.nx -- KAT for tracker announce build + compact-peer parse.
2// Native sovereign lane; exit 0 = pass, N = assertion N failed.
3
4import "nx_str.nx"
5import "nx_tracker.nx"
6
7func main() -> i64 {
8 // --- %-encode: 'A' unreserved, 0x00 + 0xFF escaped ---
9 let ib: *u8 = sys_mmap(3)
10 ib[0] = 0x41; ib[1] = 0x00; ib[2] = 0xFF
11 let oe: *u8 = sys_mmap(16)
12 let on: i64 = nx_trk_pct_encode(ib, 3, oe)
13 if on != 7 { return 1 } // "A%00%ff"
14 if (oe[0] as i64) != 0x41 { return 2 }
15 if (oe[1] as i64) != 0x25 { return 3 } // '%'
16 if (oe[2] as i64) != 0x30 { return 4 } // '0'
17 if (oe[5] as i64) != 0x66 { return 5 } // 'f'
18
19 // --- announce path build ---
20 let ih: *u8 = sys_mmap(20)
21 let pid: *u8 = sys_mmap(20)
22 var i: i64 = 0
23 while i < 20 { ih[i] = 0xAB; pid[i] = 0x2D; i = i + 1 } // info_hash 0xAB*20; peer_id '-'*20 (unreserved)
24 let path: *u8 = sys_mmap(512)
25 nx_tracker_build_path("/announce", 9, ih, pid, 6881, 1024, path)
26 if nx_str_str(path, "/announce?info_hash=") != 0 { return 6 }
27 if nx_str_str(path, "%ab%ab") < 0 { return 7 } // escaped info_hash
28 if nx_str_str(path, "&port=6881") < 0 { return 8 }
29 if nx_str_str(path, "&left=1024") < 0 { return 9 }
30 if nx_str_str(path, "&compact=1") < 0 { return 10 }
31
32 // --- compact peer parse: d5:peers6:<127.0.0.1:6881>e (built byte-wise; embedded nulls) ---
33 let resp: *u8 = sys_mmap(64)
34 resp[0]=0x64; resp[1]=0x35; resp[2]=0x3A; resp[3]=0x70; resp[4]=0x65; resp[5]=0x65; resp[6]=0x72; resp[7]=0x73; resp[8]=0x36; resp[9]=0x3A
35 resp[10]=127; resp[11]=0; resp[12]=0; resp[13]=1; resp[14]=0x1A; resp[15]=0xE1
36 resp[16]=0x65 // 'e'
37 let ips: *i64 = sys_mmap(8 * 8) as *i64
38 let ports: *i64 = sys_mmap(8 * 8) as *i64
39 let np: i64 = nx_tracker_parse_peers(resp, 17, ips, ports, 8)
40 if np != 1 { return 11 }
41 if ips[0] != 0x7F000001 { return 12 } // 127.0.0.1
42 if ports[0] != 6881 { return 13 } // 0x1AE1
43
44 return 0
45}