github.com/go-xe2/third@v1.0.3/golang.org/x/text/unicode/norm/forminfo_test.go (about) 1 // Copyright 2013 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 // +build test 6 7 package norm 8 9 import "testing" 10 11 func TestProperties(t *testing.T) { 12 var d runeData 13 CK := [2]string{"C", "K"} 14 for k, r := 1, rune(0); r < 0x2ffff; r++ { 15 if k < len(testData) && r == testData[k].r { 16 d = testData[k] 17 k++ 18 } 19 s := string(r) 20 for j, p := range []Properties{NFC.PropertiesString(s), NFKC.PropertiesString(s)} { 21 f := d.f[j] 22 if p.CCC() != d.ccc { 23 t.Errorf("%U: ccc(%s): was %d; want %d %X", r, CK[j], p.CCC(), d.ccc, p.index) 24 } 25 if p.isYesC() != (f.qc == Yes) { 26 t.Errorf("%U: YesC(%s): was %v; want %v", r, CK[j], p.isYesC(), f.qc == Yes) 27 } 28 if p.combinesBackward() != (f.qc == Maybe) { 29 t.Errorf("%U: combines backwards(%s): was %v; want %v", r, CK[j], p.combinesBackward(), f.qc == Maybe) 30 } 31 if p.nLeadingNonStarters() != d.nLead { 32 t.Errorf("%U: nLead(%s): was %d; want %d %#v %#v", r, CK[j], p.nLeadingNonStarters(), d.nLead, p, d) 33 } 34 if p.nTrailingNonStarters() != d.nTrail { 35 t.Errorf("%U: nTrail(%s): was %d; want %d %#v %#v", r, CK[j], p.nTrailingNonStarters(), d.nTrail, p, d) 36 } 37 if p.combinesForward() != f.combinesForward { 38 t.Errorf("%U: combines forward(%s): was %v; want %v %#v", r, CK[j], p.combinesForward(), f.combinesForward, p) 39 } 40 // Skip Hangul as it is algorithmically computed. 41 if r >= hangulBase && r < hangulEnd { 42 continue 43 } 44 if p.hasDecomposition() { 45 if has := f.decomposition != ""; !has { 46 t.Errorf("%U: hasDecomposition(%s): was %v; want %v", r, CK[j], p.hasDecomposition(), has) 47 } 48 if string(p.Decomposition()) != f.decomposition { 49 t.Errorf("%U: decomp(%s): was %+q; want %+q", r, CK[j], p.Decomposition(), f.decomposition) 50 } 51 } 52 } 53 } 54 }