dawproject_rs/api/
time_signature_parameter.rs

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