summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text/internal/colltab/weighter_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/internal/colltab/weighter_test.go')
-rw-r--r--vendor/golang.org/x/text/internal/colltab/weighter_test.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/golang.org/x/text/internal/colltab/weighter_test.go b/vendor/golang.org/x/text/internal/colltab/weighter_test.go
new file mode 100644
index 0000000..b5f8487
--- /dev/null
+++ b/vendor/golang.org/x/text/internal/colltab/weighter_test.go
@@ -0,0 +1,42 @@
+// Copyright 2014 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 colltab
+
+// testWeighter is a simple Weighter that returns weights from a user-defined map.
+type testWeighter map[string][]Elem
+
+func (t testWeighter) Start(int, []byte) int { return 0 }
+func (t testWeighter) StartString(int, string) int { return 0 }
+func (t testWeighter) Domain() []string { return nil }
+func (t testWeighter) Top() uint32 { return 0 }
+
+// maxContractBytes is the maximum length of any key in the map.
+const maxContractBytes = 10
+
+func (t testWeighter) AppendNext(buf []Elem, s []byte) ([]Elem, int) {
+ n := len(s)
+ if n > maxContractBytes {
+ n = maxContractBytes
+ }
+ for i := n; i > 0; i-- {
+ if e, ok := t[string(s[:i])]; ok {
+ return append(buf, e...), i
+ }
+ }
+ panic("incomplete testWeighter: could not find " + string(s))
+}
+
+func (t testWeighter) AppendNextString(buf []Elem, s string) ([]Elem, int) {
+ n := len(s)
+ if n > maxContractBytes {
+ n = maxContractBytes
+ }
+ for i := n; i > 0; i-- {
+ if e, ok := t[s[:i]]; ok {
+ return append(buf, e...), i
+ }
+ }
+ panic("incomplete testWeighter: could not find " + s)
+}