dawproject_rs/api/
meta_data.rs1#![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}