nx_glute_aesthetic_composite_test.nx source
↩ module page · 60 lines · 2772 B
1import "nx_syscalls.nx"
2import "nx_glute_aesthetic_composite.nx"
3
4func main() -> i64 {
5 let result: *i64 = (sys_mmap(NX_GLUTE_AES_RES_FIELDS * 8 + 16)) as *i64
6
7 // T1: S-CLASS heart-peach target — all axes near 1024.
8 nx_glute_aesthetic_composite(950, 920, 960, 900, 880, result)
9 let v1: i64 = result[NX_GLUTE_AES_RES_VERDICT]
10 let c1: i64 = result[NX_GLUTE_AES_RES_COMPOSITE_Q10]
11 if v1 != NX_GLUTE_AES_S_CLASS { return 1 }
12 // composite = (950*30 + 920*25 + 960*20 + 900*15 + 880*10) / 100
13 // = (28500 + 23000 + 19200 + 13500 + 8800) / 100 = 930
14 if c1 < 920 { return 2 }
15 if c1 > 940 { return 3 }
16
17 // T2: MATCHES_TARGET — heart shape good but slight cellulite.
18 nx_glute_aesthetic_composite(800, 750, 500, 850, 800, result)
19 let v2: i64 = result[NX_GLUTE_AES_RES_VERDICT]
20 // composite = (800*30 + 750*25 + 500*20 + 850*15 + 800*10) / 100
21 // = (24000 + 18750 + 10000 + 12750 + 8000) / 100 = 735
22 if v2 != NX_GLUTE_AES_MATCHES_TARGET { return 10 }
23 let f2: i64 = result[NX_GLUTE_AES_RES_FAILING_AXIS]
24 if f2 != NX_GLUTE_AES_AXIS_ROUND { return 11 }
25
26 // T3: APPROACHING — flat shape, low lift.
27 nx_glute_aesthetic_composite(400, 350, 700, 600, 650, result)
28 let v3: i64 = result[NX_GLUTE_AES_RES_VERDICT]
29 // composite = (400*30 + 350*25 + 700*20 + 600*15 + 650*10) / 100
30 // = (12000 + 8750 + 14000 + 9000 + 6500) / 100 = 502
31 if v3 != NX_GLUTE_AES_APPROACHING { return 20 }
32 let f3: i64 = result[NX_GLUTE_AES_RES_FAILING_AXIS]
33 // 350 is the lowest score → AXIS_LIFT
34 if f3 != NX_GLUTE_AES_AXIS_LIFT { return 21 }
35
36 // T4: OFF_TARGET — flat saggy asymmetric.
37 nx_glute_aesthetic_composite(200, 150, 300, 200, 250, result)
38 let v4: i64 = result[NX_GLUTE_AES_RES_VERDICT]
39 // composite = (200*30 + 150*25 + 300*20 + 200*15 + 250*10) / 100
40 // = (6000 + 3750 + 6000 + 3000 + 2500) / 100 = 212
41 if v4 != NX_GLUTE_AES_OFF_TARGET { return 30 }
42
43 // T5: Mixed — strong shape but bad symmetry pulls verdict.
44 nx_glute_aesthetic_composite(950, 900, 850, 100, 800, result)
45 let v5: i64 = result[NX_GLUTE_AES_RES_VERDICT]
46 let f5: i64 = result[NX_GLUTE_AES_RES_FAILING_AXIS]
47 if f5 != NX_GLUTE_AES_AXIS_SYMMETRY { return 40 }
48 // composite = (950*30 + 900*25 + 850*20 + 100*15 + 800*10) / 100
49 // = (28500 + 22500 + 17000 + 1500 + 8000) / 100 = 775
50 if v5 != NX_GLUTE_AES_MATCHES_TARGET { return 41 }
51
52 // T6: All-zero input.
53 nx_glute_aesthetic_composite(0, 0, 0, 0, 0, result)
54 let v6: i64 = result[NX_GLUTE_AES_RES_VERDICT]
55 let c6: i64 = result[NX_GLUTE_AES_RES_COMPOSITE_Q10]
56 if v6 != NX_GLUTE_AES_OFF_TARGET { return 50 }
57 if c6 != 0 { return 51 }
58
59 return 0
60}