Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorygorshenin <mipt.vi002@gmail.com>2016-09-08 19:05:37 +0300
committerGitHub <noreply@github.com>2016-09-08 19:05:37 +0300
commite383c53c4606372337973eca9d750c55e973d398 (patch)
treec7bbce0008d6694a1db4aec56e3e3786e98fba51 /indexer/indexer_tests
parent93baffbcb2681df9065c7e4bf758b9a7451524a1 (diff)
parent0ab1c3472d431302c31c2be33b33ca456c60a33b (diff)
Merge pull request #4229 from milchakov/MAPSME-2292_localized_names_part3
[editor][ios][android] localized names part 3
Diffstat (limited to 'indexer/indexer_tests')
-rw-r--r--indexer/indexer_tests/editable_map_object_test.cpp309
1 files changed, 309 insertions, 0 deletions
diff --git a/indexer/indexer_tests/editable_map_object_test.cpp b/indexer/indexer_tests/editable_map_object_test.cpp
index 7f0dae3af6..044cc8d6ab 100644
--- a/indexer/indexer_tests/editable_map_object_test.cpp
+++ b/indexer/indexer_tests/editable_map_object_test.cpp
@@ -12,6 +12,38 @@ int8_t GetLangCode(char const * ch)
{
return StringUtf8Multilang::GetLangIndex(ch);
}
+
+struct ExpectedName
+{
+ string m_lang;
+ string m_value;
+};
+
+string DebugPrint(ExpectedName const & expectedName)
+{
+ return expectedName.m_lang + ", " + expectedName.m_value;
+}
+
+void CheckExpectations(StringUtf8Multilang const & s, vector<ExpectedName> const & expectations)
+{
+ size_t counter = 0;
+ s.ForEach([&expectations, &counter](int8_t const code, string const & name) {
+ auto const it = find_if(expectations.begin(), expectations.end(), [&code](ExpectedName const & item)
+ {
+ return GetLangCode(item.m_lang.c_str()) == code;
+ });
+
+ if (it == expectations.end())
+ TEST(false, ("Unexpected language code: ", code, ". Expectations: ", expectations));
+
+ TEST_EQUAL(name, it->m_value, ());
+ ++counter;
+ return true;
+ });
+
+ TEST_EQUAL(counter, expectations.size(), ("Unexpected count of names, expected ", expectations.size(),
+ ", but turned out ", counter, ". Expectations: ", expectations));
+}
UNIT_TEST(EditableMapObject_SetWebsite)
{
@@ -289,4 +321,281 @@ UNIT_TEST(EditableMapObject_SetInternet)
setInternetAndCheck(bunkerEmo, osm::Internet::Wlan, true);
setInternetAndCheck(bunkerEmo, osm::Internet::Wlan, true);
}
+
+UNIT_TEST(EditableMapObject_RemoveFakeNames)
+{
+ EditableMapObject emo;
+ StringUtf8Multilang name;
+ osm::FakeNames fakeNames;
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Default name");
+ name.AddString(GetLangCode("en"), "Default name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Changed name");
+ name.AddString(GetLangCode("en"), "Default name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}, {"ru", "Changed name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Default name");
+ name.AddString(GetLangCode("en"), "Changed name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}, {"en", "Changed name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Changed name");
+ name.AddString(GetLangCode("en"), "Changed name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Changed name ru");
+ name.AddString(GetLangCode("en"), "Changed name en");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed name ru"}, {"en", "Changed name en"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Changed by other logic");
+ name.AddString(GetLangCode("ru"), "Default name");
+ name.AddString(GetLangCode("en"), "Changed name en");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed by other logic"}, {"en", "Changed name en"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Changed by other logic");
+ name.AddString(GetLangCode("ru"), "Changed name ru");
+ name.AddString(GetLangCode("en"), "Changed name en");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed name ru"}, {"en", "Changed name en"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Changed by other logic");
+ name.AddString(GetLangCode("ru"), "Default name");
+ name.AddString(GetLangCode("en"), "Default name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed by other logic"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "Changed name en");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Changed name en"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Changed by other logic");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "");
+ name.AddString(GetLangCode("de"), "Deutch name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Default name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Deutch name"}, {"de", "Deutch name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Test name");
+ name.AddString(GetLangCode("en"), "Default name");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Test name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}, {"ru", "Test name"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Test name changed");
+ name.AddString(GetLangCode("en"), "Default name changed");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Test name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Default name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Test name changed"}, {"en", "Default name changed"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Test name");
+ name.AddString(GetLangCode("en"), "Second test name changed");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Test name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Second test name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Default name"}, {"ru", "Test name"}, {"en", "Second test name changed"}});
+
+ name.Clear();
+ fakeNames.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "Second test name changed");
+ fakeNames.m_names.push_back({GetLangCode("ru"), "Test name"});
+ fakeNames.m_names.push_back({GetLangCode("en"), "Second test name"});
+ fakeNames.m_defaultName = "Default name";
+
+ EditableMapObject::RemoveFakeNames(fakeNames, name);
+
+ CheckExpectations(name, {{"default", "Second test name changed"}});
+}
+
+UNIT_TEST(EditableMapObject_RemoveBlankNames)
+{
+ auto const getCountOfNames = [](StringUtf8Multilang const & names) {
+ size_t counter = 0;
+ names.ForEach([&counter](int8_t const, string const &) {
+ ++counter;
+ return true;
+ });
+
+ return counter;
+ };
+
+ StringUtf8Multilang name;
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "Ru name");
+ name.AddString(GetLangCode("en"), "En name");
+ name.AddString(GetLangCode("de"), "De name");
+
+ EditableMapObject emo;
+ emo.SetName(name);
+ emo.RemoveBlankNames();
+
+ TEST_EQUAL(getCountOfNames(emo.GetName()), 4, ());
+
+ name.Clear();
+
+ name.AddString(GetLangCode("default"), "");
+ name.AddString(GetLangCode("ru"), "Ru name");
+ name.AddString(GetLangCode("en"), "En name");
+ name.AddString(GetLangCode("de"), "");
+
+ emo.SetName(name);
+ emo.RemoveBlankNames();
+
+ TEST_EQUAL(getCountOfNames(emo.GetName()), 2, ());
+
+ name.Clear();
+
+ name.AddString(GetLangCode("default"), "Default name");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "");
+ name.AddString(GetLangCode("de"), "");
+
+ emo.SetName(name);
+ emo.RemoveBlankNames();
+
+ TEST_EQUAL(getCountOfNames(emo.GetName()), 1, ());
+
+ name.Clear();
+
+ name.AddString(GetLangCode("default"), "");
+ name.AddString(GetLangCode("ru"), "");
+ name.AddString(GetLangCode("en"), "");
+ name.AddString(GetLangCode("de"), "De name");
+
+ emo.SetName(name);
+ emo.RemoveBlankNames();
+
+ TEST_EQUAL(getCountOfNames(emo.GetName()), 1, ());
+}
} // namespace