dawproject_rs/api/timeline_mods/
markers.rs

1#![allow(unused)]
2use {
3    super::{
4        super::add_one_get,
5        super::fake_rng,
6        super::timeline_mods::{marker::Marker, time_unit::TimeUnit},
7        super::track::Track,
8    },
9    fake::{Dummy, Fake, Faker},
10    serde::{Deserialize, Serialize},
11};
12
13#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
14pub enum MarkersTrackEnum {
15    Track(Track),
16}
17
18#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
19pub struct Markers {
20    #[serde(rename = "@id")]
21    #[serde(skip_serializing_if = "Option::is_none")]
22    id: Option<String>,
23    #[serde(rename = "@name")]
24    #[serde(skip_serializing_if = "Option::is_none")]
25    name: Option<String>,
26    #[serde(rename = "@color")]
27    #[serde(skip_serializing_if = "Option::is_none")]
28    color: Option<String>,
29    #[serde(rename = "@comment")]
30    #[serde(skip_serializing_if = "Option::is_none")]
31    comment: Option<String>,
32    #[serde(rename = "$value", default)]
33    track: Option<MarkersTrackEnum>,
34    #[serde(rename = "@timeUnit")]
35    #[serde(skip_serializing_if = "Option::is_none", default)]
36    pub time_unit: Option<TimeUnit>,
37
38    #[serde(rename = "Marker")]
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub markers: Option<Vec<Marker>>,
41}
42
43impl Markers {
44    pub fn new_test() -> Self {
45        Self {
46            id: Some(format!("id{}", add_one_get())),
47            name: None,
48            color: None,
49            comment: None,
50            track: None,
51            time_unit: None,
52            markers: Some(vec![]),
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::Markers, quick_xml::se::to_string, std::error::Error};
65
66    #[test]
67    pub fn se_test() -> Result<(), Box<dyn Error>> {
68        let mut o = Markers::new_fake();
69
70        match to_string(&o) {
71            Ok(o) => println!("{}", o),
72            Err(err) => return Err(err.into()),
73        }
74
75        Ok(())
76    }
77}