dawproject_rs/api/device_mods/
plugin.rs

1#![allow(unused)]
2
3use super::{device::DeviceElements, device_role::DeviceRole};
4
5use {
6    super::{super::add_one_get, super::fake_rng},
7    fake::{Dummy, Fake, Faker},
8    serde::{Deserialize, Serialize},
9};
10
11#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
12pub struct Plugin {
13    // Extends device
14    #[serde(rename = "@id")]
15    id: Option<String>,
16    #[serde(rename = "$value", default)]
17    device_elements: DeviceElements,
18    #[serde(rename = "@deviceID")]
19    #[serde(skip_serializing_if = "Option::is_none")]
20    device_id: Option<String>,
21    #[serde(rename = "@deviceName")]
22    #[serde(skip_serializing_if = "Option::is_none")]
23    device_name: Option<String>,
24    #[serde(rename = "@deviceRole")]
25    #[serde(skip_serializing_if = "Option::is_none")]
26    device_role: Option<DeviceRole>,
27    #[serde(rename = "@deviceVendor")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    device_vendor: Option<String>,
30    #[serde(rename = "@loaded")]
31    #[serde(skip_serializing_if = "Option::is_none")]
32    loaded: Option<bool>,
33    #[serde(rename = "@pluginVersion")]
34    #[serde(skip_serializing_if = "Option::is_none")]
35    plugin_version: Option<String>,
36}
37
38impl Plugin {
39    pub fn new_test() -> Self {
40        Self {
41            id: Some(format!("id{}", add_one_get())),
42            device_elements: vec![],
43            device_id: None,
44            device_name: None,
45            device_role: None,
46            device_vendor: None,
47            loaded: None,
48            plugin_version: None,
49        }
50    }
51
52    pub fn new_fake() -> Self {
53        let o: Self = Faker.fake_with_rng(&mut fake_rng());
54        o
55    }
56}
57
58#[cfg(test)]
59mod tests {
60    use {super::Plugin, quick_xml::se::to_string, std::error::Error};
61
62    #[test]
63    pub fn se_test() -> Result<(), Box<dyn Error>> {
64        let mut o = Plugin::new_fake();
65
66        match to_string(&o) {
67            Ok(o) => println!("{}", o),
68            Err(err) => return Err(err.into()),
69        }
70
71        Ok(())
72    }
73}