forked from organicmaps/organicmaps
Added transliteration test.
This commit is contained in:
parent
359c86d9dc
commit
ddadc1d8d4
4 changed files with 77 additions and 18 deletions
|
@ -9,23 +9,38 @@ namespace
|
|||
// Languages below were choosen after sorting name:<lang> tags in 2011.
|
||||
// Note, that it's not feasible to increase languages number here due to
|
||||
// our current encoding (6 bit to store language code).
|
||||
StringUtf8Multilang::Languages const g_languages = {{ {"default", "Native for each country", "Any-Latin"},
|
||||
{"en", "English", ""}, {"ja", "日本語", "Any-Latin"}, {"fr", "Français", ""}, {"ko_rm", "Korean (Romanized)", "Korean-Latin/BGN"},
|
||||
{"ar", "العربية", "Any-Latin"}, {"de", "Deutsch", ""}, {"int_name", "International (Latin)", "Any-Latin"}, {"ru", "Русский", "Russian-Latin/BGN"},
|
||||
{"sv", "Svenska", "Any-Latin"}, {"zh", "中文", "Any-Latin"}, {"fi", "Suomi", "Any-Latin"}, {"be", "Беларуская", "Belarusian-Latin/BGN"}, {"ka", "ქართული", "Georgian-Latin"},
|
||||
{"ko", "한국어", "Hangul"}, {"he", "עברית", "Hebrew"}, {"nl", "Nederlands", ""}, {"ga", "Gaeilge", "Any-Latin"},
|
||||
{"ja_rm", "Japanese (Romanized)", "Any-Latin"}, {"el", "Ελληνικά", "Greek-Latin"}, {"it", "Italiano", ""}, {"es", "Español", ""},
|
||||
{"zh_pinyin", "Chinese (Pinyin)", "Any-Latin"}, {"th", "ไทย", "Thai-Latin"}, {"cy", "Cymraeg", "Any-Latin"}, {"sr", "Српски", "Serbian-Latin/BGN"},
|
||||
{"uk", "Українська", "Ukrainian-Latin/BGN"}, {"ca", "Català", "Any-Latin"}, {"hu", "Magyar", "Any-Latin"}, {"hsb", "Hornjoserbšćina", "Any-Latin"}, {"eu", "Euskara", "Any-Latin"},
|
||||
{"fa", "فارسی", "Any-Latin"}, {"br", "Breton", "Any-Latin"}, {"pl", "Polski", "Any-Latin"}, {"hy", "Հայերէն", "Armenian-Latin"}, {"kn", "ಕನ್ನಡ", "Kannada-Latin"},
|
||||
{"sl", "Slovenščina", "Any-Latin"}, {"ro", "Română", "Any-Latin"}, {"sq", "Shqipe", "Any-Latin"}, {"am", "አማርኛ", "Amharic-Latin/BGN"}, {"fy", "Frysk", "Any-Latin"},
|
||||
{"cs", "Čeština", "Any-Latin"}, {"gd", "Gàidhlig", "Any-Latin"}, {"sk", "Slovenčina", "Any-Latin"}, {"af", "Afrikaans", "Any-Latin"},
|
||||
{"ja_kana", "日本語(カタカナ)", "Katakana-Latin"}, {"lb", "Luxembourgish", "Any-Latin"}, {"pt", "Português", "Any-Latin"}, {"hr", "Hrvatski", "Any-Latin"},
|
||||
{"fur", "Friulian", "Any-Latin"}, {"vi", "Tiếng Việt", "Any-Latin"}, {"tr", "Türkçe", "Any-Latin"}, {"bg", "Български", "Bulgarian-Latin/BGN"},
|
||||
{"eo", "Esperanto", "Any-Latin"}, {"lt", "Lietuvių", "Any-Latin"}, {"la", "Latin", ""}, {"kk", "Қазақ", "Kazakh-Latin/BGN"},
|
||||
{"gsw", "Schwiizertüütsch", "Any-Latin"}, {"et", "Eesti", "Any-Latin"}, {"ku", "Kurdish", "Any-Latin"}, {"mn", "Mongolian", "Mongolian-Latin/BGN"},
|
||||
{"mk", "Македонски", "Macedonian-Latin/BGN"}, {"lv", "Latviešu", "Any-Latin"}, {"hi", "हिन्दी", "Any-Latin"}
|
||||
}};
|
||||
StringUtf8Multilang::Languages const g_languages = {{
|
||||
{"default", "Native for each country", "Any-Latin"},
|
||||
{"en", "English", ""}, {"ja", "日本語", "Any-Latin"}, {"fr", "Français", ""},
|
||||
{"ko_rm", "Korean (Romanized)", "Korean-Latin/BGN"}, {"ar", "العربية", "Any-Latin"},
|
||||
{"de", "Deutsch", ""}, {"int_name", "International (Latin)", "Any-Latin"},
|
||||
{"ru", "Русский", "Russian-Latin/BGN"}, {"sv", "Svenska", "Any-Latin"},
|
||||
{"zh", "中文", "Any-Latin"}, {"fi", "Suomi", "Any-Latin"},
|
||||
{"be", "Беларуская", "Belarusian-Latin/BGN"}, {"ka", "ქართული", "Georgian-Latin"},
|
||||
{"ko", "한국어", "Hangul-Latin/BGN"}, {"he", "עברית", "Hebrew-Latin/BGN"}, {"nl", "Nederlands", ""},
|
||||
{"ga", "Gaeilge", "Any-Latin"}, {"ja_rm", "Japanese (Romanized)", "Any-Latin"},
|
||||
{"el", "Ελληνικά", "Greek-Latin"}, {"it", "Italiano", ""}, {"es", "Español", ""},
|
||||
{"zh_pinyin", "Chinese (Pinyin)", "Any-Latin"}, {"th", "ไทย", "Thai-Latin"},
|
||||
{"cy", "Cymraeg", "Any-Latin"}, {"sr", "Српски", "Serbian-Latin/BGN"},
|
||||
{"uk", "Українська", "Ukrainian-Latin/BGN"}, {"ca", "Català", "Any-Latin"},
|
||||
{"hu", "Magyar", "Any-Latin"}, {"hsb", "Hornjoserbšćina", "Any-Latin"},
|
||||
{"eu", "Euskara", "Any-Latin"}, {"fa", "فارسی", "Any-Latin"}, {"br", "Breton", "Any-Latin"},
|
||||
{"pl", "Polski", "Any-Latin"}, {"hy", "Հայերէն", "Armenian-Latin"},
|
||||
{"kn", "ಕನ್ನಡ", "Kannada-Latin"}, {"sl", "Slovenščina", "Any-Latin"},
|
||||
{"ro", "Română", "Any-Latin"}, {"sq", "Shqipe", "Any-Latin"},
|
||||
{"am", "አማርኛ", "Amharic-Latin/BGN"}, {"fy", "Frysk", "Any-Latin"},
|
||||
{"cs", "Čeština", "Any-Latin"}, {"gd", "Gàidhlig", "Any-Latin"},
|
||||
{"sk", "Slovenčina", "Any-Latin"}, {"af", "Afrikaans", "Any-Latin"},
|
||||
{"ja_kana", "日本語(カタカナ)", "Katakana-Latin"}, {"lb", "Luxembourgish", "Any-Latin"},
|
||||
{"pt", "Português", "Any-Latin"}, {"hr", "Hrvatski", "Any-Latin"},
|
||||
{"fur", "Friulian", "Any-Latin"}, {"vi", "Tiếng Việt", "Any-Latin"},
|
||||
{"tr", "Türkçe", "Any-Latin"}, {"bg", "Български", "Bulgarian-Latin/BGN"},
|
||||
{"eo", "Esperanto", "Any-Latin"}, {"lt", "Lietuvių", "Any-Latin"}, {"la", "Latin", ""},
|
||||
{"kk", "Қазақ", "Kazakh-Latin/BGN"}, {"gsw", "Schwiizertüütsch", "Any-Latin"},
|
||||
{"et", "Eesti", "Any-Latin"}, {"ku", "Kurdish", "Any-Latin"},
|
||||
{"mn", "Mongolian", "Mongolian-Latin/BGN"}, {"mk", "Македонски", "Macedonian-Latin/BGN"},
|
||||
{"lv", "Latviešu", "Any-Latin"}, {"hi", "हिन्दी", "Any-Latin"}
|
||||
}};
|
||||
|
||||
static_assert(g_languages.size() == StringUtf8Multilang::kMaxSupportedLanguages,
|
||||
"With current encoding we are limited to 64 languages max.");
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "base/logging.hpp"
|
||||
|
||||
#include "3party/icu/common/unicode/uclean.h"
|
||||
#include "3party/icu/common/unicode/unistr.h"
|
||||
#include "3party/icu/common/unicode/utypes.h"
|
||||
#include "3party/icu/i18n/unicode/translit.h"
|
||||
|
@ -10,7 +11,12 @@
|
|||
|
||||
Transliteration::~Transliteration()
|
||||
{
|
||||
//u_cleanup();
|
||||
// The use of u_cleanup() just before an application terminates is optional,
|
||||
// but it should be called only once for performance reasons.
|
||||
// The primary benefit is to eliminate reports of memory or resource leaks originating
|
||||
// in ICU code from the results generated by heap analysis tools.
|
||||
m_transliterators.clear();
|
||||
u_cleanup();
|
||||
}
|
||||
|
||||
Transliteration & Transliteration::GetInstance()
|
||||
|
|
|
@ -43,6 +43,7 @@ SOURCES += \
|
|||
gps_track_test.cpp \
|
||||
kmz_unarchive_test.cpp \
|
||||
mwm_url_tests.cpp \
|
||||
transliteration_test.cpp \
|
||||
|
||||
!linux* {
|
||||
SOURCES += working_time_tests.cpp \
|
||||
|
|
37
map/map_tests/transliteration_test.cpp
Normal file
37
map/map_tests/transliteration_test.cpp
Normal file
|
@ -0,0 +1,37 @@
|
|||
#include "testing/testing.hpp"
|
||||
|
||||
#include "coding/multilang_utf8_string.hpp"
|
||||
#include "coding/transliteration.hpp"
|
||||
|
||||
#include "platform/platform.hpp"
|
||||
|
||||
// This test is inside of the map_tests because it uses Platform for obtaining the resource directory.
|
||||
UNIT_TEST(Transliteration_CompareSamples)
|
||||
{
|
||||
Transliteration & translit = Transliteration::GetInstance();
|
||||
translit.Init(GetPlatform().ResourcesDir());
|
||||
|
||||
TEST_EQUAL("rì běn yǔ", translit.Transliterate("日本語", StringUtf8Multilang::GetLangIndex("ja")), ());
|
||||
TEST_EQUAL("ạlʿrbyẗ", translit.Transliterate("العربية", StringUtf8Multilang::GetLangIndex("ar")), ());
|
||||
TEST_EQUAL("Russkiy", translit.Transliterate("Русский", StringUtf8Multilang::GetLangIndex("ru")), ());
|
||||
TEST_EQUAL("zhōng wén", translit.Transliterate("中文", StringUtf8Multilang::GetLangIndex("zh")), ());
|
||||
TEST_EQUAL("Byelaruskaya", translit.Transliterate("Беларуская", StringUtf8Multilang::GetLangIndex("be")), ());
|
||||
TEST_EQUAL("kartuli", translit.Transliterate("ქართული", StringUtf8Multilang::GetLangIndex("ka")), ());
|
||||
TEST_EQUAL("hangug-eo", translit.Transliterate("한국어", StringUtf8Multilang::GetLangIndex("ko")), ());
|
||||
TEST_EQUAL("‘vryt", translit.Transliterate("עברית", StringUtf8Multilang::GetLangIndex("he")), ());
|
||||
TEST_EQUAL("Ellēniká", translit.Transliterate("Ελληνικά", StringUtf8Multilang::GetLangIndex("el")), ());
|
||||
TEST_EQUAL("pīn yīn", translit.Transliterate("拼音", StringUtf8Multilang::GetLangIndex("zh_pinyin")), ());
|
||||
TEST_EQUAL("thịy", translit.Transliterate("ไทย", StringUtf8Multilang::GetLangIndex("th")), ());
|
||||
TEST_EQUAL("Srpski", translit.Transliterate("Српски", StringUtf8Multilang::GetLangIndex("sr")), ());
|
||||
TEST_EQUAL("Ukrayinsʹka", translit.Transliterate("Українська", StringUtf8Multilang::GetLangIndex("uk")), ());
|
||||
TEST_EQUAL("fạrsy̰", translit.Transliterate("فارسی", StringUtf8Multilang::GetLangIndex("fa")), ());
|
||||
TEST_EQUAL("Hayerēn", translit.Transliterate("Հայերէն", StringUtf8Multilang::GetLangIndex("hy")), ());
|
||||
TEST_EQUAL("kannaḍa", translit.Transliterate("ಕನ್ನಡ", StringUtf8Multilang::GetLangIndex("kn")), ());
|
||||
TEST_EQUAL("āmarinya", translit.Transliterate("አማርኛ", StringUtf8Multilang::GetLangIndex("am")), ());
|
||||
TEST_EQUAL("katakana", translit.Transliterate("カタカナ", StringUtf8Multilang::GetLangIndex("ja_kana")), ());
|
||||
TEST_EQUAL("Bŭlgarski", translit.Transliterate("Български", StringUtf8Multilang::GetLangIndex("bg")), ());
|
||||
TEST_EQUAL("Qazaq", translit.Transliterate("Қазақ", StringUtf8Multilang::GetLangIndex("kk")), ());
|
||||
TEST_EQUAL("Mongol hel", translit.Transliterate("Монгол хэл", StringUtf8Multilang::GetLangIndex("mn")), ());
|
||||
TEST_EQUAL("Makedonski", translit.Transliterate("Македонски", StringUtf8Multilang::GetLangIndex("mk")), ());
|
||||
TEST_EQUAL("hindī", translit.Transliterate("हिन्दी", StringUtf8Multilang::GetLangIndex("hi")), ());
|
||||
}
|
Loading…
Add table
Reference in a new issue