mod utils;
use crypto_market_type::MarketType;
use crypto_message::TradeSide;
use crypto_msg_parser::{extract_symbol, extract_timestamp, parse_l2, parse_trade};
use crypto_msg_type::MessageType;
#[test]
#[ignore = "bitz.com has shutdown since October 2021"]
fn trade() {
let raw_msg = r#"{"msgId":0,"params":{"symbol":"btc_usdt"},"action":"Pushdata.order","data":[{"id":"1616486110508","t":"15:55:10","T":1616486110,"p":"53874.97","n":"0.1310","s":"sell"},{"id":"1616486110006","t":"15:55:10","T":1616486110,"p":"53875.82","n":"0.1144","s":"buy"}],"time":1616486110921,"source":"sub-api"}"#;
let trades = &parse_trade("bitz", MarketType::Spot, raw_msg).unwrap();
assert_eq!(trades.len(), 2);
for trade in trades.iter() {
crate::utils::check_trade_fields(
"bitz",
MarketType::Spot,
"BTC/USDT".to_string(),
extract_symbol("bitz", MarketType::Spot, raw_msg).unwrap(),
trade,
raw_msg,
);
}
assert_eq!(
1616486110921,
extract_timestamp("bitz", MarketType::Spot, raw_msg).unwrap().unwrap()
);
assert_eq!(trades[0].side, TradeSide::Sell);
assert_eq!(trades[0].quantity_base, 0.1310);
assert_eq!(trades[1].side, TradeSide::Buy);
assert_eq!(trades[1].quantity_base, 0.1144);
}
#[test]
#[ignore = "bitz.com has shutdown since October 2021"]
fn l2_orderbook_update() {
let raw_msg = r#"{"msgId":0,"params":{"symbol":"btc_usdt"},"action":"Pushdata.depth","data":{"asks":[["37520.67","0.8396","31502.3545"]],"bids":[["37328.48","0.0050","186.6424"],["37322.18","0.2462","9188.7207"]],"depthSerialNumber":329},"time":1622527417489,"source":"sub-api"}"#;
let orderbook = &parse_l2("bitz", MarketType::Spot, raw_msg, None).unwrap()[0];
assert_eq!(orderbook.asks.len(), 1);
assert_eq!(orderbook.bids.len(), 2);
assert!(!orderbook.snapshot);
crate::utils::check_orderbook_fields(
"bitz",
MarketType::Spot,
MessageType::L2Event,
"BTC/USDT".to_string(),
extract_symbol("bitz", MarketType::Spot, raw_msg).unwrap(),
orderbook,
raw_msg,
);
assert_eq!(
1622527417489,
extract_timestamp("bitz", MarketType::Spot, raw_msg).unwrap().unwrap()
);
assert_eq!(orderbook.timestamp, 1622527417489);
assert_eq!(orderbook.asks[0].price, 37520.67);
assert_eq!(orderbook.asks[0].quantity_base, 0.8396);
assert_eq!(orderbook.asks[0].quantity_quote, 31502.3545);
assert_eq!(orderbook.bids[0].price, 37328.48);
assert_eq!(orderbook.bids[0].quantity_base, 0.0050);
assert_eq!(orderbook.bids[0].quantity_quote, 186.6424);
assert_eq!(orderbook.bids[1].price, 37322.18);
assert_eq!(orderbook.bids[1].quantity_base, 0.2462);
assert_eq!(orderbook.bids[1].quantity_quote, 9188.7207);
}