code wiki / (root) / nx_vesicle_test.nx

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}