bitpanda_csv/trade/
asset_class.rs1#[derive(Debug, Deserialize, Copy, Clone, Eq, PartialEq, Hash)]
7pub enum AssetClass {
8 Fiat,
9 #[serde(rename = "Stock (derivative)")]
10 Stock,
11 Cryptocurrency,
12 #[serde(rename = "ETF (derivative)")]
13 Etf,
14 Commodity,
15 Metal,
16}
17
18#[cfg(test)]
19mod test {
20
21 use super::*;
22
23 use pretty_assertions::assert_eq;
24 use std::io::Cursor;
25
26 #[test]
27 fn should_decode_asset_class() {
28 let csv = r#"id,asset_class
290,Fiat
301,Stock (derivative)
312,Cryptocurrency
323,ETF (derivative)
334,Commodity
345,Metal
35"#;
36 let buffer = Cursor::new(csv);
37 let mut reader = csv::Reader::from_reader(buffer);
38 let mut fakes: Vec<AssetClass> = Vec::new();
39 for result in reader.deserialize::<Fake>() {
40 fakes.push(result.expect("failed to decode").asset_class);
41 }
42 assert_eq!(
43 fakes,
44 vec![
45 AssetClass::Fiat,
46 AssetClass::Stock,
47 AssetClass::Cryptocurrency,
48 AssetClass::Etf,
49 AssetClass::Commodity,
50 AssetClass::Metal
51 ]
52 );
53 }
54
55 #[derive(Deserialize)]
56 #[allow(dead_code)]
57 struct Fake {
58 id: u64,
59 asset_class: AssetClass,
60 }
61}