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