@@ -3,7 +3,7 @@ package translit
33import org .scalatest .FunSuite
44
55class UkrainianSpec extends FunSuite {
6- val correctMapping = List (
6+ val words = List (
77 " Алушта" -> " Alushta" ,
88 " Андрій" -> " Andrij" ,
99 " Борщагівка" -> " Borshchagivka" ,
@@ -12,24 +12,24 @@ class UkrainianSpec extends FunSuite {
1212 " Володимир" -> " Volodymyr" ,
1313 " Гадяч" -> " Gadyach" ,
1414 " Богдан" -> " Bogdan" ,
15- " Згурський" -> " Zgurskyj " ,
15+ " Згурський" -> " Zgurs'kyj " ,
1616 " Ґалаґан" -> " G'alag'an" ,
1717 " Ґорґани" -> " G'org'any" ,
18- " Донецьк" -> " Donetsk " ,
18+ " Донецьк" -> " Donets'k " ,
1919 " Дмитро" -> " Dmytro" ,
2020 " Рівне" -> " Rivne" ,
2121 " Олег" -> " Oleg" ,
22- " Есмань" -> " Esman" ,
22+ " Есмань" -> " Esman' " ,
2323 " Єнакієве" -> " Yenakiyeve" ,
2424 " Гаєвич" -> " Gayevych" ,
25- " Короп'є" -> " Koropye " ,
25+ " Короп'є" -> " Korop'ye " ,
2626 " Житомир" -> " Zhytomyr" ,
2727 " Жанна" -> " Zhanna" ,
2828 " Жежелів" -> " Zhezheliv" ,
2929 " Закарпаття" -> " Zakarpattya" ,
3030 " Казимирчук" -> " Kazymyrchuk" ,
3131 " Медвин" -> " Medvyn" ,
32- " Михайленко" -> " Myhajlenko " ,
32+ " Михайленко" -> " Mykhajlenko " ,
3333 " Іванків" -> " Ivankiv" ,
3434 " Іващенко" -> " Ivashchenko" ,
3535 " Їжакевич" -> " Yizhakevych" ,
@@ -50,44 +50,42 @@ class UkrainianSpec extends FunSuite {
5050 " Полтава" -> " Poltava" ,
5151 " Петро" -> " Petro" ,
5252 " Решетилівка" -> " Reshetylivka" ,
53- " Рибчинський" -> " Rybchynskyj " ,
53+ " Рибчинський" -> " Rybchyns'kyj " ,
5454 " Суми" -> " Sumy" ,
5555 " Соломія" -> " Solomiya" ,
56- " Тернопіль" -> " Ternopil" ,
57- " Троць" -> " Trots" ,
56+ " Тернопіль" -> " Ternopil' " ,
57+ " Троць" -> " Trots' " ,
5858 " Ужгород" -> " Uzhgorod" ,
5959 " Уляна" -> " Ulyana" ,
6060 " Фастів" -> " Fastiv" ,
6161 " Філіпчук" -> " Filipchuk" ,
62- " Харків" -> " Harkiv " ,
63- " Христина" -> " Hrystyna " ,
62+ " Харків" -> " Kharkiv " ,
63+ " Христина" -> " Khrystyna " ,
6464 " Біла Церква" -> " Bila Tserkva" ,
6565 " Стеценко" -> " Stetsenko" ,
6666 " Чернівці" -> " Chernivtsi" ,
6767 " Шевченко" -> " Shevchenko" ,
6868 " Шостка" -> " Shostka" ,
69- " Кишеньки" -> " Kyshenky " ,
70- " Щербухи" -> " Shcherbuhy " ,
69+ " Кишеньки" -> " Kyshen'ky " ,
70+ " Щербухи" -> " Shcherbukhy " ,
7171 " Гоща" -> " Goshcha" ,
7272 " Гаращенко" -> " Garashchenko" ,
7373 " Юрій" -> " Yurij" ,
7474 " Корюківка" -> " Koryukivka" ,
7575 " Яготин" -> " Yagotyn" ,
7676 " Ярошенко" -> " Yaroshenko" ,
7777 " Костянтин" -> " Kostyantyn" ,
78- " Знам'янка" -> " Znamyanka " ,
78+ " Знам'янка" -> " Znam'yanka " ,
7979 " Феодосія" -> " Feodosiya"
8080 )
8181
82- def removeApostropheAndSoftSign ( str : String ) : String =
83- str
84- .replaceAll( " ь " , " " )
85- .replaceAll( " ' " , " " )
82+ words.foreach { case (cyrillic, latin) =>
83+ test( s " $cyrillic <-> $latin " ) {
84+ assert( Ukrainian .cyrillicToLatin(cyrillic) == latin )
85+ assert( Ukrainian .latinToCyrillic(latin) == cyrillic )
8686
87- correctMapping.foreach { case (cyrillic, latin) =>
88- test(s " $latin -> $cyrillic" ) {
89- assert(Ukrainian .latinToCyrillic(latin) ==
90- removeApostropheAndSoftSign(cyrillic))
87+ assert(Ukrainian .cyrillicToLatin(cyrillic.toUpperCase) == latin.toUpperCase)
88+ assert(Ukrainian .latinToCyrillic(latin.toUpperCase) == cyrillic.toUpperCase)
9189 }
9290 }
9391
@@ -253,9 +251,9 @@ class UkrainianSpec extends FunSuite {
253251 }
254252
255253 test(" сх" ) {
256- assert(Ukrainian .latinToCyrillic(" s|hyl 'nist'" ) == " схильність" )
257- assert(Ukrainian .latinToCyrillic(" s|hopyv " ) == " схопив" )
258- assert(Ukrainian .latinToCyrillic(" s|hodi " ) == " сході" )
254+ assert(Ukrainian .latinToCyrillic(" skhyl 'nist'" ) == " схильність" )
255+ assert(Ukrainian .latinToCyrillic(" skhopyv " ) == " схопив" )
256+ assert(Ukrainian .latinToCyrillic(" skhodi " ) == " сході" )
259257 }
260258
261259 test(" Incremental interface" ) {
@@ -296,4 +294,15 @@ class UkrainianSpec extends FunSuite {
296294 test(" Convenience mappings" ) {
297295 assert(Ukrainian .latinToCyrillic(" cqwx" ) == " цщшж" )
298296 }
297+
298+ test(" Cyrillic to Latin" ) {
299+ assert(Ukrainian .cyrillicToLatin(" Щ" ) == " Shch" )
300+ assert(Ukrainian .cyrillicToLatin(" ЩЕ" ) == " SHCHE" )
301+
302+ assert(
303+ Ukrainian .cyrillicToLatin(" готовність, схильність суб'єкта до поведінкового акту, дії, вчинку, їх послідовності" ) ==
304+ " gotovnist', skhyl'nist' sub'yekta do povedinkovogo aktu, diyi, vchynku, yikh poslidovnosti" )
305+
306+ assert(Ukrainian .cyrillicToLatin(" ІЯ" ) == " IYA" )
307+ }
299308}
0 commit comments