diff options
author | Alex Zolotarev <alex@maps.me> | 2016-03-24 18:44:54 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2016-03-24 18:44:54 +0300 |
commit | a802ad336517ad5701ff4b44492ee51f9395d67b (patch) | |
tree | ba61c55975f82a86a64ff7050e2df0fdb8249371 /editor | |
parent | fbd217f2f42f1ea6ea4fd237c4f2d430d3b7f463 (diff) | |
parent | a460d6d2f2015dc2ba627cf099d78df51b23f46e (diff) |
Merge pull request #2486 from Zverik/name_int_name
[editor] Fix name:int_name
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_tests/xml_feature_test.cpp | 38 | ||||
-rw-r--r-- | editor/xml_feature.cpp | 13 | ||||
-rw-r--r-- | editor/xml_feature.hpp | 2 |
3 files changed, 51 insertions, 2 deletions
diff --git a/editor/editor_tests/xml_feature_test.cpp b/editor/editor_tests/xml_feature_test.cpp index dd6f19091e..1a6d208bd7 100644 --- a/editor/editor_tests/xml_feature_test.cpp +++ b/editor/editor_tests/xml_feature_test.cpp @@ -53,6 +53,7 @@ UNIT_TEST(XMLFeature_Setters) feature.SetName("Gorki Park"); feature.SetName("en", "Gorki Park"); feature.SetName("ru", "Парк Горького"); + feature.SetName("int_name", "Gorky Park"); feature.SetHouse("10"); feature.SetTagValue("opening_hours", "Mo-Fr 08:15-17:30"); @@ -66,6 +67,7 @@ UNIT_TEST(XMLFeature_Setters) <tag k="name" v="Gorki Park" /> <tag k="name:en" v="Gorki Park" /> <tag k="name:ru" v="Парк Горького" /> + <tag k="int_name" v="Gorky Park" /> <tag k="addr:housenumber" v="10" /> <tag k="opening_hours" v="Mo-Fr 08:15-17:30" /> <tag k="amenity" v="atm" /> @@ -75,6 +77,40 @@ UNIT_TEST(XMLFeature_Setters) TEST_EQUAL(sstr.str(), expectedString, ()); } +UNIT_TEST(XMLFeature_UintLang) +{ + XMLFeature feature(XMLFeature::Type::Node); + + feature.SetCenter(MercatorBounds::FromLatLon(55.79, 37.47)); + feature.SetModificationTime(my::StringToTimestamp("2015-11-27T21:13:32Z")); + + feature.SetName(StringUtf8Multilang::kDefaultCode, "Gorki Park"); + feature.SetName(StringUtf8Multilang::GetLangIndex("ru"), "Парк Горького"); + feature.SetName(StringUtf8Multilang::kInternationalCode, "Gorky Park"); + stringstream sstr; + feature.Save(sstr); + + auto const expectedString = R"(<?xml version="1.0"?> +<node lat="55.79" lon="37.47" timestamp="2015-11-27T21:13:32Z"> + <tag k="name" v="Gorki Park" /> + <tag k="name:ru" v="Парк Горького" /> + <tag k="int_name" v="Gorky Park" /> +</node> +)"; + + TEST_EQUAL(sstr.str(), expectedString, ()); + + XMLFeature f2(expectedString); + TEST_EQUAL(f2.GetName(StringUtf8Multilang::kDefaultCode), "Gorki Park", ()); + TEST_EQUAL(f2.GetName(StringUtf8Multilang::GetLangIndex("ru")), "Парк Горького", ()); + TEST_EQUAL(f2.GetName(StringUtf8Multilang::kInternationalCode), "Gorky Park", ()); + + TEST_EQUAL(f2.GetName(), "Gorki Park", ()); + TEST_EQUAL(f2.GetName("default"), "Gorki Park", ()); + TEST_EQUAL(f2.GetName("ru"), "Парк Горького", ()); + TEST_EQUAL(f2.GetName("int_name"), "Gorky Park", ()); +} + UNIT_TEST(XMLFeature_ToOSMString) { XMLFeature feature(XMLFeature::Type::Node); @@ -140,6 +176,7 @@ auto const kTestNode = R"(<?xml version="1.0"?> <tag k="name" v="Gorki Park" /> <tag k="name:en" v="Gorki Park" /> <tag k="name:ru" v="Парк Горького" /> + <tag k="int_name" v="Gorky Park" /> <tag k="addr:housenumber" v="10" /> <tag k="opening_hours" v="Mo-Fr 08:15-17:30" /> <tag k="amenity" v="atm" /> @@ -165,6 +202,7 @@ UNIT_TEST(XMLFeature_FromXml) TEST_EQUAL(feature.GetName("default"), "Gorki Park", ()); TEST_EQUAL(feature.GetName("en"), "Gorki Park", ()); TEST_EQUAL(feature.GetName("ru"), "Парк Горького", ()); + TEST_EQUAL(feature.GetName("int_name"), "Gorky Park", ()); TEST_EQUAL(feature.GetName("No such language"), "", ()); TEST_EQUAL(feature.GetTagValue("opening_hours"), "Mo-Fr 08:15-17:30", ()); diff --git a/editor/xml_feature.cpp b/editor/xml_feature.cpp index 3b7abad3b6..2367f036eb 100644 --- a/editor/xml_feature.cpp +++ b/editor/xml_feature.cpp @@ -64,6 +64,8 @@ namespace editor char const * const XMLFeature::kDefaultLang = StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kDefaultCode); +char const * const XMLFeature::kIntlLang = + StringUtf8Multilang::GetLangByCode(StringUtf8Multilang::kInternationalCode); XMLFeature::XMLFeature(Type const type) { @@ -228,6 +230,8 @@ XMLFeature::TMercatorGeometry XMLFeature::GetGeometry() const string XMLFeature::GetName(string const & lang) const { + if (lang == kIntlLang) + return GetTagValue(kIntlName); auto const suffix = (lang == kDefaultLang || lang.empty()) ? "" : ":" + lang; return GetTagValue(kDefaultName + suffix); } @@ -244,8 +248,13 @@ void XMLFeature::SetName(string const & name) void XMLFeature::SetName(string const & lang, string const & name) { - auto const suffix = (lang == kDefaultLang || lang.empty()) ? "" : ":" + lang; - SetTagValue(kDefaultName + suffix, name); + if (lang == kIntlLang) + SetTagValue(kIntlName, name); + else + { + auto const suffix = (lang == kDefaultLang || lang.empty()) ? "" : ":" + lang; + SetTagValue(kDefaultName + suffix, name); + } } void XMLFeature::SetName(uint8_t const langCode, string const & name) diff --git a/editor/xml_feature.hpp b/editor/xml_feature.hpp index 09043e9f75..f6f09240fd 100644 --- a/editor/xml_feature.hpp +++ b/editor/xml_feature.hpp @@ -25,8 +25,10 @@ DECLARE_EXCEPTION(NoHeader, XMLFeatureError); class XMLFeature { static constexpr char const * kDefaultName = "name"; + static constexpr char const * kIntlName = "int_name"; static constexpr char const * kLocalName = "name:"; static char const * const kDefaultLang; + static char const * const kIntlLang; public: // Used in point to string serialization. |