OSDN Git Service

fix commands
[bytom/shuttle.git] / vendor / github.com / bytom / vendor / golang.org / x / text / internal / colltab / iter_test.go
diff --git a/vendor/github.com/bytom/vendor/golang.org/x/text/internal/colltab/iter_test.go b/vendor/github.com/bytom/vendor/golang.org/x/text/internal/colltab/iter_test.go
new file mode 100644 (file)
index 0000000..5783534
--- /dev/null
@@ -0,0 +1,63 @@
+// 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 colltab
+
+import (
+       "testing"
+)
+
+func TestDoNorm(t *testing.T) {
+       const div = -1 // The insertion point of the next block.
+       tests := []struct {
+               in, out []int
+       }{{
+               in:  []int{4, div, 3},
+               out: []int{3, 4},
+       }, {
+               in:  []int{4, div, 3, 3, 3},
+               out: []int{3, 3, 3, 4},
+       }, {
+               in:  []int{0, 4, div, 3},
+               out: []int{0, 3, 4},
+       }, {
+               in:  []int{0, 0, 4, 5, div, 3, 3},
+               out: []int{0, 0, 3, 3, 4, 5},
+       }, {
+               in:  []int{0, 0, 1, 4, 5, div, 3, 3},
+               out: []int{0, 0, 1, 3, 3, 4, 5},
+       }, {
+               in:  []int{0, 0, 1, 4, 5, div, 4, 4},
+               out: []int{0, 0, 1, 4, 4, 4, 5},
+       },
+       }
+       for j, tt := range tests {
+               i := Iter{}
+               var w, p int
+               for k, cc := range tt.in {
+
+                       if cc == div {
+                               w = 100
+                               p = k
+                               continue
+                       }
+                       i.Elems = append(i.Elems, makeCE([]int{w, defaultSecondary, 2, cc}))
+               }
+               i.doNorm(p, i.Elems[p].CCC())
+               if len(i.Elems) != len(tt.out) {
+                       t.Errorf("%d: length was %d; want %d", j, len(i.Elems), len(tt.out))
+               }
+               prevCCC := uint8(0)
+               for k, ce := range i.Elems {
+                       if int(ce.CCC()) != tt.out[k] {
+                               t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k])
+                       }
+                       if k > 0 && ce.CCC() == prevCCC && i.Elems[k-1].Primary() > ce.Primary() {
+                               t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k)
+                       }
+               }
+       }
+
+       // Combining rune overflow is tested in search/pattern_test.go.
+}