github.com/go-xe2/third@v1.0.3/golang.org/x/text/unicode/rangetable/rangetable_test.go (about)

     1  package rangetable
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  	"unicode"
     7  )
     8  
     9  var (
    10  	empty = &unicode.RangeTable{}
    11  	many  = &unicode.RangeTable{
    12  		R16:         []unicode.Range16{{0, 0xffff, 5}},
    13  		R32:         []unicode.Range32{{0x10004, 0x10009, 5}},
    14  		LatinOffset: 0,
    15  	}
    16  )
    17  
    18  func TestVisit(t *testing.T) {
    19  	Visit(empty, func(got rune) {
    20  		t.Error("call from empty RangeTable")
    21  	})
    22  
    23  	var want rune
    24  	Visit(many, func(got rune) {
    25  		if got != want {
    26  			t.Errorf("got %U; want %U", got, want)
    27  		}
    28  		want += 5
    29  	})
    30  	if want -= 5; want != 0x10009 {
    31  		t.Errorf("last run was %U; want U+10009", want)
    32  	}
    33  }
    34  
    35  func TestNew(t *testing.T) {
    36  	for i, rt := range []*unicode.RangeTable{
    37  		empty,
    38  		unicode.Co,
    39  		unicode.Letter,
    40  		unicode.ASCII_Hex_Digit,
    41  		many,
    42  		maxRuneTable,
    43  	} {
    44  		var got, want []rune
    45  		Visit(rt, func(r rune) {
    46  			want = append(want, r)
    47  		})
    48  		Visit(New(want...), func(r rune) {
    49  			got = append(got, r)
    50  		})
    51  		if !reflect.DeepEqual(got, want) {
    52  			t.Errorf("%d:\ngot  %v;\nwant %v", i, got, want)
    53  		}
    54  	}
    55  }