56 lines
999 B
Go
56 lines
999 B
Go
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)
|
|
}
|
|
}
|
|
}
|