tests: add Common placeholder smoke/gtest tests and MockCoordTrans

This commit is contained in:
torsten committed 2026-07-17 17:34:33 +02:00
1 parent 90f7f8a474
commit b75302083b
5 files changed
+80

No files matched your search

@@ -0,0 +1,32 @@
cmake_minimum_required(VERSION 3.16)
project(CommonUnitTestsPlaceholder)
include(FetchContent)
option(BUILD_SMOKE_TESTS "Build QtTest smoke tests" OFF)
option(BUILD_GTEST_SMOKE "Build GTest smoke tests" OFF)
add_subdirectory(mocks)
if(BUILD_SMOKE_TESTS)
find_package(Qt6 REQUIRED COMPONENTS Test)
add_executable(coordTransTests_smoke coordTransTests_smoke.cpp)
target_link_libraries(coordTransTests_smoke PRIVATE Qt6::Test MockCoordTrans::MockCoordTrans)
add_test(NAME coordTransTests_smoke COMMAND coordTransTests_smoke)
endif()
if(BUILD_GTEST_SMOKE)
find_package(GTest QUIET)
if(NOT GTest_FOUND)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.12.1
)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
endif()
add_executable(coordTransTests_gtest coordTransTests_gtest.cpp)
target_link_libraries(coordTransTests_gtest PRIVATE GTest::gtest_main MockCoordTrans::MockCoordTrans)
add_test(NAME coordTransTests_gtest COMMAND coordTransTests_gtest)
endif()
@@ -0,0 +1,12 @@
#include "mocks/MockCoordTrans.h"
#include <gtest/gtest.h>
TEST(CoordTransGTest, ForwardInverseRoundtrip) {
auto p = MockCoordTrans::forward(1.2345, 2.3456);
EXPECT_NEAR(p.first, 1.2345 * 111000.0, 1e-6);
EXPECT_NEAR(p.second, 2.3456 * 111000.0, 1e-6);
auto inv = MockCoordTrans::inverse(p.first, p.second);
EXPECT_NEAR(inv.first, 1.2345, 1e-9);
EXPECT_NEAR(inv.second, 2.3456, 1e-9);
}
@@ -0,0 +1,15 @@
#include <QtTest/QtTest>
#include "mocks/MockCoordTrans.h"
class CoordTransSmoke : public QObject {
Q_OBJECT
private slots:
void testForward() {
auto p = MockCoordTrans::forward(10.0, 20.0);
QVERIFY(qFuzzyCompare(p.first, 10.0 * 111000.0));
QVERIFY(qFuzzyCompare(p.second, 20.0 * 111000.0));
}
};
QTEST_MAIN(CoordTransSmoke)
#include "coordTransTests_smoke.moc"
@@ -0,0 +1,5 @@
add_library(MockCoordTrans STATIC MockCoordTrans.h)
target_include_directories(MockCoordTrans PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
# Export header-only semantics by providing an interface target
add_library(MockCoordTrans::MockCoordTrans ALIAS MockCoordTrans)
@@ -0,0 +1,16 @@
#pragma once
#include <utility>
// Minimal realistic mock for coordinate transforms used during migration.
// Forward conversion returns approximate meters using lat/lon*111000.
class MockCoordTrans {
public:
// approximate forward: (lat, lon) -> (x_m, y_m)
static std::pair<double,double> forward(double lat_deg, double lon_deg) {
return {lat_deg * 111000.0, lon_deg * 111000.0};
}
// approximate inverse
static std::pair<double,double> inverse(double x_m, double y_m) {
return {x_m / 111000.0, y_m / 111000.0};
}
};