dawproject_rs/api/timeline_mods/
marker.rs

1#![allow(unused)]
2
3use {
4    super::super::fake_rng,
5    fake::{Dummy, Fake, Faker},
6    serde::{Deserialize, Serialize},
7};
8#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
9pub struct Marker {
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
20    #[serde(rename = "@time")]
21    #[serde(skip_serializing_if = "Option::is_none")]
22    time: Option<Vec<f64>>,
23}
24
25impl Marker {
26    pub fn new_test(time: f64, name: String) -> Self {
27        Self {
28            name: Some(name),
29            color: None,
30            comment: None,
31            time: Some(vec![time]),
32        }
33    }
34
35    pub fn new_fake() -> Self {
36        let o: Self = Faker.fake_with_rng(&mut fake_rng());
37        o
38    }
39}
40
41#[cfg(test)]
42mod tests {
43    use {super::Marker, quick_xml::se::to_string, std::error::Error};
44
45    #[test]
46    pub fn se_test() -> Result<(), Box<dyn Error>> {
47        let mut o = Marker::new_test(1.0, "test".to_string());
48
49        match to_string(&o) {
50            Ok(o) => println!("{}", o),
51            Err(err) => return Err(err.into()),
52        }
53
54        Ok(())
55    }
56}