Skip to content

Commit 11c7ca6

Browse files
committed
chore: Symbol, - market to case-insensitive
1 parent 5280dc2 commit 11c7ca6

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

v_exchanges/src/core.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ impl std::str::FromStr for Symbol {
414414
type Err = eyre::Report;
415415

416416
fn from_str(s: &str) -> Result<Self, Self::Err> {
417-
let (pair_str, instrument_ticker_str) = s.split_once('.').map(|(p, i)| (p, format!(".{i}"))).unwrap_or((s, "".to_owned()));
417+
let (pair_str, instrument_ticker_str) = s.split_once('.').map(|(p, i)| (p, format!(".{}", i.to_uppercase()))).unwrap_or((s, "".to_owned()));
418418
let pair = Pair::from_str(pair_str)?;
419419
let instrument = Instrument::from_str(&instrument_ticker_str)?;
420420

@@ -486,4 +486,19 @@ mod test {
486486
assert_eq!(ticker.symbol.instrument, super::Instrument::Perp);
487487
assert_eq!(ticker.exchange_name, super::ExchangeName::Bybit);
488488
}
489+
490+
#[test]
491+
fn from_str_case_insensitive() {
492+
// Test lowercase instrument suffix
493+
let ticker_str = "binance:btc-usdt.p";
494+
let ticker: super::Ticker = ticker_str.parse().unwrap();
495+
assert_eq!(ticker.symbol.pair, super::Pair::new("BTC", "USDT"));
496+
assert_eq!(ticker.symbol.instrument, super::Instrument::Perp);
497+
assert_eq!(ticker.exchange_name, super::ExchangeName::Binance);
498+
499+
// Test mixed case
500+
let ticker_str2 = "bybit:ETH-USDT.pErP_iNvErSe";
501+
let ticker2: super::Ticker = ticker_str2.parse().unwrap();
502+
assert_eq!(ticker2.symbol.instrument, super::Instrument::PerpInverse);
503+
}
489504
}

0 commit comments

Comments
 (0)