vendor: update all dependencies
This commit is contained in:
+32
-159
@@ -5,88 +5,20 @@
|
||||
package language
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"golang.org/x/text/internal/tag"
|
||||
"golang.org/x/text/internal/language"
|
||||
)
|
||||
|
||||
type scanTest struct {
|
||||
ok bool // true if scanning does not result in an error
|
||||
in string
|
||||
tok []string // the expected tokens
|
||||
// equalTags compares language, script and region subtags only.
|
||||
func (t Tag) equalTags(a Tag) bool {
|
||||
return t.lang() == a.lang() &&
|
||||
t.script() == a.script() &&
|
||||
t.region() == a.region()
|
||||
}
|
||||
|
||||
var tests = []scanTest{
|
||||
{true, "", []string{}},
|
||||
{true, "1", []string{"1"}},
|
||||
{true, "en", []string{"en"}},
|
||||
{true, "root", []string{"root"}},
|
||||
{true, "maxchars", []string{"maxchars"}},
|
||||
{false, "bad/", []string{}},
|
||||
{false, "morethan8", []string{}},
|
||||
{false, "-", []string{}},
|
||||
{false, "----", []string{}},
|
||||
{false, "_", []string{}},
|
||||
{true, "en-US", []string{"en", "US"}},
|
||||
{true, "en_US", []string{"en", "US"}},
|
||||
{false, "en-US-", []string{"en", "US"}},
|
||||
{false, "en-US--", []string{"en", "US"}},
|
||||
{false, "en-US---", []string{"en", "US"}},
|
||||
{false, "en--US", []string{"en", "US"}},
|
||||
{false, "-en-US", []string{"en", "US"}},
|
||||
{false, "-en--US-", []string{"en", "US"}},
|
||||
{false, "-en--US-", []string{"en", "US"}},
|
||||
{false, "en-.-US", []string{"en", "US"}},
|
||||
{false, ".-en--US-.", []string{"en", "US"}},
|
||||
{false, "en-u.-US", []string{"en", "US"}},
|
||||
{true, "en-u1-US", []string{"en", "u1", "US"}},
|
||||
{true, "maxchar1_maxchar2-maxchar3", []string{"maxchar1", "maxchar2", "maxchar3"}},
|
||||
{false, "moreThan8-moreThan8-e", []string{"e"}},
|
||||
}
|
||||
|
||||
func TestScan(t *testing.T) {
|
||||
for i, tt := range tests {
|
||||
scan := makeScannerString(tt.in)
|
||||
for j := 0; !scan.done; j++ {
|
||||
if j >= len(tt.tok) {
|
||||
t.Errorf("%d: extra token %q", i, scan.token)
|
||||
} else if tag.Compare(tt.tok[j], scan.token) != 0 {
|
||||
t.Errorf("%d: token %d: found %q; want %q", i, j, scan.token, tt.tok[j])
|
||||
break
|
||||
}
|
||||
scan.scan()
|
||||
}
|
||||
if s := strings.Join(tt.tok, "-"); tag.Compare(s, bytes.Replace(scan.b, b("_"), b("-"), -1)) != 0 {
|
||||
t.Errorf("%d: input: found %q; want %q", i, scan.b, s)
|
||||
}
|
||||
if (scan.err == nil) != tt.ok {
|
||||
t.Errorf("%d: ok: found %v; want %v", i, scan.err == nil, tt.ok)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAcceptMinSize(t *testing.T) {
|
||||
for i, tt := range tests {
|
||||
// count number of successive tokens with a minimum size.
|
||||
for sz := 1; sz <= 8; sz++ {
|
||||
scan := makeScannerString(tt.in)
|
||||
scan.end, scan.next = 0, 0
|
||||
end := scan.acceptMinSize(sz)
|
||||
n := 0
|
||||
for i := 0; i < len(tt.tok) && len(tt.tok[i]) >= sz; i++ {
|
||||
n += len(tt.tok[i])
|
||||
if i > 0 {
|
||||
n++
|
||||
}
|
||||
}
|
||||
if end != n {
|
||||
t.Errorf("%d:%d: found len %d; want %d", i, sz, end, n)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var errSyntax = language.ErrSyntax
|
||||
|
||||
type parseTest struct {
|
||||
i int // the index of this test
|
||||
@@ -104,6 +36,11 @@ func parseTests() []parseTest {
|
||||
{in: "root", lang: "und"},
|
||||
{in: "und", lang: "und"},
|
||||
{in: "en", lang: "en"},
|
||||
|
||||
{in: "en-US-u-va-posix", lang: "en", region: "US", ext: "u-va-posix"},
|
||||
{in: "ca-ES-valencia", lang: "ca", region: "ES", variants: "valencia"},
|
||||
{in: "en-US-u-rg-gbzzzz", lang: "en", region: "US", ext: "u-rg-gbzzzz"},
|
||||
|
||||
{in: "xy", lang: "und", invalid: true},
|
||||
{in: "en-ZY", lang: "en", invalid: true},
|
||||
{in: "gsw", lang: "gsw"},
|
||||
@@ -184,7 +121,7 @@ func parseTests() []parseTest {
|
||||
{in: "en-u-cu-xau-co", lang: "en", extList: []string{"u-cu-xau"}, invalid: true},
|
||||
// We allow duplicate keys as the LDML spec does not explicitly prohibit it.
|
||||
// TODO: Consider eliminating duplicates and returning an error.
|
||||
{in: "en-u-cu-xau-co-phonebk-cu-xau", lang: "en", ext: "u-co-phonebk-cu-xau-cu-xau", changed: true},
|
||||
{in: "en-u-cu-xau-co-phonebk-cu-xau", lang: "en", ext: "u-co-phonebk-cu-xau", changed: true},
|
||||
{in: "en-t-en-Cyrl-NL-fonipa", lang: "en", ext: "t-en-cyrl-nl-fonipa", changed: true},
|
||||
{in: "en-t-en-Cyrl-NL-fonipa-t0-abc-def", lang: "en", ext: "t-en-cyrl-nl-fonipa-t0-abc-def", changed: true},
|
||||
{in: "en-t-t0-abcd", lang: "en", ext: "t-t0-abcd"},
|
||||
@@ -231,30 +168,6 @@ func parseTests() []parseTest {
|
||||
return tests
|
||||
}
|
||||
|
||||
func TestParseExtensions(t *testing.T) {
|
||||
for i, tt := range parseTests() {
|
||||
if tt.ext == "" || tt.rewrite {
|
||||
continue
|
||||
}
|
||||
scan := makeScannerString(tt.in)
|
||||
if len(scan.b) > 1 && scan.b[1] != '-' {
|
||||
scan.end = nextExtension(string(scan.b), 0)
|
||||
scan.next = scan.end + 1
|
||||
scan.scan()
|
||||
}
|
||||
start := scan.start
|
||||
scan.toLower(start, len(scan.b))
|
||||
parseExtensions(&scan)
|
||||
ext := string(scan.b[start:])
|
||||
if ext != tt.ext {
|
||||
t.Errorf("%d(%s): ext was %v; want %v", i, tt.in, ext, tt.ext)
|
||||
}
|
||||
if changed := !strings.HasPrefix(tt.in[start:], ext); changed != tt.changed {
|
||||
t.Errorf("%d(%s): changed was %v; want %v", i, tt.in, changed, tt.changed)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// partChecks runs checks for each part by calling the function returned by f.
|
||||
func partChecks(t *testing.T, f func(*parseTest) (Tag, bool)) {
|
||||
for i, tt := range parseTests() {
|
||||
@@ -262,80 +175,38 @@ func partChecks(t *testing.T, f func(*parseTest) (Tag, bool)) {
|
||||
if skip {
|
||||
continue
|
||||
}
|
||||
if l, _ := getLangID(b(tt.lang)); l != tag.lang {
|
||||
t.Errorf("%d: lang was %q; want %q", i, tag.lang, l)
|
||||
if l, _ := language.ParseBase(tt.lang); l != tag.lang() {
|
||||
t.Errorf("%d: lang was %q; want %q", i, tag.lang(), l)
|
||||
}
|
||||
if sc, _ := getScriptID(script, b(tt.script)); sc != tag.script {
|
||||
t.Errorf("%d: script was %q; want %q", i, tag.script, sc)
|
||||
if sc, _ := language.ParseScript(tt.script); sc != tag.script() {
|
||||
t.Errorf("%d: script was %q; want %q", i, tag.script(), sc)
|
||||
}
|
||||
if r, _ := getRegionID(b(tt.region)); r != tag.region {
|
||||
t.Errorf("%d: region was %q; want %q", i, tag.region, r)
|
||||
if r, _ := language.ParseRegion(tt.region); r != tag.region() {
|
||||
t.Errorf("%d: region was %q; want %q", i, tag.region(), r)
|
||||
}
|
||||
if tag.str == "" {
|
||||
continue
|
||||
v := tag.tag().Variants()
|
||||
if v != "" {
|
||||
v = v[1:]
|
||||
}
|
||||
p := int(tag.pVariant)
|
||||
if p < int(tag.pExt) {
|
||||
p++
|
||||
if v != tt.variants {
|
||||
t.Errorf("%d: variants was %q; want %q", i, v, tt.variants)
|
||||
}
|
||||
if s, g := tag.str[p:tag.pExt], tt.variants; s != g {
|
||||
t.Errorf("%d: variants was %q; want %q", i, s, g)
|
||||
}
|
||||
p = int(tag.pExt)
|
||||
if p > 0 && p < len(tag.str) {
|
||||
p++
|
||||
}
|
||||
if s, g := (tag.str)[p:], tt.ext; s != g {
|
||||
t.Errorf("%d: extensions were %q; want %q", i, s, g)
|
||||
if e := strings.Join(tag.tag().Extensions(), "-"); e != tt.ext {
|
||||
t.Errorf("%d: extensions were %q; want %q", i, e, tt.ext)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTag(t *testing.T) {
|
||||
partChecks(t, func(tt *parseTest) (id Tag, skip bool) {
|
||||
if strings.HasPrefix(tt.in, "x-") || tt.rewrite {
|
||||
return Tag{}, true
|
||||
}
|
||||
scan := makeScannerString(tt.in)
|
||||
id, end := parseTag(&scan)
|
||||
id.str = string(scan.b[:end])
|
||||
tt.ext = ""
|
||||
tt.extList = []string{}
|
||||
return id, false
|
||||
})
|
||||
}
|
||||
|
||||
func TestParse(t *testing.T) {
|
||||
partChecks(t, func(tt *parseTest) (id Tag, skip bool) {
|
||||
id, err := Raw.Parse(tt.in)
|
||||
ext := ""
|
||||
if id.str != "" {
|
||||
if strings.HasPrefix(id.str, "x-") {
|
||||
ext = id.str
|
||||
} else if int(id.pExt) < len(id.str) && id.pExt > 0 {
|
||||
ext = id.str[id.pExt+1:]
|
||||
}
|
||||
}
|
||||
if tag, _ := Raw.Parse(id.String()); tag.String() != id.String() {
|
||||
t.Errorf("%d:%s: reparse was %q; want %q", tt.i, tt.in, id.String(), tag.String())
|
||||
}
|
||||
if ext != tt.ext {
|
||||
t.Errorf("%d:%s: ext was %q; want %q", tt.i, tt.in, ext, tt.ext)
|
||||
}
|
||||
changed := id.str != "" && !strings.HasPrefix(tt.in, id.str)
|
||||
if changed != tt.changed {
|
||||
t.Errorf("%d:%s: changed was %v; want %v", tt.i, tt.in, changed, tt.changed)
|
||||
}
|
||||
if (err != nil) != tt.invalid {
|
||||
t.Errorf("%d:%s: invalid was %v; want %v. Error: %v", tt.i, tt.in, err != nil, tt.invalid, err)
|
||||
}
|
||||
id, _ = Raw.Parse(tt.in)
|
||||
return id, false
|
||||
})
|
||||
}
|
||||
|
||||
func TestErrors(t *testing.T) {
|
||||
mkInvalid := func(s string) error {
|
||||
return mkErrInvalid([]byte(s))
|
||||
return language.NewValueError([]byte(s))
|
||||
}
|
||||
tests := []struct {
|
||||
in string
|
||||
@@ -387,8 +258,10 @@ func TestCompose2(t *testing.T) {
|
||||
r, _ := ParseRegion(tt.region)
|
||||
p := []interface{}{l, s, r, s, r, l}
|
||||
for _, x := range strings.Split(tt.variants, "-") {
|
||||
v, _ := ParseVariant(x)
|
||||
p = append(p, v)
|
||||
if x != "" {
|
||||
v, _ := ParseVariant(x)
|
||||
p = append(p, v)
|
||||
}
|
||||
}
|
||||
for _, x := range tt.extList {
|
||||
e, _ := ParseExtension(x)
|
||||
|
||||
Reference in New Issue
Block a user