You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.3KB

  1. #[allow(unused)]
  2. #[cfg(test)]
  3. mod tests {
  4. use serde::Deserialize;
  5. #[derive(Debug, Deserialize)]
  6. struct Trade {
  7. pub time: i64,
  8. pub price: f64,
  9. pub amount: f64,
  10. }
  11. #[test]
  12. fn serde_deserialize_json_example() {
  13. assert!(matches!(
  14. serde_json::from_str::<Trade>(r#"{"time":1527811201900505632,"price":7492.279785,"amount":0.048495,"exch":"bits","server_time":0,"side":null}"#),
  15. Ok(Trade { time: 1527811201900505632, price: 7492.279785, amount: 0.048495 })
  16. ));
  17. }
  18. #[test]
  19. fn serde_deserialize_csv_example() {
  20. let csv = "time,amount,exch,price,server_time,side\n\
  21. 1527811201900505632,0.048495,bits,7492.279785,0,";
  22. let mut csv_reader = csv::Reader::from_reader(csv.as_bytes());
  23. let headers = csv_reader
  24. .headers()
  25. .expect("parsing row headers failed")
  26. .clone();
  27. let mut row = csv::StringRecord::new();
  28. assert!(matches!(
  29. csv_reader.read_record(&mut row),
  30. Ok(true)
  31. ));
  32. assert!(matches!(
  33. row.deserialize(Some(&headers)),
  34. Ok(Trade { time: 1527811201900505632, price: 7492.279785, amount: 0.048495 })
  35. ));
  36. assert!(matches!(
  37. csv_reader.read_record(&mut row),
  38. Ok(false)
  39. ));
  40. }
  41. }