diff --git a/CMakeLists.txt b/CMakeLists.txt index 75c054c..a16f545 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,11 +7,37 @@ project( set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# GoogleTest requires at least C++14 +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +enable_testing() + add_subdirectory(src/modules) add_executable(main src/main.cc) +add_executable(test_validation src/test_validation.cc) add_library(validation src/validation.cc src/validation.hh) target_link_libraries(main PUBLIC validation) -target_link_libraries(validation PUBLIC modules) +target_link_libraries(validation PRIVATE modules) + target_include_directories(main PUBLIC "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/modules") + +target_include_directories( + test_validation PUBLIC "${PROJECT_BINARY_DIR}" + "${PROJECT_SOURCE_DIR}/modules") + +include(FetchContent) +FetchContent_Declare( + googletest + URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip +) +# For Windows: Prevent overriding the parent project's compiler/linker settings +set(gtest_force_shared_crt + ON + CACHE BOOL "" FORCE) +FetchContent_MakeAvailable(googletest) + +include(GoogleTest) +target_link_libraries(test_validation PRIVATE GTest::gtest_main) +gtest_discover_tests(test_validation) diff --git a/src/test_validation.cc b/src/test_validation.cc new file mode 100644 index 0000000..b79b28f --- /dev/null +++ b/src/test_validation.cc @@ -0,0 +1,10 @@ +#include "gtest/gtest.h" + +TEST(ExampleTest, Example) { + EXPECT_EQ(1, 1); +} + +int main(int argc, char *argv[]) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}