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.

71 lines
1.8KB

  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. #[test]
  42. fn memory_size_of_trades_struct() {
  43. use markets::crypto::{Exchange, Ticker, Side};
  44. struct Trade {
  45. pub time: u64,
  46. pub price: f64,
  47. pub amount: f64,
  48. pub exch: Exchange,
  49. pub ticker: Ticker,
  50. pub server_time: Option<u64>,
  51. pub side: Option<Side>,
  52. }
  53. assert_eq!(std::mem::size_of::<Trade>(), 48);
  54. assert_eq!(std::mem::size_of::<Ticker>(), 2);
  55. }
  56. }