Skip to content

Commit

Permalink
Add Chinese collator tests (#5765)
Browse files Browse the repository at this point in the history
Fixes #1964
  • Loading branch information
robertbastian authored Nov 4, 2024
1 parent d4b636f commit 95bc54a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 23 deletions.
54 changes: 31 additions & 23 deletions components/collator/tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -921,12 +921,32 @@ fn test_vi_owned() {
}

#[test]
// See SourceDataProvider test_zh_non_baked for gb2312 and big5han tests
fn test_zh() {
// Note: ㄅ is Bopomofo.

{
let collator = Collator::try_new(&Default::default(), Default::default()).unwrap();
assert_root(Default::default());

assert_pinyin("zh".parse().unwrap());
assert_pinyin("zh-Hans".parse().unwrap());
assert_pinyin("zh-Hans-HK".parse().unwrap());
assert_pinyin("zh-Hant-u-co-pinyin".parse().unwrap());
assert_pinyin("zh-TW-u-co-pinyin".parse().unwrap());
assert_pinyin("yue-CN".parse().unwrap());

assert_stroke("zh-Hant".parse().unwrap());
assert_stroke("zh-HK".parse().unwrap());
assert_stroke("zh-MO".parse().unwrap());
assert_stroke("zh-TW".parse().unwrap());
assert_stroke("zh-CN-u-co-stroke".parse().unwrap());
assert_stroke("zh-Hans-u-co-stroke".parse().unwrap());
assert_stroke("yue".parse().unwrap());

assert_zhuyin("zh-u-co-zhuyin".parse().unwrap());
assert_unihan("zh-u-co-unihan".parse().unwrap());
// See SourceDataProvider test_zh_non_baked for gb2312 and big5han tests

fn assert_root(locale: Locale) {
let collator = Collator::try_new(&locale.into(), Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Greater);
assert_eq!(collator.compare("佰", "a"), Ordering::Greater);
assert_eq!(collator.compare("ㄅ", "a"), Ordering::Greater);
Expand All @@ -936,20 +956,8 @@ fn test_zh() {
assert_eq!(collator.compare("佰", "ㄅ"), Ordering::Greater);
assert_eq!(collator.compare("不", "把"), Ordering::Less);
}
{
let locale = locale!("zh").into(); // Defaults to -u-co-pinyin
let collator = Collator::try_new(&locale, Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Less);
assert_eq!(collator.compare("佰", "a"), Ordering::Less);
assert_eq!(collator.compare("ㄅ", "a"), Ordering::Greater);
assert_eq!(collator.compare("ㄅ", "ж"), Ordering::Greater);
assert_eq!(collator.compare("艾", "佰"), Ordering::Less);
assert_eq!(collator.compare("艾", "ㄅ"), Ordering::Less);
assert_eq!(collator.compare("佰", "ㄅ"), Ordering::Less);
assert_eq!(collator.compare("不", "把"), Ordering::Greater);
}
{
let locale: Locale = "zh-u-co-pinyin".parse().unwrap();

fn assert_pinyin(locale: Locale) {
let collator = Collator::try_new(&locale.into(), Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Less);
assert_eq!(collator.compare("佰", "a"), Ordering::Less);
Expand All @@ -960,8 +968,8 @@ fn test_zh() {
assert_eq!(collator.compare("佰", "ㄅ"), Ordering::Less);
assert_eq!(collator.compare("不", "把"), Ordering::Greater);
}
{
let locale: Locale = "zh-u-co-stroke".parse().unwrap();

fn assert_stroke(locale: Locale) {
let collator = Collator::try_new(&locale.into(), Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Less);
assert_eq!(collator.compare("佰", "a"), Ordering::Less);
Expand All @@ -972,8 +980,8 @@ fn test_zh() {
assert_eq!(collator.compare("佰", "ㄅ"), Ordering::Less);
assert_eq!(collator.compare("不", "把"), Ordering::Less);
}
{
let locale: Locale = "zh-u-co-zhuyin".parse().unwrap();

fn assert_zhuyin(locale: Locale) {
let collator = Collator::try_new(&locale.into(), Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Less);
assert_eq!(collator.compare("佰", "a"), Ordering::Less);
Expand All @@ -984,8 +992,8 @@ fn test_zh() {
assert_eq!(collator.compare("佰", "ㄅ"), Ordering::Less);
assert_eq!(collator.compare("不", "把"), Ordering::Greater);
}
{
let locale: Locale = "zh-u-co-unihan".parse().unwrap();

fn assert_unihan(locale: Locale) {
let collator = Collator::try_new(&locale.into(), Default::default()).unwrap();
assert_eq!(collator.compare("艾", "a"), Ordering::Less);
assert_eq!(collator.compare("佰", "a"), Ordering::Less);
Expand Down
7 changes: 7 additions & 0 deletions components/locale/src/fallback/algorithms.rs
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,13 @@ mod tests {
expected_script_chain: &["yue-HK", "yue", "und-Hant", "und-Hani"],
expected_region_chain: &["yue-HK", "und-HK"],
},
TestCase {
input: "yue-CN",
requires_data: true,
expected_language_chain: &["yue-CN", "yue-Hans"],
expected_script_chain: &["yue-CN", "yue-Hans", "und-Hans", "und-Hani"],
expected_region_chain: &["yue-CN", "und-CN"],
},
TestCase {
input: "az-Arab-IR",
requires_data: true,
Expand Down

0 comments on commit 95bc54a

Please sign in to comment.