nx_beauty_score_test.nx source
↩ module page · 66 lines · 2883 B
1import "nx_syscalls.nx"
2import "nx_phi.nx"
3import "nx_canon_proportions.nx"
4import "nx_beauty_score.nx"
5
6// Helper to write a (axis, value_px) pair into a measurement buffer.
7func meas_put(meas: *i64, i: i64, axis: i64, value_px: i64) -> i64 {
8 meas[i * NX_MEAS_FIELDS] = axis
9 meas[i * NX_MEAS_FIELDS + 1] = value_px
10 return 0
11}
12
13func main() -> i64 {
14 let canon: *i64 = (sys_mmap(NX_CANON_ENTRY_COUNT * NX_CANON_FIELDS * 8 + 16)) as *i64
15 nx_canon_build(canon)
16 let result: *i64 = (sys_mmap((NX_RES_PER_ENTRY_BASE + NX_CANON_ENTRY_COUNT) * 8 + 16)) as *i64
17
18 // T1: S-class canonical measurement bundle.
19 // eye_width=20px -> face_width=100 face_height=140 face_height/face_width=1.4 ~phi
20 // bust=180 waist=111 hip=180 => bust/waist=1.62 hip/waist=1.62 ~phi
21 // total_height=1050 navel=649 (1050/649=1.618 ~phi)
22 let meas: *i64 = (sys_mmap(32 * NX_MEAS_FIELDS * 8 + 16)) as *i64
23 meas_put(meas, 0, NX_AXIS_EYE_WIDTH, 20)
24 meas_put(meas, 1, NX_AXIS_EYE_TO_EYE, 20)
25 meas_put(meas, 2, NX_AXIS_MOUTH_WIDTH, 40)
26 meas_put(meas, 3, NX_AXIS_FACE_WIDTH, 100)
27 meas_put(meas, 4, NX_AXIS_FACE_HEIGHT, 140)
28 meas_put(meas, 5, NX_AXIS_SHOULDER_WIDTH, 300)
29 meas_put(meas, 6, NX_AXIS_BUST_WIDTH, 180)
30 meas_put(meas, 7, NX_AXIS_WAIST_WIDTH, 111)
31 meas_put(meas, 8, NX_AXIS_HIP_WIDTH, 180)
32 meas_put(meas, 9, NX_AXIS_NAVEL_HEIGHT, 649)
33 meas_put(meas, 10, NX_AXIS_TOTAL_HEIGHT, 1050)
34 meas_put(meas, 11, NX_AXIS_ARM_SPAN, 1050)
35 meas_put(meas, 12, NX_AXIS_FEMUR_LENGTH, 280)
36 meas_put(meas, 13, NX_AXIS_SHIN_LENGTH, 210)
37 meas_put(meas, 14, NX_AXIS_HAND_LENGTH, 140)
38 meas_put(meas, 15, NX_AXIS_FOOT_LENGTH, 140)
39 nx_beauty_score(canon, meas, 16, result)
40 let comp: i64 = result[NX_RES_COMPOSITE]
41 let verdict: i64 = result[NX_RES_VERDICT]
42 let matched: i64 = result[NX_RES_MATCHED]
43 if matched < 10 { return 1 }
44 if verdict != NX_BEAUTY_S_CLASS {
45 if verdict != NX_BEAUTY_A_CLASS { return 2 }
46 }
47
48 // T2: Off-canon bundle -- waist same as bust, hip same as waist (no hourglass).
49 let meas2: *i64 = (sys_mmap(8 * NX_MEAS_FIELDS * 8 + 16)) as *i64
50 meas_put(meas2, 0, NX_AXIS_EYE_WIDTH, 20)
51 meas_put(meas2, 1, NX_AXIS_FACE_WIDTH, 100)
52 meas_put(meas2, 2, NX_AXIS_FACE_HEIGHT, 140)
53 meas_put(meas2, 3, NX_AXIS_BUST_WIDTH, 150)
54 meas_put(meas2, 4, NX_AXIS_WAIST_WIDTH, 150) // BAD: equal to bust
55 meas_put(meas2, 5, NX_AXIS_HIP_WIDTH, 150) // BAD: equal to waist
56 nx_beauty_score(canon, meas2, 6, result)
57 let v2: i64 = result[NX_RES_VERDICT]
58 if v2 == NX_BEAUTY_S_CLASS { return 10 }
59
60 // T3: Empty measurement -> UNKNOWN
61 nx_beauty_score(canon, meas, 0, result)
62 let v3: i64 = result[NX_RES_VERDICT]
63 if v3 != NX_BEAUTY_UNKNOWN { return 20 }
64
65 return 0
66}