dawproject_rs/api/timeline_mods/
media_file.rs1#![allow(unused)]
2
3use super::time_unit::TimeUnit;
4
5use {
6 super::super::{add_one_get, fake_rng, file_reference::FileReference},
7 fake::{Dummy, Fake, Faker},
8 serde::{Deserialize, Serialize},
9};
10#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
11pub struct MediaFile {
12 #[serde(rename = "@id")]
13 #[serde(skip_serializing_if = "Option::is_none")]
14 id: Option<String>,
15 #[serde(rename = "@name")]
16 #[serde(skip_serializing_if = "Option::is_none")]
17 name: Option<String>,
18 #[serde(rename = "@color")]
19 #[serde(skip_serializing_if = "Option::is_none")]
20 color: Option<String>,
21 #[serde(rename = "@comment")]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 comment: Option<String>,
24 #[serde(rename = "@track")]
25 #[serde(skip_serializing_if = "Option::is_none")]
26 track: Option<String>,
27 #[serde(rename = "@timeUnit")]
28 #[serde(skip_serializing_if = "Option::is_none", default)]
29 pub time_unit: Option<TimeUnit>,
30 #[serde(rename = "File")]
31 #[serde(skip_serializing_if = "Option::is_none")]
32 files_sequence: Option<Vec<FileReference>>,
33 #[serde(rename = "@duration")]
34 #[serde(skip_serializing_if = "Option::is_none")]
35 duration: Option<f64>,
36}
37
38impl MediaFile {
39 pub fn new_test() -> Self {
40 Self {
41 id: Some(format!("id{}", add_one_get())),
42 name: None,
43 color: None,
44 comment: None,
45 track: None,
46 time_unit: None,
47 files_sequence: None,
48 duration: None,
49 }
50 }
51
52 pub fn new_fake() -> Self {
53 let o: Self = Faker.fake_with_rng(&mut fake_rng());
54 o
55 }
56}
57
58#[cfg(test)]
59mod tests {
60 use {super::MediaFile, quick_xml::se::to_string, std::error::Error};
61
62 #[test]
63 pub fn se_test() -> Result<(), Box<dyn Error>> {
64 let mut o = MediaFile::new_fake();
65
66 match to_string(&o) {
67 Ok(o) => println!("{}", o),
68 Err(err) => return Err(err.into()),
69 }
70
71 Ok(())
72 }
73}