pub fn defy_network(native_symbol: &str) -> Option<&'static str> {
Some(match native_symbol.trim().to_ascii_uppercase().as_str() {
"ETH" => "eth",
"BNB" => "bsc",
"MATIC" | "POL" => "polygon",
"AVAX" => "avalanche",
"TRX" => "trx",
"SOL" => "solana",
"XRP" => "xrp",
"DOGE" => "doge",
"SUI" => "sui",
"BTC" => "bitcoin",
"ADA" => "ada",
"LTC" => "litecoin",
"TON" => "ton",
"DOT" => "dot",
"APT" => "apt",
"ATOM" => "atom",
"XLM" => "stellar",
"ALGO" => "algo",
"VET" => "vet",
"XTZ" => "xtz",
"EOS" => "eos",
_ => return None,
})
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn maps_known_symbols_case_insensitively() {
assert_eq!(defy_network("eth"), Some("eth"));
assert_eq!(defy_network(" TRX "), Some("trx"));
assert_eq!(defy_network("BNB"), Some("bsc"));
assert_eq!(defy_network("pol"), Some("polygon"));
}
#[test]
fn unknown_symbol_is_none() {
assert_eq!(defy_network("WAT"), None);
assert_eq!(defy_network(""), None);
}
}