-
Notifications
You must be signed in to change notification settings - Fork 157
/
Copy pathtests2.sql
167 lines (129 loc) · 7.16 KB
/
tests2.sql
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
-- Тесты2
--пользователи путают Ф,И,О местами и надеяться только на позицию нельзя!
DO $$
DECLARE
rec record;
result depers.gender;
BEGIN
for rec in select * from (values
(e'katrin\nkatrin\n', 'female'),
(e'katrin\n\n', 'female'),
(e'\nkatrin\n', 'female'),
(e'\n\nkatrin', 'female'),
(e'\n\n', 'unknown'),
('Савина-Швейко Алина-Саша Владимировна', 'female'),
('Савина (Полина) Никита Поповна', 'female'),
('Григорьев-Апполонов Валя', 'male'),
('Никита-Микаэл Неймарк', 'male'),
(e'муса-оглы\nдарья\n', 'female'),
('муса-оглы дарья', 'female'),
(e'саид\nалина\nакбари', 'female'),
(e'алина\nсаид\nакбари', 'female'),
(e'саид\nакбари\nалина', 'female'),
('саид алина акбари', 'female'),
(e'си-ян-пин\nелена\n', 'female'),
('си-ян-пин елена', 'female'),
('си ян пин елена', 'female'),
(e'оглы\nрита\n', 'female'),
(e'рита\nоглы\n', 'female'),
('оглы рита', 'female'),
('рита оглы', 'female'),
(e'мороз\nнаталья\n', 'female'),
(e'наталья\nмороз\n', 'female'),
(e'щербина\nалександр\n', 'male'),
(e'александр\nщербина\n', 'male'),
('Плутник Никита', 'male'),
(e'Плутник\nНикита', 'male'),
(e'Никита\nПлутник', 'male'),
(e'Савин\nНикита', 'male'),
(e'Никита\nСавин', 'male'),
(e'Савина\nНикита', 'male'), --неоднозначно, но теперь это мужчина
(e'Никита\nСавина', 'male'), --неоднозначно, но теперь это мужчина
(e'Савина\nНикита\nПоповна', 'female'),
(e'Никита\nСавина\nПоповна', 'female'),
('Савина Никита Поповна', 'female'),
('Никита Савина Поповна', 'female'),
(e'войцик-разумовская\nветлана\n', 'female'),
('войцик-разумовская ветлана', 'female'),
(e'лада\nжадан\n', 'female'),
(e'жадан\nлада\n', 'female'),
('лада жадан', 'female'),
('жадан лада', 'female'),
(e'Ольга\nШульга\n', 'female'),
(e'Алексей\nКим\n', 'male'),
('Сурин Никита Попович', 'male'),
(e'Сурин\nНикита\n', 'male'), --здесь позиция имеет вес!
('Сурин Никита', 'male'),
(e'кызы\nфахридин\nмухаббат', 'female'),
(e'мухаббат\nфахридин\nкызы', 'female'),
(e'кызы\nгуламидин\nгулназ', 'female'),
('кызы гуламидин гулназ', 'female'),
(e'кызы\nболотбек\nайпери', 'female'),
('кызы болотбек айпери', 'female'),
(e'имамидин\nкызы\nалтынай', 'female'),
('имамидин кызы алтынай', 'female'),
(e'алибек\nзубайда\nкызы', 'female'),
('алибек зубайда кызы', 'female'),
(e'аминова\nгулзода\nтахир кизи', 'female'),
('аминова гулзода тахир кизи', 'female'),
(e'Али\nИхаб\n', 'male'),
('Али Ихаб', 'male'),
(e'анатолий\nгрёза\n', 'male'),
('анатолий грёза', 'male'),
(e'максим\nганжа\n', 'male'),
('максим ганжа', 'male'),
(e'влад\nвелика\n', 'male'),
('влад велика', 'male'),
(e'григорян\nгоар\n', 'female'),
('Арнольд Шварценеггер', 'male'),
('Аскольд Запашный', 'male'),
('Зоя Космедельянских', 'female'),
('Клара Цеткин', 'female'),
('Людвиг Цеткин', 'male'),
('Вагнер Елена', 'female'),
('Кулиш Анастасия', 'female'),
('Вольф Анастасия', 'female'),
('Вольф Мессинг', 'male'),
('Юлий Цезарь', 'male'),
('Юлия Ким', 'female'),
('Хелена Бонем Картер', 'female'),
('Джейн Пилчер', 'female'),
('Гари Тэйлор-Флетчер', 'male'),
('Пьер Нарцисс', 'male'),
('Леонардо да Винчи', 'male'),
('Жюль Верн', 'male'),
('Эндрю Ллойд Уэббер', 'male'),
('Рубен Лофтус-Чик', 'male'),
--ФИО от нескольких разных людей не должны определяться
(e'кирилл\nили\nтатьяна', 'unknown'),
( 'кирилл или татьяна', 'unknown'),
(e'елена\nсергей\nбардины', 'unknown'),
('елена сергей бардины', 'unknown'),
('елена сергей бобровы', 'unknown'),
('елена сергей бакиревы', 'unknown'),
('елена сергей высоцкие', 'unknown'),
('елена сергей лоховские', 'unknown'),
('алексей иванович светлана николаевна', 'unknown'),
('калинина марина сергей иванов', 'unknown'),
(e'андрей,\nвиктория,\nмария', 'unknown'),
( 'андрей, виктория, мария', 'unknown'),
(e'андрей и виктория\nборовиковы\n', 'unknown'),
('андрей и виктория боровиковы', 'unknown'),
(e'новиков\nроман, светлана\n', 'unknown'),
('новиков роман, светлана', 'unknown'),
(e'новиков\nроман\nи светлана', 'unknown'),
('новиков роман и светлана', 'unknown'),
--(e'Роман\nВиктория\n', 'female'),
('Андерсен-Нексе', 'unknown'),
('Мендельсон-Бартольди', 'unknown'),
('Лошадь Пржевальского', 'unknown')
) as t(name, gender)
loop
result = depers.gender_by_name(rec.name);
ASSERT
-- результат сравнения должен вернуть boolean
result is not distinct from rec.gender::depers.gender,
-- если результат сравнения не true, то вернётся сообщение с ошибкой
format('%L expected %L, returned %L', replace(rec.name, e'\n', '\n'), rec.gender, result);
end loop;
END $$;