1 | <?php declare(strict_types=1); |
||
20 | */ |
||
21 | class UkrainianToEnglishTest extends TestCase |
||
22 | { |
||
23 | protected $transliterator; |
||
24 | |||
25 | public function setUp() |
||
26 | { |
||
27 | $this->transliterator = new Transliterator(); |
||
28 | } |
||
29 | |||
30 | /** |
||
31 | * @dataProvider alphabetProvider |
||
32 | * @dataProvider officialExamplesProvider |
||
33 | * @dataProvider sentencesProvider |
||
34 | */ |
||
35 | public function testTransliterationFromUkrainianToEnglish(string $ukrainianText, string $transliteratedText) |
||
36 | { |
||
37 | $this->assertEquals($transliteratedText, $this->transliterator->ukToEn($ukrainianText)); |
||
38 | } |
||
39 | |||
40 | public function alphabetProvider(): array |
||
41 | { |
||
42 | return [ |
||
43 | // Ukrainian alphabet |
||
44 | ['А', 'A'], |
||
45 | ['Б', 'B'], |
||
46 | ['В', 'V'], |
||
47 | ['Г', 'H'], |
||
48 | ['Ґ', 'G'], |
||
49 | ['Д', 'D'], |
||
50 | ['Е', 'E'], |
||
51 | ['Є', 'Ye'], |
||
52 | ['Ж', 'Zh'], |
||
53 | ['З', 'Z'], |
||
54 | ['И', 'Y'], |
||
55 | ['І', 'I'], |
||
56 | ['Ї', 'Yi'], |
||
57 | ['Й', 'Y'], |
||
58 | ['К', 'K'], |
||
59 | ['Л', 'L'], |
||
60 | ['М', 'M'], |
||
61 | ['Н', 'N'], |
||
62 | ['О', 'O'], |
||
63 | ['П', 'P'], |
||
64 | ['Р', 'R'], |
||
65 | ['С', 'S'], |
||
66 | ['Т', 'T'], |
||
67 | ['У', 'U'], |
||
68 | ['Ф', 'F'], |
||
69 | ['Х', 'Kh'], |
||
70 | ['Ц', 'Ts'], |
||
71 | ['Ч', 'Ch'], |
||
72 | ['Ш', 'Sh'], |
||
73 | ['Щ', 'Shch'], |
||
74 | ['Ю', 'Yu'], |
||
75 | ['Я', 'Ya'], |
||
76 | ['а', 'a'], |
||
77 | ['б', 'b'], |
||
78 | ['в', 'v'], |
||
79 | ['г', 'h'], |
||
80 | ['ґ', 'g'], |
||
81 | ['д', 'd'], |
||
82 | ['е', 'e'], |
||
83 | ['є', 'ie'], |
||
84 | ['ж', 'zh'], |
||
85 | ['з', 'z'], |
||
86 | ['и', 'y'], |
||
87 | ['і', 'i'], |
||
88 | ['ї', 'i'], |
||
89 | ['й', 'i'], |
||
90 | ['к', 'k'], |
||
91 | ['л', 'l'], |
||
92 | ['м', 'm'], |
||
93 | ['н', 'n'], |
||
94 | ['о', 'o'], |
||
95 | ['п', 'p'], |
||
96 | ['р', 'r'], |
||
97 | ['с', 's'], |
||
98 | ['т', 't'], |
||
99 | ['у', 'u'], |
||
100 | ['ф', 'f'], |
||
101 | ['х', 'kh'], |
||
102 | ['ц', 'ts'], |
||
103 | ['ч', 'ch'], |
||
104 | ['ш', 'sh'], |
||
105 | ['щ', 'shch'], |
||
106 | ['ь', ''], |
||
107 | ['ю', 'iu'], |
||
108 | ['я', 'ia'], |
||
109 | ['\'', ''], |
||
110 | ]; |
||
111 | } |
||
112 | |||
113 | public function officialExamplesProvider(): array |
||
114 | { |
||
115 | return [ |
||
116 | // Examples of transliteration form the resolution of the Cabinet of Ministers of Ukraine №55 (27.01.2010) |
||
117 | // Аа |
||
118 | ['Алушта', 'Alushta'], |
||
119 | ['Андрій', 'Andrii'], |
||
120 | // Бб |
||
121 | ['Борщагівка', 'Borshchahivka'], |
||
122 | ['Борисенко', 'Borysenko'], |
||
123 | // Вв |
||
124 | ['Вінниця', 'Vinnytsia'], |
||
125 | ['Володимир', 'Volodymyr'], |
||
126 | // Гг |
||
127 | ['Гадяч', 'Hadiach'], |
||
128 | ['Богдан', 'Bohdan'], |
||
129 | ['Згурський', 'Zghurskyi'], |
||
130 | // Ґґ |
||
131 | ['Ґалаґан', 'Galagan'], |
||
132 | ['Ґорґани', 'Gorgany'], |
||
133 | // Дд |
||
134 | ['Донецьк', 'Donetsk'], |
||
135 | ['Дмитро', 'Dmytro'], |
||
136 | // Ее |
||
137 | ['Рівне', 'Rivne'], |
||
138 | ['Олег', 'Oleh'], |
||
139 | ['Есмань', 'Esman'], |
||
140 | // Єє |
||
141 | ['Єнакієве', 'Yenakiieve'], |
||
142 | ['Гаєвич', 'Haievych'], |
||
143 | ['Короп\'є', 'Koropie'], |
||
144 | // Жж |
||
145 | ['Житомир', 'Zhytomyr'], |
||
146 | ['Жанна', 'Zhanna'], |
||
147 | ['Жежелів', 'Zhezheliv'], |
||
148 | // Зз |
||
149 | ['Закарпаття', 'Zakarpattia'], |
||
150 | ['Казимирчук', 'Kazymyrchuk'], |
||
151 | // Ии |
||
152 | ['Медвин', 'Medvyn'], |
||
153 | ['Михайленко', 'Mykhailenko'], |
||
154 | // Іі |
||
155 | ['Іванків', 'Ivankiv'], |
||
156 | ['Іващенко', 'Ivashchenko'], |
||
157 | // Її |
||
158 | ['Їжакевич', 'Yizhakevych'], |
||
159 | ['Кадиївка', 'Kadyivka'], |
||
160 | ['Мар\'їне', 'Marine'], |
||
161 | // Йй |
||
162 | ['Йосипівка', 'Yosypivka'], |
||
163 | ['Стрий', 'Stryi'], |
||
164 | ['Олексій', 'Oleksii'], |
||
165 | // Кк |
||
166 | ['Київ', 'Kyiv'], |
||
167 | ['Коваленко', 'Kovalenko'], |
||
168 | // Лл |
||
169 | ['Лебедин', 'Lebedyn'], |
||
170 | ['Леонід', 'Leonid'], |
||
171 | // Мм |
||
172 | ['Миколаїв', 'Mykolaiv'], |
||
173 | ['Маринич', 'Marynych'], |
||
174 | // Нн |
||
175 | ['Ніжин', 'Nizhyn'], |
||
176 | ['Наталія', 'Nataliia'], |
||
177 | // Оо |
||
178 | ['Одеса', 'Odesa'], |
||
179 | ['Онищенко', 'Onyshchenko'], |
||
180 | // Пп |
||
181 | ['Полтава', 'Poltava'], |
||
182 | ['Петро', 'Petro'], |
||
183 | // Рр |
||
184 | ['Решетилівка', 'Reshetylivka'], |
||
185 | ['Рибчинський', 'Rybchynskyi'], |
||
186 | // Сс |
||
187 | ['Суми', 'Sumy'], |
||
188 | ['Соломія', 'Solomiia'], |
||
189 | // Тт |
||
190 | ['Тернопіль', 'Ternopil'], |
||
191 | ['Троць', 'Trots'], |
||
192 | // Уу |
||
193 | ['Ужгород', 'Uzhhorod'], |
||
194 | ['Уляна', 'Uliana'], |
||
195 | // Фф |
||
196 | ['Фастів', 'Fastiv'], |
||
197 | ['Філіпчук', 'Filipchuk'], |
||
198 | // Хх |
||
199 | ['Харків', 'Kharkiv'], |
||
200 | ['Христина', 'Khrystyna'], |
||
201 | // Цц |
||
202 | ['Біла Церква', 'Bila Tserkva'], |
||
203 | ['Стеценко', 'Stetsenko'], |
||
204 | // Чч |
||
205 | ['Чернівці', 'Chernivtsi'], |
||
206 | ['Шевченко', 'Shevchenko'], |
||
207 | // Шш |
||
208 | ['Шостка', 'Shostka'], |
||
209 | ['Кишеньки', 'Kyshenky'], |
||
210 | // Щщ |
||
211 | ['Щербухи', 'Shcherbukhy'], |
||
212 | ['Гоща', 'Hoshcha'], |
||
213 | ['Гаращенко', 'Harashchenko'], |
||
214 | // Юю |
||
215 | ['Юрій', 'Yurii'], |
||
216 | ['Корюківка', 'Koriukivka'], |
||
217 | // Яя |
||
218 | ['Яготин', 'Yahotyn'], |
||
219 | ['Ярошенко', 'Yaroshenko'], |
||
220 | ['Костянтин', 'Kostiantyn'], |
||
221 | ['Знам\'янка', 'Znamianka'], |
||
222 | ['Феодосія', 'Feodosiia'], |
||
223 | // Some text |
||
224 | ['Добрий день', 'Dobryi den'], |
||
225 | ['Привіт світ!', 'Pryvit svit!'], |
||
226 | ]; |
||
227 | } |
||
237 |