dawproject_rs/api/timeline_mods/
marker.rs1#![allow(unused)]
2
3use {
4 super::super::fake_rng,
5 fake::{Dummy, Fake, Faker},
6 serde::{Deserialize, Serialize},
7};
8#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
9pub struct Marker {
10 #[serde(rename = "@name")]
11 #[serde(skip_serializing_if = "Option::is_none")]
12 name: Option<String>,
13 #[serde(rename = "@color")]
14 #[serde(skip_serializing_if = "Option::is_none")]
15 color: Option<String>,
16 #[serde(rename = "@comment")]
17 #[serde(skip_serializing_if = "Option::is_none")]
18 comment: Option<String>,
19
20 #[serde(rename = "@time")]
21 #[serde(skip_serializing_if = "Option::is_none")]
22 time: Option<Vec<f64>>,
23}
24
25impl Marker {
26 pub fn new_test(time: f64, name: String) -> Self {
27 Self {
28 name: Some(name),
29 color: None,
30 comment: None,
31 time: Some(vec![time]),
32 }
33 }
34
35 pub fn new_fake() -> Self {
36 let o: Self = Faker.fake_with_rng(&mut fake_rng());
37 o
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use {super::Marker, quick_xml::se::to_string, std::error::Error};
44
45 #[test]
46 pub fn se_test() -> Result<(), Box<dyn Error>> {
47 let mut o = Marker::new_test(1.0, "test".to_string());
48
49 match to_string(&o) {
50 Ok(o) => println!("{}", o),
51 Err(err) => return Err(err.into()),
52 }
53
54 Ok(())
55 }
56}