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