dawproject_rs/api/
transport.rs

1#![allow(unused)]
2
3use super::{real_parameter::RealParameter, time_signature_parameter::TimeSignatureParameter};
4
5use {
6    super::fake_rng,
7    fake::{Dummy, Fake, Faker},
8    serde::{Deserialize, Serialize},
9};
10
11#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
12pub enum TransportSequence {
13    Tempo(RealParameter),
14    TimeSignature(TimeSignatureParameter),
15}
16
17type TransportSequenceVec = Vec<TransportSequence>;
18
19#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
20pub struct Transport {
21    #[serde(rename = "$value", default)]
22    pub sequence: TransportSequenceVec,
23}
24
25impl Transport {
26    pub fn new_test() -> Self {
27        Self { sequence: vec![] }
28    }
29
30    pub fn new_fake() -> Self {
31        let o: Self = Faker.fake_with_rng(&mut fake_rng());
32        o
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use {super::Transport, quick_xml::se::to_string, std::error::Error};
39
40    #[test]
41    pub fn se_test() -> Result<(), Box<dyn Error>> {
42        let mut o = Transport::new_fake();
43
44        match to_string(&o) {
45            Ok(o) => println!("{}", o),
46            Err(err) => return Err(err.into()),
47        }
48
49        Ok(())
50    }
51}