package rangetable import ( "reflect" "testing" "unicode" ) var ( empty = &unicode.RangeTable{} many = &unicode.RangeTable{ R16: []unicode.Range16{{0, 0xffff, 5}}, R32: []unicode.Range32{{0x10004, 0x10009, 5}}, LatinOffset: 0, } ) func TestVisit(t *testing.T) { Visit(empty, func(got rune) { t.Error("call from empty RangeTable") }) var want rune Visit(many, func(got rune) { if got != want { t.Errorf("got %U; want %U", got, want) } want += 5 }) if want -= 5; want != 0x10009 { t.Errorf("last run was %U; want U+10009", want) } } func TestNew(t *testing.T) { for i, rt := range []*unicode.RangeTable{ empty, unicode.Co, unicode.Letter, unicode.ASCII_Hex_Digit, many, maxRuneTable, } { var got, want []rune Visit(rt, func(r rune) { want = append(want, r) }) Visit(New(want...), func(r rune) { got = append(got, r) }) if !reflect.DeepEqual(got, want) { t.Errorf("%d:\ngot %v;\nwant %v", i, got, want) } } }