dawproject_rs/api/device_mods/
clap_plugin.rs

1#![allow(unused)]
2use super::super::add_one_get;
3
4use {
5    super::super::fake_rng,
6    super::{device::DeviceElements, device_role::DeviceRole},
7    fake::{Dummy, Fake, Faker},
8    serde::{Deserialize, Serialize},
9};
10#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
11pub struct ClapPlugin {
12    #[serde(rename = "@id")]
13    #[serde(skip_serializing_if = "Option::is_none")]
14    id: Option<String>,
15    #[serde(rename = "$value", default)]
16    device_elements: DeviceElements,
17    #[serde(rename = "@deviceID")]
18    #[serde(skip_serializing_if = "Option::is_none")]
19    device_id: Option<String>,
20    #[serde(rename = "@deviceName")]
21    #[serde(skip_serializing_if = "Option::is_none")]
22    device_name: Option<String>,
23    #[serde(rename = "@deviceRole")]
24    #[serde(skip_serializing_if = "Option::is_none")]
25    device_role: Option<DeviceRole>,
26    #[serde(rename = "@deviceVendor")]
27    #[serde(skip_serializing_if = "Option::is_none")]
28    device_vendor: Option<String>,
29    #[serde(rename = "@loaded")]
30    #[serde(skip_serializing_if = "Option::is_none")]
31    loaded: Option<bool>,
32    #[serde(rename = "@pluginVersion")]
33    #[serde(skip_serializing_if = "Option::is_none")]
34    plugin_version: Option<String>,
35}
36
37impl ClapPlugin {
38    pub fn new_test() -> Self {
39        Self {
40            id: Some(format!("id{}", add_one_get())),
41            device_elements: vec![],
42            device_id: None,
43            device_name: None,
44            device_role: None,
45            device_vendor: None,
46            loaded: None,
47            plugin_version: None,
48        }
49    }
50
51    pub fn new_fake() -> Self {
52        let o: Self = Faker.fake_with_rng(&mut fake_rng());
53        o
54    }
55}
56
57#[cfg(test)]
58mod tests {
59    use {super::ClapPlugin, quick_xml::se::to_string, std::error::Error};
60
61    #[test]
62    pub fn se_test() -> Result<(), Box<dyn Error>> {
63        let mut o = ClapPlugin::new_fake();
64
65        match to_string(&o) {
66            Ok(o) => println!("{}", o),
67            Err(err) => return Err(err.into()),
68        }
69
70        Ok(())
71    }
72
73    #[test]
74    pub fn de_test() -> Result<(), Box<dyn Error>> {
75        let mut o = ClapPlugin::new_fake();
76
77        if let Some(o) = to_string(&o).ok() {
78            let o = r##"<ClapPlugin deviceID="org.surge-synth-team.surge-xt" deviceName="Surge XT" deviceRole="instrument" loaded="true" id="id7" name="Surge XT">
79            <Parameters/>
80            <Enabled value="true" id="id8" name="On/Off"/>
81            <State path="plugins/d19b1f6e-bbb6-42fe-a6c9-54b41d97a05d.clap-preset"/>
82          </ClapPlugin>"##;
83            let mut o: ClapPlugin = quick_xml::de::from_str(&o)?;
84            println!("Struct: {:#?}", o);
85        }
86
87        Ok(())
88    }
89}