| // Copyright 2015 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 bidi |
| |
| import ( |
| "testing" |
| |
| "golang.org/x/text/internal/gen" |
| "golang.org/x/text/internal/testtext" |
| "golang.org/x/text/internal/ucd" |
| ) |
| |
| var labels = []string{ |
| AL: "AL", |
| AN: "AN", |
| B: "B", |
| BN: "BN", |
| CS: "CS", |
| EN: "EN", |
| ES: "ES", |
| ET: "ET", |
| L: "L", |
| NSM: "NSM", |
| ON: "ON", |
| R: "R", |
| S: "S", |
| WS: "WS", |
| |
| LRO: "LRO", |
| RLO: "RLO", |
| LRE: "LRE", |
| RLE: "RLE", |
| PDF: "PDF", |
| LRI: "LRI", |
| RLI: "RLI", |
| FSI: "FSI", |
| PDI: "PDI", |
| } |
| |
| func TestTables(t *testing.T) { |
| testtext.SkipIfNotLong(t) |
| |
| ucd.Parse(gen.OpenUCDFile("BidiBrackets.txt"), func(p *ucd.Parser) { |
| r1 := p.Rune(0) |
| want := p.Rune(1) |
| |
| e, _ := LookupRune(r1) |
| if got := e.reverseBracket(r1); got != want { |
| t.Errorf("Reverse(%U) = %U; want %U", r1, got, want) |
| } |
| }) |
| |
| done := map[rune]bool{} |
| test := func(name string, r rune, want string) { |
| str := string(r) |
| e, _ := LookupString(str) |
| if got := labels[e.Class()]; got != want { |
| t.Errorf("%s:%U: got %s; want %s", name, r, got, want) |
| } |
| if e2, sz := LookupRune(r); e != e2 || sz != len(str) { |
| t.Errorf("LookupRune(%U) = %v, %d; want %v, %d", r, e2, e, sz, len(str)) |
| } |
| if e2, sz := Lookup([]byte(str)); e != e2 || sz != len(str) { |
| t.Errorf("Lookup(%U) = %v, %d; want %v, %d", r, e2, e, sz, len(str)) |
| } |
| done[r] = true |
| } |
| |
| // Insert the derived BiDi properties. |
| ucd.Parse(gen.OpenUCDFile("extracted/DerivedBidiClass.txt"), func(p *ucd.Parser) { |
| r := p.Rune(0) |
| test("derived", r, p.String(1)) |
| }) |
| visitDefaults(func(r rune, c Class) { |
| if !done[r] { |
| test("default", r, labels[c]) |
| } |
| }) |
| |
| } |