| // Copyright 2016 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package runenames |
| |
| import ( |
| "strings" |
| "testing" |
| "unicode" |
| |
| "golang.org/x/text/internal/gen" |
| "golang.org/x/text/internal/testtext" |
| "golang.org/x/text/internal/ucd" |
| ) |
| |
| func TestName(t *testing.T) { |
| testtext.SkipIfNotLong(t) |
| |
| wants := make([]string, 1+unicode.MaxRune) |
| ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { |
| wants[p.Rune(0)] = getName(p) |
| }) |
| |
| nErrors := 0 |
| for r, want := range wants { |
| got := Name(rune(r)) |
| if got != want { |
| t.Errorf("r=%#08x: got %q, want %q", r, got, want) |
| nErrors++ |
| if nErrors == 100 { |
| t.Fatal("too many errors") |
| } |
| } |
| } |
| } |
| |
| // Copied from gen.go. |
| func getName(p *ucd.Parser) string { |
| s := p.String(ucd.Name) |
| if s == "" { |
| return "" |
| } |
| if s[0] == '<' { |
| const first = ", First>" |
| if i := strings.Index(s, first); i >= 0 { |
| s = s[:i] + ">" |
| } |
| |
| } |
| return s |
| } |