use location_rs::parse_country_code;
#[test]
fn test_basic_iso_code_parsing() {
assert_eq!(parse_country_code("US Node").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("CN Server").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("HK Vip").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("JP Server").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("KR Node").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("SG Vip").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("TW Server").unwrap().alpha3, "TWN");
assert_eq!(parse_country_code("GB Node").unwrap().alpha3, "GBR");
assert_eq!(parse_country_code("DE Vip").unwrap().alpha3, "DEU");
assert_eq!(parse_country_code("FR Server").unwrap().alpha3, "FRA");
assert_eq!(parse_country_code("PH Node").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("VN Server").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("ID Vip").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("TH Server").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("MY Node").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("AR Vip").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("ZA Server").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("EG Node").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("AE Vip").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("SA Server").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("TR Node").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("IR Vip").unwrap().alpha3, "IRN");
assert_eq!(parse_country_code("PW Vip").unwrap().alpha3, "PLW");
}
#[test]
fn test_chinese_name_parsing() {
assert_eq!(parse_country_code("美国节点").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("中国服务器").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("香港服务").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("日本节点").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("韩国服务器").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("新加坡服务").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("台湾节点").unwrap().alpha3, "TWN");
assert_eq!(parse_country_code("英国服务器").unwrap().alpha3, "GBR");
assert_eq!(parse_country_code("德国服务").unwrap().alpha3, "DEU");
assert_eq!(parse_country_code("法国节点").unwrap().alpha3, "FRA");
assert_eq!(parse_country_code("菲律宾节点").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("越南服务器").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("印尼服务").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("印尼节点").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("帕劳节点 | PW").unwrap().alpha3, "PLW");
assert_eq!(parse_country_code("泰国服务器").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("马来西亚服务").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("阿根廷服务器").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("南非服务").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("埃及节点").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("阿联酋服务器").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("沙特阿拉伯服务").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("土耳其节点").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("伊朗服务器").unwrap().alpha3, "IRN");
assert_eq!(parse_country_code("香港支援").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("澳門業務").unwrap().alpha3, "MAC");
assert_eq!(parse_country_code("中國服務器").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("美國節點").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("英國服務器").unwrap().alpha3, "GBR");
assert_eq!(parse_country_code("德國節點").unwrap().alpha3, "DEU");
assert_eq!(parse_country_code("法國服務").unwrap().alpha3, "FRA");
assert_eq!(parse_country_code("菲律賓服務器").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("印尼節點").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("泰國服務").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("馬來西亞節點").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("阿拉伯聯合大公國服務器").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("沙烏地阿拉伯服務").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("紐西蘭節點").unwrap().alpha3, "NZL");
assert_eq!(parse_country_code("澳大利亞服務器").unwrap().alpha3, "AUS");
assert_eq!(parse_country_code("義大利服務").unwrap().alpha3, "ITA");
assert_eq!(parse_country_code("俄羅斯節點").unwrap().alpha3, "RUS");
}
#[test]
fn test_mixed_patterns() {
assert_eq!(parse_country_code("@HK Vip1").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("【测试】USA1").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("【测试】US1").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("V1 美国").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("[SS] Hong Kong -1").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("Hong Kong-1").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("Japan-1").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("Singapore-1").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("UK-1").unwrap().alpha3, "GBR");
assert_eq!(parse_country_code("不丹|BT").unwrap().alpha3, "BTN");
assert_eq!(parse_country_code("印度|IN").unwrap().alpha3, "IND");
assert_eq!(parse_country_code("@美国节点").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("【中国】服务器").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("[日本]专线").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("@JP 节点").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("【KR】Server").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("[SG] Vip").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("#TW 节点").unwrap().alpha3, "TWN");
assert_eq!(parse_country_code("@PH 节点").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("【VN】Server").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("[ID] Vip").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("#TH 节点").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("@MY Server").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("GB VIP").unwrap().alpha3, "GBR");
assert_eq!(parse_country_code("DE 节点").unwrap().alpha3, "DEU");
assert_eq!(parse_country_code("FR Node").unwrap().alpha3, "FRA");
assert_eq!(parse_country_code("AR VIP").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("ZA 节点").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("EG Node").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("AE 服务器").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("SA VIP").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("美国").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("印尼").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("韩国").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("【测试】US-123-节点").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("@中国-456-Server").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("[HK#789]VIP").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("#JP_123_节点").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("【韩国-456】Server").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("【测试】PH-123-节点").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("@越南-456-Server").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("[ID#789]VIP").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("#TH_123_节点").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("【马来西亚-456】Server").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("【测试】TR-789-节点").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("@伊朗-123-Server").unwrap().alpha3, "IRN");
}
#[test]
fn test_error_cases() {
assert!(parse_country_code("普通标题").is_err());
assert!(parse_country_code("12345").is_err());
assert!(parse_country_code("").is_err());
assert!(parse_country_code("未知国家").is_err());
assert!(parse_country_code("XYZ").is_err()); assert!(parse_country_code("@@##$$").is_err()); assert!(parse_country_code(" ").is_err());
}
#[test]
fn test_case_insensitive() {
assert_eq!(parse_country_code("us node").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("cn server").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("hk vip").unwrap().alpha3, "HKG");
}
#[test]
fn test_edge_cases() {
assert_eq!(parse_country_code("台湾").unwrap().alpha3, "TWN");
assert_eq!(parse_country_code("香港").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("澳门").unwrap().alpha3, "MAC");
assert_eq!(parse_country_code("US").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("美国").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("JP").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("日本").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("KR").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("韩国").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("SG").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("新加坡").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("PH").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("菲律宾").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("VN").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("越南").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("ID").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("印尼").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("TH").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("泰国").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("MY").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("马来西亚").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("AR").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("阿根廷").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("ZA").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("南非").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("EG").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("埃及").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("AE").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("阿联酋").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("SA").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("沙特").unwrap().alpha3, "SAU");
assert_eq!(parse_country_code("TR").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("土耳其").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("IR").unwrap().alpha3, "IRN");
assert_eq!(parse_country_code("伊朗").unwrap().alpha3, "IRN");
assert_eq!(parse_country_code("日本节点1").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("韩国2号通道").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("美国节点3").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("US1").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("CN2").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("JP3").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("KR4").unwrap().alpha3, "KOR");
assert_eq!(parse_country_code("SG5").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("PH6").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("VN7").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("ID8").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("TH9").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("MY10").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("AR11").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("ZA12").unwrap().alpha3, "ZAF");
}
#[test]
fn test_complex_title_formats() {
assert_eq!(parse_country_code("【游戏加速】US-纽约-01节点").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("@CN-北京-电信-02服务器").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("[HK-香港-移动]VIP03").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("#JP-东京-联通-04节点").unwrap().alpha3, "JPN");
assert_eq!(parse_country_code("菲律宾").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("新加坡").unwrap().alpha3, "SGP");
assert_eq!(parse_country_code("【游戏加速】PH-马尼拉-01节点").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("@VN-河内-电信-02服务器").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("[印尼-雅加达-移动]VIP03").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("#TH-曼谷-联通-04节点").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("【游戏加速】MY-吉隆坡-05节点").unwrap().alpha3, "MYS");
assert_eq!(parse_country_code("@AR-布宜诺斯艾利斯-电信-06服务器").unwrap().alpha3, "ARG");
assert_eq!(parse_country_code("南非-约翰内斯堡-移动VIP07").unwrap().alpha3, "ZAF");
assert_eq!(parse_country_code("印尼专业服务").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("泰国优化节点").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("越南专线").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("【测试【US】测试】05服务器").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("@[CN]#06VIP").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("[[[HK]]]07节点").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("【测试【PH】测试】08服务器").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("@[VN]#09VIP").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("[[[ID]]]10节点").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("【测试【EG】测试】11服务器").unwrap().alpha3, "EGY");
assert_eq!(parse_country_code("@[AE]#12VIP").unwrap().alpha3, "ARE");
assert_eq!(parse_country_code("印尼-服务").unwrap().alpha3, "IDN");
assert_eq!(parse_country_code("泰国服务").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("越南服务").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("US,纽约,08号节点").unwrap().alpha3, "USA");
assert_eq!(parse_country_code("CN:北京;09号服务器").unwrap().alpha3, "CHN");
assert_eq!(parse_country_code("HK-香港-10号-VIP").unwrap().alpha3, "HKG");
assert_eq!(parse_country_code("PH,马尼拉,13号节点").unwrap().alpha3, "PHL");
assert_eq!(parse_country_code("VN:河内;14号服务器").unwrap().alpha3, "VNM");
assert_eq!(parse_country_code("泰国-曼谷-15号-VIP").unwrap().alpha3, "THA");
assert_eq!(parse_country_code("TR,伊斯坦布尔,16号节点").unwrap().alpha3, "TUR");
assert_eq!(parse_country_code("IR:德黑兰;17号服务器").unwrap().alpha3, "IRN");
}
#[test]
fn test_multiple_country_mentions() {
assert!(parse_country_code("CN-US-HK节点列表").is_ok());
assert!(parse_country_code("日本-中国-香港服务器").is_ok());
assert!(parse_country_code("JP-CN-HK-韩国-VIP").is_ok());
assert!(parse_country_code("PH-VN-ID节点列表").is_ok());
assert!(parse_country_code("TH-MY-SG-马来西亚-VIP").is_ok());
assert!(parse_country_code("EG-AE-SA中东服务器列表").is_ok());
assert!(parse_country_code("US美国-日本-韩国").is_ok());
assert!(parse_country_code("中国CN-日本JP").is_ok());
assert!(parse_country_code("香港HK-台湾TW").is_ok());
assert!(parse_country_code("PH菲律宾-越南-印度尼西亚").is_ok());
assert!(parse_country_code("越南VN-泰国TH").is_ok());
assert!(parse_country_code("埃及EG-沙特SA-阿联酋AE").is_ok());
assert!(parse_country_code("阿根廷AR-巴西BR").is_ok());
assert!(parse_country_code("CN和US的对比").is_ok());
assert!(parse_country_code("HK和台湾的服务器").is_ok());
assert!(parse_country_code("美国,日本,韩国的对比").is_ok());
assert!(parse_country_code("PH和VN的对比").is_ok());
assert!(parse_country_code("EG和AE的服务器").is_ok());
}