123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package colltab
- import (
- "testing"
- "golang.org/x/text/language"
- )
- func TestMatchLang(t *testing.T) {
- tags := []language.Tag{
- 0: language.Und,
- 1: language.MustParse("bs"),
- 2: language.German,
- 3: language.English,
- 4: language.AmericanEnglish,
- 5: language.MustParse("en-US-u-va-posix"),
- 6: language.Portuguese,
- 7: language.Serbian,
- 8: language.MustParse("sr-Latn"),
- 9: language.Chinese,
- 10: language.MustParse("zh-u-co-stroke"),
- 11: language.MustParse("zh-Hant-u-co-pinyin"),
- 12: language.TraditionalChinese,
- }
- for i, tc := range []struct {
- x int
- t language.Tag
- }{
- {0, language.Und},
- {0, language.Persian}, // Default to first element when no match.
- {3, language.English},
- {4, language.AmericanEnglish},
- {5, language.MustParse("en-US-u-va-posix")}, // Ext. variant match.
- {4, language.MustParse("en-US-u-va-noposix")}, // Ext. variant mismatch.
- {3, language.MustParse("en-UK-u-va-noposix")}, // Ext. variant mismatch.
- {7, language.Serbian},
- {0, language.Croatian}, // Don't match to close language!
- {0, language.MustParse("gsw")}, // Don't match to close language!
- {1, language.MustParse("bs-Cyrl")}, // Odd, but correct.
- {1, language.MustParse("bs-Latn")}, // Estimated script drops.
- {8, language.MustParse("sr-Latn")},
- {9, language.Chinese},
- {9, language.SimplifiedChinese},
- {12, language.TraditionalChinese},
- {11, language.MustParse("zh-Hant-u-co-pinyin")},
- // TODO: should this be 12? Either inherited value (10) or default is
- // fine in this case, though. Other locales are not affected.
- {10, language.MustParse("zh-Hant-u-co-stroke")},
- // There is no "phonebk" sorting order for zh-Hant, so use default.
- {12, language.MustParse("zh-Hant-u-co-phonebk")},
- {10, language.MustParse("zh-u-co-stroke")},
- {12, language.MustParse("und-TW")}, // Infer script and language.
- {12, language.MustParse("und-HK")}, // Infer script and language.
- {6, language.MustParse("und-BR")}, // Infer script and language.
- {6, language.MustParse("und-PT")}, // Infer script and language.
- {2, language.MustParse("und-Latn-DE")}, // Infer language.
- {0, language.MustParse("und-Jpan-BR")}, // Infers "ja", so no match.
- {0, language.MustParse("zu")}, // No match past index.
- } {
- t.Run(tc.t.String(), func(t *testing.T) {
- if x := MatchLang(tc.t, tags); x != tc.x {
- t.Errorf("%d: MatchLang(%q, tags) = %d; want %d", i, tc.t, x, tc.x)
- }
- })
- }
- }
|