nx_v7_bundle_test.nx source
↩ module page · 57 lines · 2135 B
1import "nx_syscalls.nx"
2import "nx_v7_bundle.nx"
3
4func main() -> i64 {
5 let bundle: *i64 = (sys_mmap(NX_V7_BUNDLE_FIELDS * 8 + 16)) as *i64
6 nx_v7_bundle_init(bundle)
7
8 // T1: post-init all fields should be 0.
9 if bundle[NX_V7_FACE_X0] != 0 { return 1 }
10 if bundle[NX_V7_EYE_WIDTH_PX] != 0 { return 2 }
11 if bundle[NX_V7_POSE_KIND] != 0 { return 3 }
12
13 // T2: set face bbox, verify roundtrip.
14 nx_v7_bundle_set_face(bundle, 100, 50, 200, 150)
15 if bundle[NX_V7_FACE_X0] != 100 { return 10 }
16 if bundle[NX_V7_FACE_Y1] != 150 { return 11 }
17
18 // T3: set torso bbox.
19 nx_v7_bundle_set_torso(bundle, 80, 160, 220, 400)
20 if bundle[NX_V7_TORSO_X1] != 220 { return 20 }
21
22 // T4: set keystone eye width.
23 nx_v7_bundle_set_eye(bundle, 25, 5)
24 if bundle[NX_V7_EYE_WIDTH_PX] != 25 { return 30 }
25 if bundle[NX_V7_IRIS_RADIUS_PX] != 5 { return 31 }
26
27 // T5: get_face_bbox writes the 4 coords in order.
28 let face_out: *i64 = (sys_mmap(4 * 8 + 16)) as *i64
29 nx_v7_bundle_get_face_bbox(bundle, face_out)
30 if face_out[0] != 100 { return 40 }
31 if face_out[1] != 50 { return 41 }
32 if face_out[2] != 200 { return 42 }
33 if face_out[3] != 150 { return 43 }
34
35 // T6: pose_pack — 8-element face+torso pack for nx_pose_classify.
36 let pose_pack: *i64 = (sys_mmap(8 * 8 + 16)) as *i64
37 nx_v7_bundle_pose_pack(bundle, pose_pack)
38 if pose_pack[0] != 100 { return 50 }
39 if pose_pack[4] != 80 { return 51 }
40 if pose_pack[7] != 400 { return 52 }
41
42 // T7: response_pack — 12-element face+cheek+torso pack.
43 // Set cheek slots first.
44 bundle[NX_V7_CHEEK_L_X0] = 130
45 bundle[NX_V7_CHEEK_L_Y0] = 100
46 bundle[NX_V7_CHEEK_R_X1] = 170
47 bundle[NX_V7_CHEEK_R_Y1] = 120
48 let resp_pack: *i64 = (sys_mmap(12 * 8 + 16)) as *i64
49 nx_v7_bundle_response_pack(bundle, resp_pack)
50 if resp_pack[0] != 100 { return 60 } // face x0
51 if resp_pack[4] != 130 { return 61 } // cheek l_x0
52 if resp_pack[6] != 170 { return 62 } // cheek r_x1
53 if resp_pack[8] != 80 { return 63 } // torso x0
54 if resp_pack[11] != 400 { return 64 } // torso y1
55
56 return 0
57}