| 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) | |
| } | |
| } | |
| } |