diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmake/googletest-download.cmake | 20 | ||||
-rw-r--r-- | src/cmake/googletest.cmake | 32 | ||||
-rw-r--r-- | src/cmake/showoptions.cmake | 6 | ||||
-rw-r--r-- | src/test/CMakeLists.txt | 23 | ||||
-rw-r--r-- | src/test/server/game/Miscellaneous/FormulasTest.cpp | 13 |
5 files changed, 94 insertions, 0 deletions
diff --git a/src/cmake/googletest-download.cmake b/src/cmake/googletest-download.cmake new file mode 100644 index 0000000000..0da8335896 --- /dev/null +++ b/src/cmake/googletest-download.cmake @@ -0,0 +1,20 @@ +# code copied from https://crascit.com/2015/07/25/cmake-gtest/ +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + +project(googletest-download NONE) + +include(ExternalProject) + +ExternalProject_Add( + googletest + SOURCE_DIR "@GOOGLETEST_DOWNLOAD_ROOT@/googletest-src" + BINARY_DIR "@GOOGLETEST_DOWNLOAD_ROOT@/googletest-build" + GIT_REPOSITORY + https://github.com/google/googletest.git + GIT_TAG + release-1.10.0 + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) diff --git a/src/cmake/googletest.cmake b/src/cmake/googletest.cmake new file mode 100644 index 0000000000..de0c3bbb4c --- /dev/null +++ b/src/cmake/googletest.cmake @@ -0,0 +1,32 @@ +# the following code to fetch googletest +# is inspired by and adapted after https://crascit.com/2015/07/25/cmake-gtest/ +# download and unpack googletest at configure time + +macro(fetch_googletest _download_module_path _download_root) + set(GOOGLETEST_DOWNLOAD_ROOT ${_download_root}) + configure_file( + ${_download_module_path}/googletest-download.cmake + ${_download_root}/CMakeLists.txt + @ONLY + ) + unset(GOOGLETEST_DOWNLOAD_ROOT) + + execute_process( + COMMAND + "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . + WORKING_DIRECTORY + ${_download_root} + ) + execute_process( + COMMAND + "${CMAKE_COMMAND}" --build . + WORKING_DIRECTORY + ${_download_root} + ) + + # adds the targers: gtest, gtest_main, gmock, gmock_main + add_subdirectory( + ${_download_root}/googletest-src + ${_download_root}/googletest-build + ) +endmacro() diff --git a/src/cmake/showoptions.cmake b/src/cmake/showoptions.cmake index 7d10b7f706..f5fb5c4e19 100644 --- a/src/cmake/showoptions.cmake +++ b/src/cmake/showoptions.cmake @@ -40,6 +40,12 @@ else() message("* Build map/vmap tools : No (default)") endif() +if( UNIT_TESTS ) + message("* Build unit tests : Yes") +else() + message("* Build unit tests : No (default)") +endif() + if( USE_COREPCH ) message("* Build core w/PCH : Yes (default)") else() diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt new file mode 100644 index 0000000000..8ecff19c28 --- /dev/null +++ b/src/test/CMakeLists.txt @@ -0,0 +1,23 @@ +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES +) + +add_executable( + unit_tests + ${PRIVATE_SOURCES} +) + +target_link_libraries( + unit_tests + gtest_main + game + game-interface +) + +add_test( + NAME + unit + COMMAND + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/unit_tests +) diff --git a/src/test/server/game/Miscellaneous/FormulasTest.cpp b/src/test/server/game/Miscellaneous/FormulasTest.cpp new file mode 100644 index 0000000000..74df50f6f6 --- /dev/null +++ b/src/test/server/game/Miscellaneous/FormulasTest.cpp @@ -0,0 +1,13 @@ +#include "gtest/gtest.h" +#include "Formulas.h" + +TEST(FormulasTest, hk_honor_at_level) +{ + EXPECT_EQ(acore::Honor::hk_honor_at_level(80), 124); + EXPECT_EQ(acore::Honor::hk_honor_at_level(80, 2), 248); + EXPECT_EQ(acore::Honor::hk_honor_at_level(80, 0.5), 62); + EXPECT_EQ(acore::Honor::hk_honor_at_level(1), 2); + EXPECT_EQ(acore::Honor::hk_honor_at_level(1, 10), 16); + EXPECT_EQ(acore::Honor::hk_honor_at_level(2), 4); + EXPECT_EQ(acore::Honor::hk_honor_at_level(3), 5); +} |