feature(testing-automation): unit tests with Google Framework (#3273)

This commit is contained in:
Francesco Borzì
2020-08-15 22:34:45 +02:00
committed by GitHub
parent 4d11f5c921
commit c2b40b126d
13 changed files with 132 additions and 11 deletions

View File

@@ -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 ""
)

View File

@@ -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()

View File

@@ -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()

23
src/test/CMakeLists.txt Normal file
View File

@@ -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
)

View File

@@ -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);
}