tests: add Common placeholder smoke/gtest tests and MockCoordTrans
This commit is contained in:
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};
|
||||
}
|
||||
};
|
||||
Reference in new issue
Block a user