Buttplug sex toy control library
1mod util;
2//use buttplug::util::async_manager;
3use test_case::test_case;
4use util::device_test::DeviceTestCase;
5
6async fn load_test_case(test_file: &str) -> DeviceTestCase {
7 // Load the file list from the test cases directory
8 let test_file_path =
9 std::path::Path::new(&std::env::var("CARGO_MANIFEST_DIR").expect("Should have manifest path"))
10 .join("tests")
11 .join("util")
12 .join("device_test")
13 .join("device_test_case")
14 .join(test_file);
15 // Given the test case object, run the test across all client versions.
16 let yaml_test_case = std::fs::read_to_string(&test_file_path)
17 .unwrap_or_else(|_| panic!("Cannot read file {:?}", test_file_path));
18 serde_yaml::from_str(&yaml_test_case).expect("Could not parse yaml for file.")
19}
20
21//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
22#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
23#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
24#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
25#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
26#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
27#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
28#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
29#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
30#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
31#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
32#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
33#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
34#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
35#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
36#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
37//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
38#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
39#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
40#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
41#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
42#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
43#[test_case("test_hismith_sinloli_aston.yaml" ; "Hismith Mini Protocol - Sinloli Aston")]
44#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
45#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
46#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
47#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
48#[test_case("test_itoys_twinklingstars.yaml" ; "iToys Protocol - Twinkling Stars")]
49#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
50#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
51#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
52#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
53#[test_case("test_kiiroo_powershot.yaml" ; "Kiiroo PowerShot Protocol")]
54#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
55#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
56#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
57#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
58#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
59#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
60#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
61#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
62#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
63#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
64#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
65#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
66#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
67#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
68//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
69#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
70//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
71//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
72#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
73#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
74#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
75#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
76#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
77////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
78#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
79#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
80#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
81#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
82#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
83#[test_case("test_sexverse_cali.yaml" ; "Sexverse Protocol v1 - Cali")]
84#[test_case("test_sexverse_nolan.yaml" ; "Sexverse Protocol v2 - Nolan")]
85#[test_case("test_sexverse_olis.yaml" ; "Sexverse Protocol v1 - Olis")]
86#[test_case("test_sexverse_rex.yaml" ; "Sexverse Protocol v1 - Rex")]
87#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
88#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
89#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
90#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
91#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
92#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
93#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
94#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
95#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
96#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
97#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
98#[test_case("test_satisfyer_triple_vibrator.yaml" ; "Satisfyer Protocol - Triple Vibrator")]
99#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
100#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
101#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
102#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
103#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
104#[test_case("test_sexverse_heart_protocol.yaml" ; "Sexverse Heart Protocol")]
105#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
106#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
107#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
108#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
109#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
110#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
111#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
112#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
113#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
114#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
115#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
116#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
117#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
118#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
119#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
120#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
121#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
122#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
123#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
124#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
125#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
126#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
127#[test_case("test_vvd_vkini_protocol.yaml" ; "VVD Vikini (metaXsire v4) Protocol")]
128#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
129#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
130#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
131#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
132#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
133#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
134#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
135#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
136#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
137#[tokio::test]
138async fn test_device_protocols_embedded_v4(test_file: &str) {
139 //tracing_subscriber::fmt::init();
140 util::device_test::client::client_v4::run_embedded_test_case(&load_test_case(test_file).await)
141 .await;
142}
143
144//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
145#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
146#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
147#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
148#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
149#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
150#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
151#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
152#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
153#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
154#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
155#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
156#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
157#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
158#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
159#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
160//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
161#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
162#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
163#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
164#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
165#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
166#[test_case("test_hismith_sinloli_aston.yaml" ; "Hismith Mini Protocol - Sinloli Aston")]
167#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
168#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
169#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
170#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
171#[test_case("test_itoys_twinklingstars.yaml" ; "iToys Protocol - Twinkling Stars")]
172#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
173#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
174#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
175#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
176#[test_case("test_kiiroo_powershot.yaml" ; "Kiiroo PowerShot Protocol")]
177#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
178#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
179#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
180#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
181#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
182#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
183#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
184#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
185#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
186#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
187#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
188#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
189#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
190#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
191//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
192#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
193//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
194//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
195#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
196#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
197#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
198#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
199#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
200////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
201#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
202#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
203#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
204#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
205#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
206#[test_case("test_sexverse_cali.yaml" ; "metaXsire Protocol - Cali")]
207#[test_case("test_sexverse_nolan.yaml" ; "metaXsire Protocol v2 - Nolan")]
208#[test_case("test_sexverse_olis.yaml" ; "metaXsire Protocol - Olis")]
209#[test_case("test_sexverse_rex.yaml" ; "metaXsire Protocol - Rex")]
210#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
211#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
212#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
213#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
214#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
215#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
216#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
217#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
218#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
219#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
220#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
221#[test_case("test_satisfyer_triple_vibrator.yaml" ; "Satisfyer Protocol - Triple Vibrator")]
222#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
223#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
224#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
225#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
226#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
227#[test_case("test_sexverse_heart_protocol.yaml" ; "Sexverse Heart Protocol")]
228#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
229#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
230#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
231#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
232#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
233#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
234#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
235#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
236#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
237#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
238#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
239#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
240#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
241#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
242#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
243#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
244#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
245#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
246#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
247#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
248#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
249#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
250#[test_case("test_vvd_vkini_protocol.yaml" ; "VVD Vikini (metaXsire v4) Protocol")]
251#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
252#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
253#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
254#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
255#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
256#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
257#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
258#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
259#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
260#[tokio::test]
261async fn test_device_protocols_json_v4(test_file: &str) {
262 //tracing_subscriber::fmt::init();
263 util::device_test::client::client_v4::run_json_test_case(&load_test_case(test_file).await).await;
264}
265
266//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
267#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
268#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
269#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
270#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
271#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
272#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
273#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
274#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
275#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
276#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
277#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
278#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
279#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
280#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
281#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
282//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
283#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
284#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
285#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
286#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
287#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
288#[test_case("test_hismith_sinloli_aston.yaml" ; "Hismith Mini Protocol - Sinloli Aston")]
289#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
290#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
291#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
292#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
293#[test_case("test_itoys_twinklingstars.yaml" ; "iToys Protocol - Twinkling Stars")]
294#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
295#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
296#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
297#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
298#[test_case("test_kiiroo_powershot.yaml" ; "Kiiroo PowerShot Protocol")]
299#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
300#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
301#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
302#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
303#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
304#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
305#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
306#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
307#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
308#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
309#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
310#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
311#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
312#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
313//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
314#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
315//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
316//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
317#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
318#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
319#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
320#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
321#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
322////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
323#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
324#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
325#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
326#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
327#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
328#[test_case("test_sexverse_cali.yaml" ; "metaXsire Protocol - Cali")]
329#[test_case("test_sexverse_nolan.yaml" ; "metaXsire Protocol v2 - Nolan")]
330#[test_case("test_sexverse_olis.yaml" ; "metaXsire Protocol - Olis")]
331#[test_case("test_sexverse_rex.yaml" ; "metaXsire Protocol - Rex")]
332#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
333#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
334#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
335#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
336#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
337#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
338#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
339#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
340#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
341#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
342#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
343#[test_case("test_satisfyer_triple_vibrator.yaml" ; "Satisfyer Protocol - Triple Vibrator")]
344#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
345#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
346#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
347#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
348#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
349#[test_case("test_sexverse_heart_protocol.yaml" ; "Sexverse Heart Protocol")]
350#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
351#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
352#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
353#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
354#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
355#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
356#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
357#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
358#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
359#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
360#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
361#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
362#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
363#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
364#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
365#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
366#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
367#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
368#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
369#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
370#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
371#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
372#[test_case("test_vvd_vkini_protocol.yaml" ; "VVD Vikini (metaXsire v4) Protocol")]
373#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
374#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
375#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
376#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
377#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
378#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
379#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
380#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
381#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
382#[tokio::test]
383async fn test_device_protocols_embedded_v3(test_file: &str) {
384 //tracing_subscriber::fmt::init();
385 util::device_test::client::client_v3::run_embedded_test_case(&load_test_case(test_file).await)
386 .await;
387}
388
389//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
390#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
391#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
392#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
393#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
394#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
395#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
396#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
397#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
398#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
399#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
400#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
401#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
402#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
403#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
404#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
405//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
406#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
407#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
408#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
409#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
410#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
411#[test_case("test_hismith_sinloli_aston.yaml" ; "Hismith Mini Protocol - Sinloli Aston")]
412#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
413#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
414#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
415#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
416#[test_case("test_itoys_twinklingstars.yaml" ; "iToys Protocol - Twinkling Stars")]
417#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
418#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
419#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
420#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
421#[test_case("test_kiiroo_powershot.yaml" ; "Kiiroo PowerShot Protocol")]
422#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
423#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
424#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
425#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
426#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
427#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
428#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
429#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
430#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
431#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
432#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
433#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
434#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
435#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
436//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
437#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
438//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
439//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
440#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
441#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
442#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
443#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
444#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
445////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
446#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
447#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
448#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
449#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
450#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
451#[test_case("test_sexverse_cali.yaml" ; "metaXsire Protocol - Cali")]
452#[test_case("test_sexverse_nolan.yaml" ; "metaXsire Protocol v2 - Nolan")]
453#[test_case("test_sexverse_olis.yaml" ; "metaXsire Protocol - Olis")]
454#[test_case("test_sexverse_rex.yaml" ; "metaXsire Protocol - Rex")]
455#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
456#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
457#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
458#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
459#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
460#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
461#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
462#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
463#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
464#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
465#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
466#[test_case("test_satisfyer_triple_vibrator.yaml" ; "Satisfyer Protocol - Triple Vibrator")]
467#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
468#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
469#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
470#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
471#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
472#[test_case("test_sexverse_heart_protocol.yaml" ; "Sexverse Heart Protocol")]
473#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
474#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
475#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
476#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
477#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
478#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
479#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
480#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
481#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
482#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
483#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
484#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
485#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
486#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
487#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
488#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
489#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
490#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
491#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
492#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
493#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
494#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
495#[test_case("test_vvd_vkini_protocol.yaml" ; "VVD Vikini (metaXsire v4) Protocol")]
496#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
497#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
498#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
499#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
500#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
501#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
502#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
503#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
504#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
505#[tokio::test]
506async fn test_device_protocols_json_v3(test_file: &str) {
507 //tracing_subscriber::fmt::init();
508 util::device_test::client::client_v3::run_json_test_case(&load_test_case(test_file).await).await;
509}
510
511/*
512//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
513#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
514#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
515#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
516#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
517#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
518#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
519#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
520#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
521#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
522#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
523#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
524#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
525#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
526#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
527#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
528//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
529#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
530#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
531#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
532#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
533#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
534#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
535#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
536#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
537#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
538//#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
539//#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
540//#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
541//#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
542//#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
543//#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
544//#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
545//#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
546#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
547#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
548#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
549//#[test_case("test_longlosttouch_protocol.yaml" ; "LongLostTouch Protocol")]
550#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
551//#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
552//#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
553#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
554#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
555//#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
556#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
557//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
558#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
559//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
560//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
561//#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
562//#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
563#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
564#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
565#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
566////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
567#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
568#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
569//#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
570//#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
571#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
572//#[test_case("test_sexverse_cali.yaml" ; "metaXsire Protocol - Cali")]
573//#[test_case("test_sexverse_nolan.yaml" ; "metaXsire Protocol v2 - Nolan")]
574//#[test_case("test_sexverse_olis.yaml" ; "metaXsire Protocol - Olis")]
575//#[test_case("test_sexverse_rex.yaml" ; "metaXsire Protocol - Rex")]
576#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
577#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
578//#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
579#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
580//#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
581#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
582#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
583#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
584#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
585#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
586#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
587//#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
588//#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
589//#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
590#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
591#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
592//#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
593#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
594#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
595//#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
596//#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
597//#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
598//#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
599//#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
600//#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
601//#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
602//#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
603//#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
604//#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
605#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
606#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
607#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
608//#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
609//#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
610//#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
611//#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
612//#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
613//#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
614#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
615#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
616#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
617#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
618#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
619#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
620#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
621#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
622#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
623#[tokio::test]
624async fn test_device_protocols_embedded_v2(test_file: &str) {
625 tracing_subscriber::fmt::init();
626 util::device_test::client::client_v2::run_embedded_test_case(&load_test_case(test_file).await)
627 .await;
628}
629
630//#[test_case("test_cowgirl_cone_protocol.yaml" ; "The Cowgirl Cone Protocol")]
631#[test_case("test_activejoy_protocol.yaml" ; "ActiveJoy Protocol")]
632#[test_case("test_adrienlastic_protocol.yaml" ; "Adrien Lastic Protocol")]
633#[test_case("test_amorelie_joy_protocol.yaml" ; "Amorelie Joy Protocol")]
634#[test_case("test_aneros_protocol.yaml" ; "Aneros Protocol")]
635#[test_case("test_ankni_protocol_no_handshake.yaml" ; "Ankni Protocol - No Handshake")]
636#[test_case("test_ankni_protocol.yaml" ; "Ankni Protocol")]
637#[test_case("test_bananasome_protocol.yaml" ; "Bananasome Protocol")]
638#[test_case("test_cachito_protocol.yaml" ; "Cachito Protocol")]
639#[test_case("test_cowgirl_protocol.yaml" ; "The Cowgirl Protocol")]
640#[test_case("test_cupido_protocol.yaml" ; "Cupido Protocol")]
641#[test_case("test_deepsire.yaml" ; "DeepSire Protocol")]
642#[test_case("test_feelingso.yaml" ; "FeelingSo Protocol")]
643#[test_case("test_fleshy_thrust_protocol.yaml" ; "Fleshy Thrust Sync Protocol")]
644#[test_case("test_foreo_protocol.yaml" ; "Foreo Protocol")]
645#[test_case("test_fox_protocol.yaml" ; "Fox Protocol")]
646//#[test_case("test_fredorch_protocol.yaml" ; "Fredorch Protocol")]
647#[test_case("test_galaku_nebula.yaml" ; "Galaku Pump Protocol - Nebula")]
648#[test_case("test_galaku.yaml" ; "Galaku Protocol")]
649#[test_case("test_hgod_protocol.yaml" ; "Hgod Protocol")]
650#[test_case("test_hismith_auxfun_box.yaml" ; "Hismith Mini Protocol - Auxfun Box")]
651#[test_case("test_hismith_sinloli.yaml" ; "Hismith Mini Protocol - Sinloli")]
652#[test_case("test_hismith_thrusting_cup.yaml" ; "Hismith Protocol - Thrusting Cup")]
653#[test_case("test_hismith_v4.yaml" ; "Hismith Mini Protocol - Hismith v4")]
654#[test_case("test_hismith_wildolo.yaml" ; "Hismith Protocol - Wildolo")]
655#[test_case("test_itoys_protocol.yaml" ; "iToys Protocol")]
656//#[test_case("test_joyhub_moonhorn.yaml" ; "JoyHub Protocol - Moonhorn")]
657//#[test_case("test_joyhub_petalwish_compat.yaml" ; "JoyHub Protocol - Petalwish Compat")]
658//#[test_case("test_joyhub_petalwish.yaml" ; "JoyHub Protocol - Petalwish")]
659//#[test_case("test_joyhub_roselin.yaml" ; "JoyHub Protocol - RoseLin")]
660//#[test_case("test_kiiroo_prowand.yaml" ; "Kiiroo ProWand Protocol")]
661//#[test_case("test_kiiroo_spot.yaml" ; "Kiiroo Spot Protocol")]
662//#[test_case("test_lelo_f1sv1.yaml" ; "Lelo F1s V1 Protocol")]
663//#[test_case("test_lelo_f1sv2.yaml" ; "Lelo F1s V2 Protocol")]
664#[test_case("test_lelo_idawave.yaml" ; "Lelo Harmony Protocol - Ida Wave")]
665#[test_case("test_lelo_tianiharmony.yaml" ; "Lelo Harmony Protocol - Tiani Harmony")]
666#[test_case("test_leten_protocol.yaml" ; "Leten Protocol")]
667//#[test_case("test_longlosttouch_protocol.yaml" ; "LongLostTouch Protocol")]
668#[test_case("test_loob_protocol.yaml" ; "Joyroid Loob Protocol")]
669//#[test_case("test_lovehoney_desire_egg.yaml" ; "Lovehoney Desire Protocol - Love Egg")]
670//#[test_case("test_lovehoney_desire_prostate.yaml" ; "Lovehoney Desire Protocol - Prostate Vibe")]
671#[test_case("test_lovense_battery_non_default.yaml" ; "Lovense Protocol - Lovense Battery (Non-Default Devices)")]
672#[test_case("test_lovense_battery.yaml" ; "Lovense Protocol - Lovense Battery (Default Devices)")]
673//#[test_case("test_lovense_edge.yaml" ; "Lovense Protocol - Edge")]
674#[test_case("test_lovense_flexer_fw2.yaml" ; "Lovense Protocol - Flexer FW2")]
675//#[test_case("test_lovense_flexer_fw3.yaml" ; "Lovense Protocol - Flexer FW3")]
676#[test_case("test_lovense_max.yaml" ; "Lovense Protocol - Lovense Max (Vibrate/Constrict)")]
677//#[test_case("test_lovense_nora.yaml" ; "Lovense Protocol - Lovense Nora (Vibrate/Rotate)")]
678//#[test_case("test_lovense_osci3.yaml" ; "Lovense Protocol - Osci3")]
679//#[test_case("test_lovense_ridge_user_config.yaml" ; "Lovense Protocol - Lovense Ridge (User Config)")]
680//#[test_case("test_lovense_ridge.yaml" ; "Lovense Protocol - Lovense Ridge (Oscillate)")]
681#[test_case("test_lovense_single_vibrator.yaml" ; "Lovense Protocol - Single Vibrator Device")]
682#[test_case("test_luvmazer_protocol.yaml" ; "Luvmazer Protocol")]
683#[test_case("test_magic_motion_1_magic_cell.yaml" ; "MagicMotion Protocol 1 - Magic Cell")]
684////#[test_case("test_magic_motion_2_eidolon.yaml" ; "MagicMotion Protocol 2 - Eidolon")]
685#[test_case("test_magic_motion_2_equinox.yaml" ; "MagicMotion Protocol 2 - Equinox")]
686#[test_case("test_magic_motion_3_krush.yaml" ; "MagicMotion Protocol 3 - Krush")]
687//#[test_case("test_magic_motion_4_bobi.yaml" ; "MagicMotion Protocol 4 - Bobi")]
688//#[test_case("test_magic_motion_4_nyx.yaml" ; "MagicMotion Protocol 4 - Nyx")]
689#[test_case("test_meese_protocol.yaml" ; "Meese Protocol")]
690//#[test_case("test_sexverse_cali.yaml" ; "metaXsire Protocol - Cali")]
691//#[test_case("test_sexverse_nolan.yaml" ; "metaXsire Protocol v2 - Nolan")]
692//#[test_case("test_sexverse_olis.yaml" ; "metaXsire Protocol - Olis")]
693//#[test_case("test_sexverse_rex.yaml" ; "metaXsire Protocol - Rex")]
694#[test_case("test_mizzzee_protocol.yaml" ; "Mizz Zee Protocol")]
695#[test_case("test_mizzzee_v2_protocol.yaml" ; "Mizz Zee v2 Protocol")]
696//#[test_case("test_mizzzee_v3_protocol.yaml" ; "Mizz Zee v3 Protocol")]
697#[test_case("test_motorbunny_protocol.yaml" ; "Motorbunny Protocol")]
698//#[test_case("test_mysteryvibe.yaml" ; "Mysteryvibe Protocol")]
699#[test_case("test_nexus_revo.yaml" ; "Nexus Revo Protocol")]
700#[test_case("test_nobra_protocol.yaml" ; "Nobra Protocol")]
701#[test_case("test_omobo_protocol.yaml" ; "Omobo Protocol")]
702#[test_case("test_pink_punch_protocol.yaml" ; "Pink Punch Protocol")]
703#[test_case("test_sakuraneko_koikoi.yaml" ; "Sakuraneko Protocol - Koikoi")]
704#[test_case("test_sakuraneko_protocol.yaml" ; "Sakuraneko Protocol")]
705//#[test_case("test_satisfyer_dual_vibrator.yaml" ; "Satisfyer Protocol - Dual Vibrator")]
706//#[test_case("test_satisfyer_single_vibrator.yaml" ; "Satisfyer Protocol - Single Vibrator")]
707//#[test_case("test_sensee_capsule.yaml" ; "Sensee Capsule Protocol")]
708#[test_case("test_sensee_protocol.yaml" ; "Sensee Diandou Protocol - Rabbit")]
709#[test_case("test_serveu_protocol.yaml" ; "ServeU")]
710//#[test_case("test_sexverse_lg389_protocol.yaml" ; "Sexverse LG389 Protocol")]
711#[test_case("test_svakom_alex_v2.yaml" ; "Svakom Alex Neo 2")]
712#[test_case("test_svakom_alex.yaml" ; "Svakom Alex Neo")]
713//#[test_case("test_svakom_barnard.yaml" ; "Svakom (Fantasy Cup) Barnard")]
714//#[test_case("test_svakom_cocopro.yaml" ; "Svakom Coco Pro")]
715//#[test_case("test_svakom_ella.yaml" ; "Svakom V1 Protocol - Ella")]
716//#[test_case("test_svakom_iker.yaml" ; "Svakom Iker")]
717//#[test_case("test_svakom_mora_neo.yaml" ; "Svakom Mora Neo")]
718//#[test_case("test_svakom_pulse.yaml" ; "Svakom Pulse Protocol - Pulse Lite Neo")]
719//#[test_case("test_svakom_sam2.yaml" ; "Svakom Sam Neo 2 Pro")]
720//#[test_case("test_svakom_theodore.yaml" ; "Svakom V3 Protocol - Theodore")]
721//#[test_case("test_svakom_vivianna.yaml" ; "Svakom V2 Protocol - Vivianna")]
722//#[test_case("test_synchro_protocol.yaml" ; "Synchro Protocol")]
723#[test_case("test_tcode_linear_and_vibrate.yaml" ; "TCode (Linear + Vibrate)")]
724#[test_case("test_tryfun_blackhole_protocol.yaml" ; "TryFun Protocol - Black Hole Plus")]
725#[test_case("test_tryfun_meta2_protocol.yaml" ; "TryFun Protocol - Meta 2")]
726//#[test_case("test_tryfun_protocol.yaml" ; "TryFun Protocol")]
727//#[test_case("test_tryfun_surge.yaml" ; "TryFun Protocol - Surge Pro")]
728//#[test_case("test_user_config_display_name.yaml" ; "User Config Display Name")]
729//#[test_case("test_vorze_cyclone.yaml" ; "Vorze Protocol - Cyclone")]
730//#[test_case("test_vorze_ufo_tw.yaml" ; "Vorze Protocol - UFO TW")]
731//#[test_case("test_vorze_ufo.yaml" ; "Vorze Protocol - UFO")]
732#[test_case("test_wetoy_protocol.yaml" ; "WeToy Protocol")]
733#[test_case("test_wevibe_4plus.yaml" ; "WeVibe Protocol (Legacy) - 4 Plus")]
734#[test_case("test_wevibe_chorus.yaml" ; "WeVibe Protocol (Chorus) - Chorus")]
735#[test_case("test_wevibe_moxie.yaml" ; "WeVibe Protocol (8bit) - Moxie")]
736#[test_case("test_wevibe_pivot.yaml" ; "WeVibe Protocol (Legacy) - Pivot")]
737#[test_case("test_wevibe_vector.yaml" ; "WeVibe Protocol (8bit) - Vector")]
738#[test_case("test_xibao_protocol.yaml" ; "Xibao Protocol")]
739#[test_case("test_xiuxiuda_protocol.yaml" ; "Xiuxiuda Protocol")]
740#[test_case("test_xuanhuan_protocol.yaml" ; "Xuanhuan Protocol")]
741#[tokio::test]
742async fn test_device_protocols_json_v2(test_file: &str) {
743 util::device_test::client::client_v2::run_json_test_case(&load_test_case(test_file).await).await;
744}
745*/