From 29df6cd942d902636b4e02afa188ed23674845ac Mon Sep 17 00:00:00 2001 From: map-per Date: Thu, 11 Dec 2025 15:52:18 +0100 Subject: [PATCH] working version Signed-off-by: map-per --- .../editor_tests/feature_type_to_osm_test.cpp | 16 +++++++++------- libs/editor/feature_type_to_osm.cpp | 14 ++++++++------ libs/editor/xml_feature.cpp | 10 +++++++++- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/libs/editor/editor_tests/feature_type_to_osm_test.cpp b/libs/editor/editor_tests/feature_type_to_osm_test.cpp index a471c5f01..662ea93ba 100644 --- a/libs/editor/editor_tests/feature_type_to_osm_test.cpp +++ b/libs/editor/editor_tests/feature_type_to_osm_test.cpp @@ -7,15 +7,18 @@ using namespace editor; -UNIT_TEST(testIfTestRuns) +UNIT_TEST(loadConfigFile) { - LOG(LINFO, ("Hello from type to osm test!")); + TypeToOSMTranslator typeToOsm; + typeToOsm.loadConfigFile(); +} +UNIT_TEST(osmTagsFromType) +{ classificator::Load(); - TypeToOSMTranslator typeToOsm; uint32_t type = classif().GetTypeByReadableObjectName("amenity-restaurant"); - std::vector resultVector = typeToOsm.osmTagsFromType(type); + std::vector resultVector = getOSMTranslator().osmTagsFromType(type); TEST_EQUAL(resultVector.size(), 1, ()); OSMTag const & result = resultVector.front(); @@ -23,8 +26,7 @@ UNIT_TEST(testIfTestRuns) TEST_EQUAL(result.value, "restaurant", ()); } -UNIT_TEST(loadConfigFile) +UNIT_TEST(testToFail) { - TypeToOSMTranslator typeToOsm; - typeToOsm.loadConfigFile(); + ASSERT_FAIL("Don't run further tests-------------------"); } diff --git a/libs/editor/feature_type_to_osm.cpp b/libs/editor/feature_type_to_osm.cpp index e32efbf1a..ec060c9bb 100644 --- a/libs/editor/feature_type_to_osm.cpp +++ b/libs/editor/feature_type_to_osm.cpp @@ -89,23 +89,25 @@ namespace editor } - if (lineNumber > 70) + if (lineNumber > 500) break; } - - ASSERT_FAIL("Don't run further tests-------------------"); } std::vector TypeToOSMTranslator::osmTagsFromType(uint32_t type) { LOG(LINFO, ("Computing osmTagsFromType for Type: ", type, "/ " , classif().GetReadableObjectName(type))); - std::vector result; + auto it = m_storage.find(type); - result.push_back(OSMTag{"amenity", "restaurant"}); + if (it == m_storage.end()) + { + ASSERT(false, ("OSM tags for type", type, "could not be found")); + return {}; + } - return result; + return it->second; } TypeToOSMTranslator & getOSMTranslator() diff --git a/libs/editor/xml_feature.cpp b/libs/editor/xml_feature.cpp index 389193068..5f98089c8 100644 --- a/libs/editor/xml_feature.cpp +++ b/libs/editor/xml_feature.cpp @@ -1,6 +1,6 @@ #include "editor/xml_feature.hpp" -//#include "editor/feature_type_to_osm.hpp" +#include "editor/feature_type_to_osm.hpp" #include "editor/keys_to_remove.hpp" #include "indexer/classificator.hpp" @@ -642,6 +642,14 @@ void XMLFeature::RemoveTag(string_view key) void XMLFeature::SetOSMTagsForType(uint32_t type) { + TypeToOSMTranslator translator = getOSMTranslator(); + + auto result = translator.osmTagsFromType(type); + + ASSERT(!result.empty(), ()); + ASSERT_EQUAL(result[0].key, "amenity", ()); + ASSERT_EQUAL(result[0].value, "restaurant", ()); + if (ftypes::IsRecyclingCentreChecker::Instance()(type)) { SetTagValue("amenity", "recycling");