github.com/go-xe2/third@v1.0.3/golang.org/x/text/internal/export/idna/gen_test.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package idna
     6  
     7  import (
     8  	"testing"
     9  	"unicode"
    10  
    11  	"github.com/go-xe2/third/golang.org/x/text/internal/gen"
    12  	"github.com/go-xe2/third/golang.org/x/text/internal/testtext"
    13  	"github.com/go-xe2/third/golang.org/x/text/internal/ucd"
    14  )
    15  
    16  func TestTables(t *testing.T) {
    17  	testtext.SkipIfNotLong(t)
    18  
    19  	lookup := func(r rune) info {
    20  		v, _ := trie.lookupString(string(r))
    21  		return info(v)
    22  	}
    23  
    24  	ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) {
    25  		r := p.Rune(0)
    26  		x := lookup(r)
    27  		if got, want := x.category(), catFromEntry(p); got != want {
    28  			t.Errorf("%U:category: got %x; want %x", r, got, want)
    29  		}
    30  
    31  		mapped := false
    32  		switch p.String(1) {
    33  		case "mapped", "disallowed_STD3_mapped", "deviation":
    34  			mapped = true
    35  		}
    36  		if x.isMapped() != mapped {
    37  			t.Errorf("%U:isMapped: got %v; want %v", r, x.isMapped(), mapped)
    38  		}
    39  		if !mapped {
    40  			return
    41  		}
    42  		want := string(p.Runes(2))
    43  		got := string(x.appendMapping(nil, string(r)))
    44  		if got != want {
    45  			t.Errorf("%U:mapping: got %+q; want %+q", r, got, want)
    46  		}
    47  
    48  		if x.isMapped() {
    49  			return
    50  		}
    51  		wantMark := unicode.In(r, unicode.Mark)
    52  		gotMark := x.isModifier()
    53  		if gotMark != wantMark {
    54  			t.Errorf("IsMark(%U) = %v; want %v", r, gotMark, wantMark)
    55  		}
    56  	})
    57  
    58  	ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) {
    59  		r := p.Rune(0)
    60  		x := lookup(r)
    61  		got := x.isViramaModifier()
    62  
    63  		const cccVirama = 9
    64  		want := p.Int(ucd.CanonicalCombiningClass) == cccVirama
    65  		if got != want {
    66  			t.Errorf("IsVirama(%U) = %v; want %v", r, got, want)
    67  		}
    68  
    69  		rtl := false
    70  		switch p.String(ucd.BidiClass) {
    71  		case "R", "AL", "AN":
    72  			rtl = true
    73  		}
    74  		if got := x.isBidi("A"); got != rtl && !x.isMapped() {
    75  			t.Errorf("IsBidi(%U) = %v; want %v", r, got, rtl)
    76  		}
    77  	})
    78  
    79  	ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) {
    80  		r := p.Rune(0)
    81  		x := lookup(r)
    82  		if x.isMapped() {
    83  			return
    84  		}
    85  		got := x.joinType()
    86  		want := joinType[p.String(1)]
    87  		if got != want {
    88  			t.Errorf("JoinType(%U) = %x; want %x", r, got, want)
    89  		}
    90  	})
    91  }