diff options
author | Arsentiy Milchakov <a.milchakov@corp.mail.ru> | 2016-09-08 14:47:06 +0300 |
---|---|---|
committer | Arsentiy Milchakov <a.milchakov@corp.mail.ru> | 2016-09-08 14:47:06 +0300 |
commit | 3320c9eddabd67330b6d132ba71cfc822f23fa95 (patch) | |
tree | 19ebe2cc9283e86657985e7c2273ee43e4502938 /indexer/indexer_tests | |
parent | a43c309fc7adfbd853133debc712a86be3d149f9 (diff) |
localized names part 3
Diffstat (limited to 'indexer/indexer_tests')
-rw-r--r-- | indexer/indexer_tests/editable_map_object_test.cpp | 303 |
1 files changed, 303 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..f9bdab1f00 100644 --- a/indexer/indexer_tests/editable_map_object_test.cpp +++ b/indexer/indexer_tests/editable_map_object_test.cpp @@ -12,6 +12,32 @@ int8_t GetLangCode(char const * ch) { return StringUtf8Multilang::GetLangIndex(ch); } + +struct ExpectedName +{ + string m_lang; + string 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)); + + TEST_EQUAL(name, it->m_value, ()); + ++counter; + return true; + }); + + TEST_EQUAL(counter, expectations.size(), ()); +} UNIT_TEST(EditableMapObject_SetWebsite) { @@ -289,4 +315,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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Default name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Test name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Test name"}); + fakeNames.names.push_back({GetLangCode("en"), "Default name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Test name"}); + fakeNames.names.push_back({GetLangCode("en"), "Second test name"}); + fakeNames.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.names.push_back({GetLangCode("ru"), "Test name"}); + fakeNames.names.push_back({GetLangCode("en"), "Second test name"}); + fakeNames.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 |