nx_vesicle_test.nx source
↩ module page · 47 lines · 1564 B
1// nx_vesicle_test.nx -- smoke for nx_vesicle.
2
3import "nx_syscalls.nx"
4import "nx_methyl.nx"
5import "nx_vesicle.nx"
6
7func main() -> i64 {
8 let sig: *u8 = (sys_mmap(96)) as *u8
9 sig[0] = 1 as u8
10 let mark: *NxMethylMark = nx_methyl_new(7, 0xcafe, 1000, sig, 96)
11 let body: *u8 = (sys_mmap(32)) as *u8
12 body[0] = 65 as u8
13
14 // 1: kind enum
15 if NX_VK_N_KINDS != 7 { return 1 }
16 if nx_vesicle_kind_is_known(NX_VK_TENSOR) != 1 { return 2 }
17 if nx_vesicle_kind_is_known(NX_VK_HUNT_REPORT) != 1 { return 3 }
18 if nx_vesicle_kind_is_known(7) != 0 { return 4 }
19
20 // 2: seal + verify roundtrip
21 let v: *NxVesicle = nx_vesicle_seal(10, 20, NX_VK_BYTES,
22 body, 32, mark, 1000)
23 if (v as i64) == 0 { return 5 }
24 if v.from_cell_id != 10 { return 6 }
25 if v.to_cell_id != 20 { return 7 }
26 if v.payload_kind != NX_VK_BYTES { return 8 }
27 if v.delivered != 0 { return 9 }
28
29 // 3: verify with correct originator passes
30 if nx_vesicle_verify(v, 2000, 5000, 7) != NX_VES_OK { return 10 }
31
32 // 4: verify with wrong originator fails
33 if nx_vesicle_verify(v, 2000, 5000, 999) != NX_VES_ERR_BAD_MARK { return 11 }
34
35 // 5: ack delivers
36 nx_vesicle_ack(v)
37 if nx_vesicle_is_delivered(v) != 1 { return 12 }
38
39 // 6: NULL mark refused at seal
40 let null_mark: *NxMethylMark = (0 as i64) as *NxMethylMark
41 if (nx_vesicle_seal(1, 2, NX_VK_BYTES, body, 32, null_mark, 1000) as i64) != 0 { return 13 }
42
43 // 7: payload kind getter
44 if nx_vesicle_payload_kind(v) != NX_VK_BYTES { return 14 }
45
46 return 0
47}