Completed
Pull Request — master (#10)
by Artem
01:08
created

UkrainianToEnglishTest::dataProvider()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 189
Code Lines 150

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
dl 0
loc 189
rs 8.2857
c 1
b 1
f 0
cc 1
eloc 150
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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