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