code wiki / (root) / nx_v7_bundle_test.nx

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}