5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package internal
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"golang.org/x/text/language"
|
|
)
|
|
|
|
func TestInheritanceMatcher(t *testing.T) {
|
|
for i, tt := range []struct {
|
|
haveTags string
|
|
wantTags string
|
|
match string
|
|
conf language.Confidence
|
|
}{
|
|
{"und,en,en-US", "en-US", "en-US", language.Exact}, // most specific match
|
|
{"zh-Hant,zh", "zh-TW", "zh-Hant", language.High}, // zh-TW implies Hant.
|
|
{"und,zh", "zh-TW", "und", language.High}, // zh-TW does not match zh.
|
|
{"zh", "zh-TW", "und", language.No}, // zh-TW does not match zh.
|
|
{"iw,en,nl", "he", "he", language.Exact}, // matches after canonicalization
|
|
{"he,en,nl", "iw", "he", language.Exact}, // matches after canonicalization
|
|
// Prefer first match over more specific match for various reasons:
|
|
// a) consistency of user interface is more important than an exact match,
|
|
// b) _if_ und is specified, it should be considered a correct and useful match,
|
|
// Note that a call to this Match will almost always be with a single tag.
|
|
{"und,en,en-US", "he,en-US", "und", language.High},
|
|
} {
|
|
have := parseTags(tt.haveTags)
|
|
m := NewInheritanceMatcher(have)
|
|
tag, index, conf := m.Match(parseTags(tt.wantTags)...)
|
|
want := language.Raw.Make(tt.match)
|
|
if tag != want {
|
|
t.Errorf("%d:tag: got %q; want %q", i, tag, want)
|
|
}
|
|
if conf != language.No {
|
|
if got, _ := language.All.Canonicalize(have[index]); got != want {
|
|
t.Errorf("%d:index: got %q; want %q ", i, got, want)
|
|
}
|
|
}
|
|
if conf != tt.conf {
|
|
t.Errorf("%d:conf: got %v; want %v", i, conf, tt.conf)
|
|
}
|
|
}
|
|
}
|
|
|
|
func parseTags(list string) (out []language.Tag) {
|
|
for _, s := range strings.Split(list, ",") {
|
|
out = append(out, language.Raw.Make(strings.TrimSpace(s)))
|
|
}
|
|
return out
|
|
}
|