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.

72 lines
1.8KB

  1. pub mod windows;
  2. #[allow(unused)]
  3. #[cfg(test)]
  4. mod tests {
  5. use serde::Deserialize;
  6. #[derive(Debug, Deserialize)]
  7. struct Trade {
  8. pub time: i64,
  9. pub price: f64,
  10. pub amount: f64,
  11. }
  12. #[test]
  13. fn serde_deserialize_json_example() {
  14. assert!(matches!(
  15. serde_json::from_str::<Trade>(r#"{"time":1527811201900505632,"price":7492.279785,"amount":0.048495,"exch":"bits","server_time":0,"side":null}"#),
  16. Ok(Trade { time: 1527811201900505632, price: 7492.279785, amount: 0.048495 })
  17. ));
  18. }
  19. #[test]
  20. fn serde_deserialize_csv_example() {
  21. let csv = "time,amount,exch,price,server_time,side\n\
  22. 1527811201900505632,0.048495,bits,7492.279785,0,";
  23. let mut csv_reader = csv::Reader::from_reader(csv.as_bytes());
  24. let headers = csv_reader
  25. .headers()
  26. .expect("parsing row headers failed")
  27. .clone();
  28. let mut row = csv::StringRecord::new();
  29. assert!(matches!(
  30. csv_reader.read_record(&mut row),
  31. Ok(true)
  32. ));
  33. assert!(matches!(
  34. row.deserialize(Some(&headers)),
  35. Ok(Trade { time: 1527811201900505632, price: 7492.279785, amount: 0.048495 })
  36. ));
  37. assert!(matches!(
  38. csv_reader.read_record(&mut row),
  39. Ok(false)
  40. ));
  41. }
  42. #[test]
  43. fn memory_size_of_trades_struct() {
  44. use markets::crypto::{Exchange, Ticker, Side};
  45. struct Trade {
  46. pub time: u64,
  47. pub price: f64,
  48. pub amount: f64,
  49. pub exch: Exchange,
  50. pub ticker: Ticker,
  51. pub server_time: Option<u64>,
  52. pub side: Option<Side>,
  53. }
  54. assert_eq!(std::mem::size_of::<Trade>(), 48);
  55. assert_eq!(std::mem::size_of::<Ticker>(), 2);
  56. }
  57. }