dawproject_rs/api/
meta_data.rs

1#![allow(unused)]
2
3use {
4    super::fake_rng,
5    fake::{Dummy, Fake, Faker},
6    serde::{Deserialize, Serialize},
7};
8#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
9enum MetaDataEnum {
10    Title(String),
11    Artist(String),
12    Album(String),
13    OriginalArtist(String),
14    Composer(String),
15    Songwriter(String),
16    Producer(String),
17    Arranger(String),
18    Year(String),
19    Genre(String),
20    Copyright(String),
21    Website(String),
22    Comment(String),
23}
24
25type MetaDataVec = Vec<MetaDataEnum>;
26
27#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
28pub struct MetaData {
29    #[serde(rename = "$value", default)]
30    meta_data: MetaDataVec,
31}
32
33impl MetaData {
34    pub fn new_test() -> Self {
35        MetaData {
36            meta_data: Vec::new(),
37        }
38    }
39
40    pub fn new_fake() -> Self {
41        let o: Self = Faker.fake_with_rng(&mut fake_rng());
42        o
43    }
44}
45
46#[cfg(test)]
47mod tests {
48    use {super::MetaData, quick_xml::se::to_string, std::error::Error};
49
50    #[test]
51    pub fn se_test() -> Result<(), Box<dyn Error>> {
52        let mut o = MetaData::new_fake();
53
54        match to_string(&o) {
55            Ok(o) => println!("{}", o),
56            Err(err) => return Err(err.into()),
57        }
58
59        Ok(())
60    }
61}