-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwordClass_test.go
48 lines (43 loc) · 1.68 KB
/
wordClass_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package neng
import "testing"
// Tests WordClass.CompatibleWith. Fails if compatibility assessment
// is not consistent with documentation.
func TestWordClass_CompatibleWith(t *testing.T) {
type testCase struct {
expected bool
wc WordClass
mods Mod
}
cases := []testCase{
{true, WC_ADJECTIVE, MOD_COMPARATIVE | MOD_SUPERLATIVE | MOD_CASE_LOWER | MOD_CASE_TITLE | MOD_CASE_UPPER},
{true, WC_ADVERB, MOD_COMPARATIVE | MOD_SUPERLATIVE | MOD_CASE_LOWER | MOD_CASE_TITLE | MOD_CASE_UPPER},
{true, WC_NOUN, MOD_PLURAL | MOD_CASE_LOWER | MOD_CASE_TITLE | MOD_CASE_UPPER},
{true, WC_NOUN, MOD_INDEF},
{true, WC_NOUN, MOD_INDEF_SILENT},
{true, WC_VERB, MOD_PAST_SIMPLE | MOD_PAST_PARTICIPLE | MOD_PRESENT_SIMPLE | MOD_GERUND | MOD_PLURAL | MOD_CASE_LOWER | MOD_CASE_TITLE | MOD_CASE_UPPER},
{true, WC_VERB, MOD_PAST_SIMPLE},
{true, WC_VERB, MOD_PRESENT_SIMPLE},
{false, WC_ADJECTIVE, MOD_GERUND},
{false, WC_ADJECTIVE, MOD_PLURAL},
{false, WC_ADJECTIVE, MOD_INDEF | MOD_SUPERLATIVE},
{false, WC_ADJECTIVE, MOD_INDEF_SILENT},
{false, WC_ADVERB, MOD_PLURAL},
{false, WC_ADVERB, MOD_PAST_SIMPLE},
{false, WC_ADVERB, MOD_INDEF | MOD_SUPERLATIVE},
{false, WC_ADVERB, MOD_INDEF_SILENT},
{false, WC_NOUN, MOD_INDEF | MOD_PLURAL},
{false, WC_NOUN, MOD_INDEF | MOD_INDEF_SILENT},
{false, WC_NOUN, MOD_PLURAL | MOD_INDEF_SILENT},
{false, WC_NOUN, MOD_COMPARATIVE},
{false, WC_VERB, MOD_SUPERLATIVE},
{false, WC_VERB, MOD_PLURAL},
{false, WC_VERB, MOD_INDEF},
{false, WC_VERB, MOD_INDEF_SILENT},
}
for _, c := range cases {
out := c.wc.CompatibleWith(c.mods)
if out != c.expected {
t.Errorf("Failed for '%v': expected %v, got %v", c, c.expected, out)
}
}
}