OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / text / internal / colltab / colltab_test.go
diff --git a/vendor/golang.org/x/text/internal/colltab/colltab_test.go b/vendor/golang.org/x/text/internal/colltab/colltab_test.go
new file mode 100644 (file)
index 0000000..c403ac3
--- /dev/null
@@ -0,0 +1,64 @@
+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.
+       } {
+               if x := MatchLang(tc.t, tags); x != tc.x {
+                       t.Errorf("%d: MatchLang(%q, tags) = %d; want %d", i, tc.t, x, tc.x)
+               }
+       }
+}