mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-15 15:11:02 -04:00
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
|
// 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 precis
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"golang.org/x/text/runes"
|
||
|
)
|
||
|
|
||
|
// Compile-time regression test to ensure that Class is a Set
|
||
|
var _ runes.Set = (*class)(nil)
|
||
|
|
||
|
// Ensure that certain characters are (or are not) in the identifer class.
|
||
|
func TestClassContains(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
class *class
|
||
|
allowed []rune
|
||
|
disallowed []rune
|
||
|
}{
|
||
|
{
|
||
|
name: "Identifier",
|
||
|
class: identifier,
|
||
|
allowed: []rune("Aa0\u0021\u007e\u00df\u3007"),
|
||
|
disallowed: []rune("\u2150\u2100\u2200\u3164\u2190\u2600\u303b\u1e9b"),
|
||
|
},
|
||
|
{
|
||
|
name: "Freeform",
|
||
|
class: freeform,
|
||
|
allowed: []rune("Aa0\u0021\u007e\u00df\u3007 \u2150\u2100\u2200\u2190\u2600\u1e9b"),
|
||
|
disallowed: []rune("\u3164\u303b"),
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, rt := range tests {
|
||
|
for _, r := range rt.allowed {
|
||
|
if !rt.class.Contains(r) {
|
||
|
t.Errorf("Class %s should contain %U", rt.name, r)
|
||
|
}
|
||
|
}
|
||
|
for _, r := range rt.disallowed {
|
||
|
if rt.class.Contains(r) {
|
||
|
t.Errorf("Class %s should not contain %U", rt.name, r)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|