diff --git a/.cmake-format b/.cmake-format new file mode 100644 index 0000000000000000000000000000000000000000..2f9d9eef1ae63f21a72422015a6940e2bd5a68c9 --- /dev/null +++ b/.cmake-format @@ -0,0 +1,79 @@ +line_width: 120 +tab_size: 2 +max_subgroups_hwrap: 2 +max_pargs_hwrap: 6 +separate_ctrl_name_with_space: false +separate_fn_name_with_space: false +dangle_parens: true +dangle_align: prefix +min_prefix_chars: 4 +max_prefix_chars: 10 +max_lines_hwrap: 2 +line_ending: unix +command_case: canonical +keyword_case: upper +additional_commands: + CPMAddPackage: + flags: + - SYSTEM + pargs: "*" + kwargs: + NAME: "*" + GIT_REPOSITORY: "*" + GITHUB_REPOSITORY: "*" + GITLAB_REPOSITORY: "*" + GIT_TAG: "*" + VERSION: "*" + OPTIONS: "*" + PATCH_COMMAND: "*" + configure_package_config_file: + flags: + - NO_SET_AND_CHECK_MACRO + - NO_CHECK_REQUIRED_COMPONENTS_MACRO + kwargs: + INSTALL_DESTINATION: "*" + PATH_VARS: "*" + INSTALL_PREFIX: "*" + find_dependency: + flags: + - CONFIG + - QUIET + - REQUIRED + kwargs: + COMPONENTS: "*" + gtest_discover_tests: + flags: + - NO_PRETTY_TYPES + - NO_PRETTY_VALUES + kwargs: + EXTRA_ARGS: "*" + WORKING_DIRECTORY: "*" + TEST_PREFIX: "*" + TEST_SUFFIX: "*" + PROPERTIES: "*" + TEST_LIST: "*" + DISCOVERY_TIMEOUT: "*" + setup_target_for_coverage_gcovr_html: + kwargs: + BASE_DIRECTORY: "*" + EXCLUDE: "*" + EXECUTABLE: "*" + EXECUTABLE_ARGS: "*" + DEPENDENCIES: "*" +always_wrap: [] +enable_sort: true +autosort: false +hashruler_min_length: 10 +per_command: {} +layout_passes: {} +bullet_char: "*" +enum_char: . +enable_markup: true +first_comment_is_literal: true +literal_comment_pattern: null +fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$ +ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$ +canonicalize_hashrulers: true +emit_byteorder_mark: false +input_encoding: utf-8 +output_encoding: utf-8 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..6354414d05259c768085502c4d0e2365c4b1f39f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,147 @@ +#===------------------------------------------------------------------------===# +# +# Copyright (c) 2025 Mercedes-Benz Tech Innovation GmbH +# +# SPDX-License-Identifier: EPL-2.0 +# +#===------------------------------------------------------------------------===# + +cmake_minimum_required(VERSION 3.25.0) + +cmake_policy(SET CMP0135 NEW) + +list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +project( + MapSDK + VERSION 4.1.2 + DESCRIPTION "Library for loading and providing data from an OpenDRIVE map" + HOMEPAGE_URL "https://gitlab.eclipse.org/eclipse/openpass/road-logic-suite" + LANGUAGES CXX +) + +option(BUILD_SHARED_LIBS "Build shared libraries" ON) +option(MAP_SDK_BUILD_DOCS "Build documentation" ${PROJECT_IS_TOP_LEVEL}) +option(MAP_SDK_BUILD_TESTS "Build tests" ${PROJECT_IS_TOP_LEVEL}) +option(MAP_SDK_INSTALL "Install the project" ${PROJECT_IS_TOP_LEVEL}) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +if(MAP_SDK_INSTALL) + include(GNUInstallDirs) + set(MAP_SDK_INSTALL_LIBDIR + "${CMAKE_INSTALL_LIBDIR}" + CACHE PATH "Library install directory" + ) + set(MAP_SDK_INSTALL_INCLUDEDIR + "${CMAKE_INSTALL_INCLUDEDIR}" + CACHE PATH "Include install directory" + ) + set(MAP_SDK_INSTALL_CONFIGDIR + "${MAP_SDK_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + CACHE PATH "Config install directory" + ) + set(MAP_SDK_INSTALL_DATADIR + "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" + CACHE PATH "Data install directory" + ) +endif() + +include(CPM) +CPMAddPackage( + NAME units + GITHUB_REPOSITORY nholthaus/units + VERSION 2.3.4 + SYSTEM +) + +CPMAddPackage( + NAME mantle_api + GIT_REPOSITORY https://gitlab.eclipse.org/eclipse/openpass/mantle-api.git + # FIXME(mstump8): Remove next line and set to correct version when available + GIT_TAG 6661fe96a2c8534dd49da66c08ec1c1ad67e1a90 + VERSION 8.0.0 + OPTIONS "MantleAPI_INSTALL ON" "MantleAPI_INSTALL_MOCKS ON" + SYSTEM +) + +add_library(map_sdk INTERFACE) +add_library(MapSDK::map_sdk ALIAS map_sdk) + +set(MAP_SDK_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include") + +target_sources( + map_sdk + INTERFACE FILE_SET + HEADERS + BASE_DIRS + ${MAP_SDK_INCLUDE_DIR} + FILES + ${MAP_SDK_INCLUDE_DIR}/MapSDK/Common/base_properties.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/Common/common.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/Common/external_reference.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/Common/geometry.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/Common/identifier.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/i_map_loader.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/lane_boundary.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/lane_group.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/lane.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/logical_lane_assignment.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/logical_lane_boundary.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/logical_lane.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/map.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/reference_line.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/road_marking.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/stationary_object.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/traffic_light.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/traffic_sign_common.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/traffic_sign_main_sign.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/traffic_sign_supplementary_sign.h + ${MAP_SDK_INCLUDE_DIR}/MapSDK/traffic_sign.h +) + +target_link_libraries(map_sdk INTERFACE MantleAPI::MantleAPI units::units) + +if(MAP_SDK_BUILD_TESTS) + enable_testing() + add_subdirectory(test) +endif() + +if(MAP_SDK_BUILD_DOCS) + add_subdirectory(doc) +endif() + +if(MAP_SDK_INSTALL) + install( + TARGETS map_sdk + EXPORT MapSDKTargets + FILE_SET HEADERS + ) + + install( + EXPORT MapSDKTargets + NAMESPACE MapSDK:: + DESTINATION "${MAP_SDK_INSTALL_CONFIGDIR}" + ) + + include(CMakePackageConfigHelpers) + + configure_package_config_file( + cmake/MapSDKConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/MapSDKConfig.cmake" + INSTALL_DESTINATION "${MAP_SDK_INSTALL_CONFIGDIR}" + ) + + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/MapSDKConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion + ) + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MapSDKConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/MapSDKConfigVersion.cmake" + DESTINATION "${MAP_SDK_INSTALL_CONFIGDIR}" + ) + + install(FILES LICENSE.txt README.md DESTINATION "${MAP_SDK_INSTALL_DATADIR}") +endif() diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000000000000000000000000000000000000..4abb61237c4f39ab6420153e0fc4b21de2205e47 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,126 @@ +{ + "version": 10, + "cmakeMinimumRequired": { + "major": 3, + "minor": 25, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Default Config", + "description": "Default build using Ninja generator", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build", + "installDir": "${sourceDir}/build/prefix" + }, + { + "name": "devel", + "inherits": "default", + "displayName": "Devel Config", + "description": "Devel build using Ninja Multi-Config generator", + "generator": "Ninja Multi-Config", + "cacheVariables": { + "CMAKE_EXPORT_COMPILE_COMMANDS": true + } + } + ], + "buildPresets": [ + { + "name": "default", + "displayName": "Default Build", + "configurePreset": "default", + "configuration": "Release" + }, + { + "name": "devel-debug", + "displayName": "Devel Debug Build", + "configurePreset": "devel", + "configuration": "Debug" + }, + { + "name": "devel-release", + "displayName": "Devel Release Build", + "configurePreset": "devel", + "configuration": "Release" + } + ], + "testPresets": [ + { + "name": "default", + "displayName": "Default Test", + "configurePreset": "default", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": true + } + }, + { + "name": "devel", + "displayName": "Devel Test", + "configurePreset": "devel", + "output": { + "outputOnFailure": true + }, + "execution": { + "noTestsAction": "error", + "stopOnFailure": true + } + } + ], + "packagePresets": [ + { + "name": "default", + "displayName": "Default Package", + "configurePreset": "default", + "generators": [ + "TGZ" + ] + } + ], + "workflowPresets": [ + { + "name": "default", + "displayName": "Default Workflow", + "steps": [ + { + "type": "configure", + "name": "default" + }, + { + "type": "build", + "name": "default" + }, + { + "type": "test", + "name": "default" + }, + { + "type": "package", + "name": "default" + } + ] + }, + { + "name": "devel", + "displayName": "Devel Workflow", + "steps": [ + { + "type": "configure", + "name": "devel" + }, + { + "type": "build", + "name": "devel" + }, + { + "type": "test", + "name": "devel" + } + ] + } + ] +} diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake new file mode 100644 index 0000000000000000000000000000000000000000..47e2e872abb89bbdda6794532d12b1a6dbe50c65 --- /dev/null +++ b/cmake/CPM.cmake @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: MIT +# +# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors + +set(CPM_DOWNLOAD_VERSION 0.40.5) +set(CPM_HASH_SUM "c46b876ae3b9f994b4f05a4c15553e0485636862064f1fcc9d8b4f832086bc5d") + +if(CPM_SOURCE_CACHE) + set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +elseif(DEFINED ENV{CPM_SOURCE_CACHE}) + set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +else() + set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +endif() + +# Expand relative path. This is important if the provided path contains a tilde (~) +get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE) + +file(DOWNLOAD + https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake + ${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM} +) + +include(${CPM_DOWNLOAD_LOCATION}) diff --git a/cmake/FindPlantUML.cmake b/cmake/FindPlantUML.cmake new file mode 100644 index 0000000000000000000000000000000000000000..9f056d1940a2d2f2d959b48be423fe83d8ee831d --- /dev/null +++ b/cmake/FindPlantUML.cmake @@ -0,0 +1,23 @@ +################################################################################ +# Copyright (c) 2024 Mercedes-Benz Tech Innovation GmbH +# +# This program and the accompanying materials are made available under the terms +# of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +################################################################################ + +find_file(PLANTUML_JAR plantuml.jar PATHS ${PLANTUML_JAR_PATH} ENV{PLANTUML_JAR_PATH} /usr/share/plantuml) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PlantUML DEFAULT_MSG PLANTUML_JAR) + +if(PlantUML_FOUND) + if(NOT TARGET PlantUML::PlantUML) + add_executable(PlantUML::PlantUML IMPORTED) + if(EXISTS "${PLANTUML_JAR}") + set_target_properties(PlantUML::PlantUML PROPERTIES IMPORTED_LOCATION "${PLANTUML_JAR}") + endif() + endif() +endif() diff --git a/cmake/MapSDKConfig.cmake.in b/cmake/MapSDKConfig.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..7315238b4c9b25dd09ba98a6974cf86b278c1a0d --- /dev/null +++ b/cmake/MapSDKConfig.cmake.in @@ -0,0 +1,19 @@ +#===------------------------------------------------------------------------===# +# +# Copyright (c) 2025 Mercedes-Benz Tech Innovation GmbH +# +# SPDX-License-Identifier: EPL-2.0 +# +#===------------------------------------------------------------------------===# + +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(units) +find_dependency(MantleAPI) + +if(NOT TARGET MapSDK::map_sdk AND NOT MapSDK_BINARY_DIR) + set_and_check(MapSDK_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") + mark_as_advanced(MapSDK_INCLUDE_DIR) + include("${CMAKE_CURRENT_LIST_DIR}/MapSDKTargets.cmake") +endif() diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f39e5d5f3a83f9fa96be3c9cd71ed3122156a350 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,58 @@ +################################################################################ +# Copyright (c) 2022-2024 Mercedes-Benz Tech Innovation GmbH +# 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the terms +# of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +################################################################################ + +CPMAddPackage("gh:jothepro/doxygen-awesome-css@2.3.4") + +find_package(Doxygen QUIET REQUIRED dot OPTIONAL_COMPONENTS mscgen dia) + +set(DOXYGEN_BUILTIN_STL_SUPPORT YES) +set(DOXYGEN_DISABLE_INDEX NO) +set(DOXYGEN_DOT_IMAGE_FORMAT svg) +set(DOXYGEN_DOT_TRANSPARENT YES) +set(DOXYGEN_EXCLUDE_SYMBOLS "detail*") +set(DOXYGEN_FULL_SIDEBAR NO) +set(DOXYGEN_GENERATE_LATEX NO) +set(DOXYGEN_GENERATE_TREEVIEW YES) +set(DOXYGEN_HTML_EXTRA_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/header.html + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-darkmode-toggle.js + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-fragment-copy-button.js + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-interactive-toc.js + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-paragraph-link.js +) +set(DOXYGEN_HTML_EXTRA_STYLESHEET + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome.css + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-sidebar-only.css + ${doxygen-awesome-css_SOURCE_DIR}/doxygen-awesome-sidebar-only-darkmode-toggle.css +) +set(DOXYGEN_HTML_HEADER header.html) +set(DOXYGEN_INCLUDE_PATH ${PROJECT_SOURCE_DIR}/include) +set(DOXYGEN_INTERACTIVE_SVG YES) +set(DOXYGEN_JAVADOC_AUTOBRIEF YES) +set(DOXYGEN_QUIET YES) +set(DOXYGEN_RECURSIVE YES) +set(DOXYGEN_TAB_SIZE 2) +set(DOXYGEN_UML_LOOK YES) +set(DOXYGEN_USE_MATHJAX YES) +set(DOXYGEN_USE_MDFILE_AS_MAINPAGE ${PROJECT_SOURCE_DIR}/README.md) +set(DOXYGEN_WARN_LOGFILE ${CMAKE_CURRENT_BINARY_DIR}/DoxygenWarningLog.txt) +set(DOXYGEN_WARN_NO_PARAMDOC YES) + +find_package(PlantUML) +if(PlantUML_FOUND) + set(DOXYGEN_ENABLED_SECTIONS diagrams) + set(DOXYGEN_PLANTUML_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/diagrams) + set(DOXYGEN_PLANTUML_JAR_PATH ${PLANTUML_JAR}) +endif() + +doxygen_add_docs( + ${PROJECT_NAME}_doc ${PROJECT_SOURCE_DIR}/README.md ${PROJECT_SOURCE_DIR}/include COMMENT "Generate html docs" +) diff --git a/doc/diagrams/.gitkeep b/doc/diagrams/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/doc/header.html b/doc/header.html new file mode 100644 index 0000000000000000000000000000000000000000..81f90941ed30759ee8f4cf53acdbca8820acce00 --- /dev/null +++ b/doc/header.html @@ -0,0 +1,73 @@ +<!-- HTML header for doxygen 1.9.1--> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=9" /> + <meta name="generator" content="Doxygen $doxygenversion" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <!--BEGIN PROJECT_NAME--> + <title>$projectname: $title</title><!--END PROJECT_NAME--> + <!--BEGIN !PROJECT_NAME--> + <title>$title</title><!--END !PROJECT_NAME--> + <link href="$relpath^tabs.css" rel="stylesheet" type="text/css" /> + <script type="text/javascript" src="$relpath^jquery.js"></script> + <script type="text/javascript" src="$relpath^dynsections.js"></script> + $treeview + $search + $mathjax + <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" /> + $extrastylesheet + + <script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script> + <script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script> + <script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script> + <script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script> + <script type="text/javascript"> + DoxygenAwesomeDarkModeToggle.init() + DoxygenAwesomeFragmentCopyButton.init() + DoxygenAwesomeParagraphLink.init() + DoxygenAwesomeInteractiveToc.init() + </script> +</head> + +<body> + <div id="top"><!-- do not remove this div, it is closed by doxygen! --> + + <!--BEGIN TITLEAREA--> + <div id="titlearea"> + <table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <!--BEGIN PROJECT_LOGO--> + <td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo" /></td> + <!--END PROJECT_LOGO--> + <!--BEGIN PROJECT_NAME--> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">$projectname + <!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER--> + </div> + <!--BEGIN PROJECT_BRIEF--> + <div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF--> + </td> + <!--END PROJECT_NAME--> + <!--BEGIN !PROJECT_NAME--> + <!--BEGIN PROJECT_BRIEF--> + <td style="padding-left: 0.5em;"> + <div id="projectbrief">$projectbrief</div> + </td> + <!--END PROJECT_BRIEF--> + <!--END !PROJECT_NAME--> + <!--BEGIN DISABLE_INDEX--> + <!--BEGIN SEARCHENGINE--> + <td>$searchbox</td> + <!--END SEARCHENGINE--> + <!--END DISABLE_INDEX--> + </tr> + </tbody> + </table> + </div> + <!--END TITLEAREA--> + <!-- end header part --> diff --git a/include/MapAPI/Common/base_properties.h b/include/MapSDK/Common/base_properties.h similarity index 100% rename from include/MapAPI/Common/base_properties.h rename to include/MapSDK/Common/base_properties.h diff --git a/include/MapAPI/Common/common.h b/include/MapSDK/Common/common.h similarity index 100% rename from include/MapAPI/Common/common.h rename to include/MapSDK/Common/common.h diff --git a/include/MapAPI/Common/external_reference.h b/include/MapSDK/Common/external_reference.h similarity index 100% rename from include/MapAPI/Common/external_reference.h rename to include/MapSDK/Common/external_reference.h diff --git a/include/MapAPI/Common/geometry.h b/include/MapSDK/Common/geometry.h similarity index 100% rename from include/MapAPI/Common/geometry.h rename to include/MapSDK/Common/geometry.h diff --git a/include/MapAPI/Common/identifier.h b/include/MapSDK/Common/identifier.h similarity index 100% rename from include/MapAPI/Common/identifier.h rename to include/MapSDK/Common/identifier.h diff --git a/include/MapAPI/i_map_loader.h b/include/MapSDK/i_map_loader.h similarity index 100% rename from include/MapAPI/i_map_loader.h rename to include/MapSDK/i_map_loader.h diff --git a/include/MapAPI/lane.h b/include/MapSDK/lane.h similarity index 100% rename from include/MapAPI/lane.h rename to include/MapSDK/lane.h diff --git a/include/MapAPI/lane_boundary.h b/include/MapSDK/lane_boundary.h similarity index 100% rename from include/MapAPI/lane_boundary.h rename to include/MapSDK/lane_boundary.h diff --git a/include/MapAPI/lane_group.h b/include/MapSDK/lane_group.h similarity index 100% rename from include/MapAPI/lane_group.h rename to include/MapSDK/lane_group.h diff --git a/include/MapAPI/logical_lane.h b/include/MapSDK/logical_lane.h similarity index 100% rename from include/MapAPI/logical_lane.h rename to include/MapSDK/logical_lane.h diff --git a/include/MapAPI/logical_lane_assignment.h b/include/MapSDK/logical_lane_assignment.h similarity index 100% rename from include/MapAPI/logical_lane_assignment.h rename to include/MapSDK/logical_lane_assignment.h diff --git a/include/MapAPI/logical_lane_boundary.h b/include/MapSDK/logical_lane_boundary.h similarity index 100% rename from include/MapAPI/logical_lane_boundary.h rename to include/MapSDK/logical_lane_boundary.h diff --git a/include/MapAPI/map.h b/include/MapSDK/map.h similarity index 100% rename from include/MapAPI/map.h rename to include/MapSDK/map.h diff --git a/include/MapAPI/reference_line.h b/include/MapSDK/reference_line.h similarity index 100% rename from include/MapAPI/reference_line.h rename to include/MapSDK/reference_line.h diff --git a/include/MapAPI/road_marking.h b/include/MapSDK/road_marking.h similarity index 100% rename from include/MapAPI/road_marking.h rename to include/MapSDK/road_marking.h diff --git a/include/MapAPI/stationary_object.h b/include/MapSDK/stationary_object.h similarity index 100% rename from include/MapAPI/stationary_object.h rename to include/MapSDK/stationary_object.h diff --git a/include/MapAPI/traffic_light.h b/include/MapSDK/traffic_light.h similarity index 100% rename from include/MapAPI/traffic_light.h rename to include/MapSDK/traffic_light.h diff --git a/include/MapAPI/traffic_sign.h b/include/MapSDK/traffic_sign.h similarity index 100% rename from include/MapAPI/traffic_sign.h rename to include/MapSDK/traffic_sign.h diff --git a/include/MapAPI/traffic_sign_common.h b/include/MapSDK/traffic_sign_common.h similarity index 100% rename from include/MapAPI/traffic_sign_common.h rename to include/MapSDK/traffic_sign_common.h diff --git a/include/MapAPI/traffic_sign_main_sign.h b/include/MapSDK/traffic_sign_main_sign.h similarity index 100% rename from include/MapAPI/traffic_sign_main_sign.h rename to include/MapSDK/traffic_sign_main_sign.h diff --git a/include/MapAPI/traffic_sign_supplementary_sign.h b/include/MapSDK/traffic_sign_supplementary_sign.h similarity index 100% rename from include/MapAPI/traffic_sign_supplementary_sign.h rename to include/MapSDK/traffic_sign_supplementary_sign.h diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..12495114d74b233e7000d372dc08c59b14d09b2a --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,21 @@ +#===------------------------------------------------------------------------===# +# +# Copyright (c) 2025 Mercedes-Benz Tech Innovation GmbH +# +# SPDX-License-Identifier: EPL-2.0 +# +#===------------------------------------------------------------------------===# + +CPMAddPackage( + NAME googletest + GITHUB_REPOSITORY google/googletest + VERSION 1.15.2 + OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt ON" +) + +add_executable(map_sdk_test) +target_sources(map_sdk_test PUBLIC map_test.cpp) +target_link_libraries(map_sdk_test PUBLIC MapSDK::map_sdk GTest::gmock_main) + +include(GoogleTest) +gtest_discover_tests(map_sdk_test) diff --git a/test/map_test.cpp b/test/map_test.cpp index 831c23d66f332743a09b6d976974348d009cc096..9b600c7973659ddfa2857719913f6651d23511d2 100644 --- a/test/map_test.cpp +++ b/test/map_test.cpp @@ -9,12 +9,19 @@ * SPDX-License-Identifier: EPL-2.0 *******************************************************************************/ -#include "MapAPI/map.h" +#include "MapSDK/map.h" #include <gmock/gmock.h> #include <gtest/gtest.h> #include <limits> +#include <memory> +#include <utility> +#include <vector> + +#include "MapSDK/Common/identifier.h" +#include "MapSDK/lane.h" +#include "MapSDK/lane_boundary.h" namespace { @@ -44,8 +51,8 @@ inline auto CreateLaneBoundary(Identifier id, const units::length::meter_t start auto lane_boundary = std::make_unique<LaneBoundary>(); lane_boundary->id = id; lane_boundary->boundary_line = std::vector<LaneBoundary::BoundaryPoint>{ - {.position = {.x = start_x, .y = y_offset, .z = 0.0_m}, .width = 0.13_m, .height = 0.05_m}, - {.position = {.x = start_x + 1000.0_m, .y = y_offset, .z = 0.0_m}, .width = 0.13_m, .height = 0.05_m}}; + {{start_x, y_offset, 0.0_m}, 0.13_m, 0.05_m}, + {{start_x + 1000.0_m, y_offset, 0.0_m}, 0.13_m, 0.05_m}}; lane_boundary->type = LaneBoundary::Type::kSolidLine; lane_boundary->color = LaneBoundary::Color::kWhite; return std::move(lane_boundary);