|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright 2013 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.
-
- // +build test
-
- package norm
-
- import "testing"
-
- func TestProperties(t *testing.T) {
- var d runeData
- CK := [2]string{"C", "K"}
- for k, r := 1, rune(0); r < 0x2ffff; r++ {
- if k < len(testData) && r == testData[k].r {
- d = testData[k]
- k++
- }
- s := string(r)
- for j, p := range []Properties{NFC.PropertiesString(s), NFKC.PropertiesString(s)} {
- f := d.f[j]
- if p.CCC() != d.ccc {
- t.Errorf("%U: ccc(%s): was %d; want %d %X", r, CK[j], p.CCC(), d.ccc, p.index)
- }
- if p.isYesC() != (f.qc == Yes) {
- t.Errorf("%U: YesC(%s): was %v; want %v", r, CK[j], p.isYesC(), f.qc == Yes)
- }
- if p.combinesBackward() != (f.qc == Maybe) {
- t.Errorf("%U: combines backwards(%s): was %v; want %v", r, CK[j], p.combinesBackward(), f.qc == Maybe)
- }
- if p.nLeadingNonStarters() != d.nLead {
- t.Errorf("%U: nLead(%s): was %d; want %d %#v %#v", r, CK[j], p.nLeadingNonStarters(), d.nLead, p, d)
- }
- if p.nTrailingNonStarters() != d.nTrail {
- t.Errorf("%U: nTrail(%s): was %d; want %d %#v %#v", r, CK[j], p.nTrailingNonStarters(), d.nTrail, p, d)
- }
- if p.combinesForward() != f.combinesForward {
- t.Errorf("%U: combines forward(%s): was %v; want %v %#v", r, CK[j], p.combinesForward(), f.combinesForward, p)
- }
- // Skip Hangul as it is algorithmically computed.
- if r >= hangulBase && r < hangulEnd {
- continue
- }
- if p.hasDecomposition() {
- if has := f.decomposition != ""; !has {
- t.Errorf("%U: hasDecomposition(%s): was %v; want %v", r, CK[j], p.hasDecomposition(), has)
- }
- if string(p.Decomposition()) != f.decomposition {
- t.Errorf("%U: decomp(%s): was %+q; want %+q", r, CK[j], p.Decomposition(), f.decomposition)
- }
- }
- }
- }
- }
|