nx_discarded_outfit_test.nx source
↩ module page · 64 lines · 3182 B
1import "nx_syscalls.nx"
2import "nx_outfit_vocabulary.nx"
3import "nx_discarded_outfit.nx"
4
5func main() -> i64 {
6 // T1: nx_outfit_occludes_mask returns expected zones.
7 let mask1: i64 = nx_outfit_occludes_mask(NX_OUTFIT_MICRO_STRING_THONG)
8 if mask1 != NX_OCC_PUSSY { return 1 }
9
10 let mask2: i64 = nx_outfit_occludes_mask(NX_OUTFIT_MICRO_BIKINI)
11 if mask2 != NX_OCC_PUSSY + NX_OCC_BREASTS { return 2 }
12
13 let mask3: i64 = nx_outfit_occludes_mask(NX_OUTFIT_FISHNET_BODYSTOCKING)
14 if mask3 != NX_OCC_TORSO_FULL + NX_OCC_LEGS + NX_OCC_PUSSY + NX_OCC_BREASTS + NX_OCC_GLUTES { return 3 }
15
16 let mask4: i64 = nx_outfit_occludes_mask(NX_OUTFIT_SPORTS_BRA_TIGHT)
17 if mask4 != NX_OCC_BREASTS { return 4 }
18
19 // T2: conflict detection.
20 // micro thong + want pussy visible → conflict.
21 let conf1: i64 = nx_outfit_conflicts_with_visibility(NX_OUTFIT_MICRO_STRING_THONG, NX_OCC_PUSSY)
22 if conf1 != 1 { return 10 }
23 // sports bra + want pussy visible → no conflict (bra doesn't cover pussy).
24 let conf2: i64 = nx_outfit_conflicts_with_visibility(NX_OUTFIT_SPORTS_BRA_TIGHT, NX_OCC_PUSSY)
25 if conf2 != 0 { return 11 }
26 // sports bra + want breasts visible → conflict.
27 let conf3: i64 = nx_outfit_conflicts_with_visibility(NX_OUTFIT_SPORTS_BRA_TIGHT, NX_OCC_BREASTS)
28 if conf3 != 1 { return 12 }
29 // micro bikini + want pussy AND breasts visible → conflict (both).
30 let conf4: i64 = nx_outfit_conflicts_with_visibility(NX_OUTFIT_MICRO_BIKINI, NX_OCC_PUSSY + NX_OCC_BREASTS)
31 if conf4 != 1 { return 13 }
32
33 // T3: discarded phrase exists for MICRO_STRING_THONG.
34 let dp_en: *u8 = nx_discarded_outfit_phrase(NX_OUTFIT_MICRO_STRING_THONG, NX_LANG_EN, 0)
35 if dp_en == (0 as *u8) { return 20 }
36 // Should start with 't' for "tiny"
37 if dp_en[0] != 116 { return 21 } // 't' = 116
38
39 // T4: discarded JA phrase = "床に脱ぎ捨てたヒモパン" — starts with 床 (E5 BA 8A).
40 let dp_ja: *u8 = nx_discarded_outfit_phrase(NX_OUTFIT_MICRO_STRING_THONG, NX_LANG_JA, 0)
41 if dp_ja == (0 as *u8) { return 30 }
42 if dp_ja[0] != 0xe5 { return 31 }
43 if dp_ja[1] != 0xba { return 32 }
44 if dp_ja[2] != 0x8a { return 33 }
45
46 // T5: smart phrase selector — visibility WITHOUT conflict returns standard phrase.
47 let sp_safe: *u8 = nx_outfit_smart_phrase(NX_OUTFIT_SPORTS_BRA_TIGHT, NX_LANG_EN, 0, NX_OCC_PUSSY)
48 if sp_safe == (0 as *u8) { return 40 }
49 // Should start with 't' for "tight athletic sports bra"
50 if sp_safe[0] != 116 { return 41 }
51
52 // T6: smart phrase selector — CONFLICTING visibility returns discarded framing.
53 let sp_conf: *u8 = nx_outfit_smart_phrase(NX_OUTFIT_MICRO_STRING_THONG, NX_LANG_EN, 0, NX_OCC_PUSSY)
54 if sp_conf == (0 as *u8) { return 50 }
55 // Should start with 't' for "tiny string thong discarded..."
56 if sp_conf[0] != 116 { return 51 }
57 // Verify it's the DISCARDED phrase, not the standard one. Standard
58 // starts with "micro string thong, narrow string..." (m=109).
59 // Discarded starts with "tiny string thong discarded..." (t=116).
60 // We expect t (116) here, NOT m (109).
61 if sp_conf[0] == 109 { return 52 }
62
63 return 0
64}