use super::*;
#[test]
fn redetects_english() {
assert_eq!(
redetect_language("This is a plain English sentence for language detection.").as_deref(),
Some("en")
);
}
#[test]
fn redetects_traditional_chinese_and_normalizes_to_zh() {
let detected = redetect_language("你上學也不也不說普通話全是東北話").unwrap();
assert_eq!(detected, "zh");
}
#[test]
fn empty_input_is_undetermined() {
assert_eq!(redetect_language(""), None);
}
#[test]
fn normalize_bcp47_strips_script_and_region_subtags() {
assert_eq!(normalize_bcp47("zh-Hant"), "zh");
assert_eq!(normalize_bcp47("zh-Hans"), "zh");
assert_eq!(normalize_bcp47("zh-CN"), "zh");
assert_eq!(normalize_bcp47("pt-BR"), "pt");
assert_eq!(normalize_bcp47("en"), "en");
}
#[test]
fn normalize_bcp47_maps_cmn_to_zh() {
assert_eq!(normalize_bcp47("cmn"), "zh");
assert_eq!(normalize_bcp47("cmn-Hant"), "zh");
}
#[test]
fn redetect_language_is_stable_across_repeated_calls_on_a_bare_thread() {
let handle = std::thread::spawn(|| {
for _ in 0..50 {
assert_eq!(
redetect_language("This is a plain English sentence for language detection.").as_deref(),
Some("en")
);
}
});
handle
.join()
.expect("redetect_language must not panic on a bare thread");
}