Completed
Push — feature-php71 ( 09cbef )
by Artem
01:50
created

UkrainianToEnglishTest::testTransliterationFromUkrainianToEnglish()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 2
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of the Transliteration library
4
 *
5
 * (c) Artem Genvald <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Tests\Fresh\Transliteration;
12
13
use Fresh\Transliteration\Transliterator;
14
use PHPUnit\Framework\TestCase;
15
16
/**
17
 * UkrainianToEnglish Transliterator Test.
18
 *
19
 * @author Artem Genvald <[email protected]>
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
    }
228
229
    public function sentencesProvider(): array
230
    {
231
        return [
232
            ['Добрий день', 'Dobryi den'],
233
            ['Привіт світ!', 'Pryvit svit!'],
234
        ];
235
    }
236
}
237