-
Notifications
You must be signed in to change notification settings - Fork 6
/
petrovich_test.go
133 lines (124 loc) · 3.23 KB
/
petrovich_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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package petrovich
import (
"testing"
"github.com/stretchr/testify/assert"
)
type testCase struct {
name string
gender Gender
infNames []string
}
func TestFirstName(t *testing.T) {
cases := []testCase{
{"Анна-Мария", Female, []string{
"Анны-Марии",
"Анне-Марии",
"Анну-Марию",
"Анной-Марией",
"Анне-Марии"}},
{"Василий", Male, []string{
"Василия",
"Василию",
"Василия",
"Василием",
"Василии"}},
{"Кочубей", Male, []string{
"Кочубея",
"Кочубею",
"Кочубея",
"Кочубеем",
"Кочубее"}},
{"Лев", Male, []string{
"Льва",
"Льву",
"Льва",
"Львом",
"Льве"}},
{"Маша", Female, []string{
"Маши",
"Маше",
"Машу",
"Машей",
"Маше"}},
{"John", Male, []string{
"John",
"John",
"John",
"John",
"John"}},
}
for _, c := range cases {
assert.Equal(t, c.name, FirstName(c.name, c.gender, Nominative))
for i, in := range c.infNames {
assert.Equal(t, in, FirstName(c.name, c.gender, Case(i)))
}
}
}
func TestMiddleName(t *testing.T) {
cases := []testCase{
{"Георгиевна-Авраамовна", Female, []string{
"Георгиевны-Авраамовны",
"Георгиевне-Авраамовне",
"Георгиевну-Авраамовну",
"Георгиевной-Авраамовной",
"Георгиевне-Авраамовне"}},
{"Петрович", Male, []string{
"Петровича",
"Петровичу",
"Петровича",
"Петровичем",
"Петровиче"}},
{"Петровна", Female, []string{
"Петровны",
"Петровне",
"Петровну",
"Петровной",
"Петровне"}},
}
for _, c := range cases {
assert.Equal(t, c.name, MiddleName(c.name, c.gender, Nominative))
for i, in := range c.infNames {
assert.Equal(t, in, MiddleName(c.name, c.gender, Case(i)))
}
}
}
func TestLastName(t *testing.T) {
cases := []testCase{
{"Андрейчук", Male, []string{
"Андрейчука",
"Андрейчуку",
"Андрейчука",
"Андрейчуком",
"Андрейчуке"}},
{"Андрейчук", Female, []string{
"Андрейчук",
"Андрейчук",
"Андрейчук",
"Андрейчук",
"Андрейчук"}},
{"Дюма", Male, []string{
"Дюма",
"Дюма",
"Дюма",
"Дюма",
"Дюма"}},
{"Петров-Водкин", Male, []string{
"Петрова-Водкина",
"Петрову-Водкину",
"Петрова-Водкина",
"Петровым-Водкиным",
"Петрове-Водкине"}},
{"Салтыков-Щедрин", Male, []string{
"Салтыкова-Щедрина",
"Салтыкову-Щедрину",
"Салтыкова-Щедрина",
"Салтыковым-Щедриным",
"Салтыкове-Щедрине"}},
}
for _, c := range cases {
assert.Equal(t, c.name, LastName(c.name, c.gender, Nominative))
for i, in := range c.infNames {
assert.Equal(t, in, LastName(c.name, c.gender, Case(i)))
}
}
}