dawproject_rs/api/
time_signature_parameter.rs1#![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}