dawproject_rs/api/timeline_mods/
clips.rs

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