github.com/go-xe2/third@v1.0.3/golang.org/x/text/internal/colltab/iter_test.go (about)

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package colltab
     6  
     7  import (
     8  	"testing"
     9  )
    10  
    11  func TestDoNorm(t *testing.T) {
    12  	const div = -1 // The insertion point of the next block.
    13  	tests := []struct {
    14  		in, out []int
    15  	}{{
    16  		in:  []int{4, div, 3},
    17  		out: []int{3, 4},
    18  	}, {
    19  		in:  []int{4, div, 3, 3, 3},
    20  		out: []int{3, 3, 3, 4},
    21  	}, {
    22  		in:  []int{0, 4, div, 3},
    23  		out: []int{0, 3, 4},
    24  	}, {
    25  		in:  []int{0, 0, 4, 5, div, 3, 3},
    26  		out: []int{0, 0, 3, 3, 4, 5},
    27  	}, {
    28  		in:  []int{0, 0, 1, 4, 5, div, 3, 3},
    29  		out: []int{0, 0, 1, 3, 3, 4, 5},
    30  	}, {
    31  		in:  []int{0, 0, 1, 4, 5, div, 4, 4},
    32  		out: []int{0, 0, 1, 4, 4, 4, 5},
    33  	},
    34  	}
    35  	for j, tt := range tests {
    36  		i := Iter{}
    37  		var w, p int
    38  		for k, cc := range tt.in {
    39  
    40  			if cc == div {
    41  				w = 100
    42  				p = k
    43  				continue
    44  			}
    45  			i.Elems = append(i.Elems, makeCE([]int{w, defaultSecondary, 2, cc}))
    46  		}
    47  		i.doNorm(p, i.Elems[p].CCC())
    48  		if len(i.Elems) != len(tt.out) {
    49  			t.Errorf("%d: length was %d; want %d", j, len(i.Elems), len(tt.out))
    50  		}
    51  		prevCCC := uint8(0)
    52  		for k, ce := range i.Elems {
    53  			if int(ce.CCC()) != tt.out[k] {
    54  				t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k])
    55  			}
    56  			if k > 0 && ce.CCC() == prevCCC && i.Elems[k-1].Primary() > ce.Primary() {
    57  				t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k)
    58  			}
    59  		}
    60  	}
    61  
    62  	// Combining rune overflow is tested in search/pattern_test.go.
    63  }