#[cfg(test)]
mod tests {
use ig_client::utils::parsing::{ParsedOptionInfo, normalize_text, parse_instrument_name};
#[test]
fn test_normalize_text() {
assert_eq!(normalize_text("Japón"), "Japan");
assert_eq!(normalize_text("Alemán"), "Aleman");
assert_eq!(normalize_text("François"), "Francois");
assert_eq!(normalize_text("Österreich"), "Osterreich");
assert_eq!(normalize_text("ESPAÑA"), "ESPANA");
assert_eq!(normalize_text("Ñandú"), "Nandu");
assert_eq!(normalize_text("US Tech 100"), "US Tech 100");
assert_eq!(normalize_text("Germany 40"), "Germany 40");
assert_eq!(normalize_text("áàäâã"), "aaaaa");
assert_eq!(normalize_text("éèëê"), "eeee");
assert_eq!(normalize_text("íìïî"), "iiii");
assert_eq!(normalize_text("óòöôõ"), "ooooo");
assert_eq!(normalize_text("úùüû"), "uuuu");
assert_eq!(normalize_text("ñç"), "nc");
assert_eq!(normalize_text("ÁÀÄÂÃ"), "AAAAA");
assert_eq!(normalize_text("ÉÈËÊ"), "EEEE");
assert_eq!(normalize_text("ÍÌÏÎ"), "IIII");
assert_eq!(normalize_text("ÓÒÖÔÕ"), "OOOOO");
assert_eq!(normalize_text("ÚÙÜÛ"), "UUUU");
assert_eq!(normalize_text("ÑÇ"), "NC");
assert_eq!(normalize_text("café"), "cafe");
assert_eq!(normalize_text("piñata"), "pinata");
assert_eq!(normalize_text("Zürich"), "Zurich");
}
#[test]
fn test_parsed_option_info_display() {
let info = ParsedOptionInfo {
asset_name: "US Tech 100".to_string(),
strike: Some("19200".to_string()),
option_type: Some("CALL".to_string()),
};
let s = format!("{info}");
assert!(s.contains("asset_name"));
assert!(s.contains("US Tech 100"));
assert!(s.contains("strike"));
assert!(s.contains("19200"));
assert!(s.contains("option_type"));
assert!(s.contains("CALL"));
let info = ParsedOptionInfo {
asset_name: "Germany 40".to_string(),
strike: None,
option_type: None,
};
let s = format!("{info}");
assert!(s.contains("asset_name"));
assert!(s.contains("Germany 40"));
assert!(s.contains("strike"));
assert!(s.contains("null"));
let info = ParsedOptionInfo {
asset_name: "US 500".to_string(),
strike: Some("4500".to_string()),
option_type: None,
};
let s = format!("{info}");
assert!(s.contains("asset_name"));
assert!(s.contains("US 500"));
assert!(s.contains("strike"));
assert!(s.contains("4500"));
}
#[test]
fn test_parse_instrument_name_wrapper() {
let info = parse_instrument_name("US Tech 100 19200 CALL ($1)");
assert_eq!(info.asset_name, "US Tech 100");
assert_eq!(info.strike, Some("19200".to_string()));
assert_eq!(info.option_type, Some("CALL".to_string()));
let info = parse_instrument_name("Germany 40");
assert_eq!(info.asset_name, "Germany 40");
assert_eq!(info.strike, None);
assert_eq!(info.option_type, None);
let info = parse_instrument_name("Weekly Germany 40 (Wed)27500 PUT");
assert_eq!(info.asset_name, "Germany 40");
assert_eq!(info.strike, Some("27500".to_string()));
assert_eq!(info.option_type, Some("PUT".to_string()));
let info = parse_instrument_name("Japón 225 18500 CALL");
assert_eq!(info.asset_name, "Japan 225");
assert_eq!(info.strike, Some("18500".to_string()));
assert_eq!(info.option_type, Some("CALL".to_string()));
}
}