diff options
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | sim/CMakeLists.txt | 10 | ||||
-rw-r--r-- | sim/tests/HitPoints.cpp | 44 |
4 files changed, 60 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ae2a9b8..da56f8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,12 @@ -cmake_minimum_required(VERSION 3.16) +cmake_minimum_required(VERSION 3.20) project(kurator) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_EXTENSIONS No) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -D_USE_MATH_DEFINES") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") +enable_testing() find_package(EnTT 3 REQUIRED) +find_package(GTest 1 REQUIRED) find_package(nlohmann_json 3 REQUIRED) find_package(raylib 4 REQUIRED) include(AddResources) @@ -2,12 +2,14 @@ Third-party libraries used: * EnTT + * GTest * nlohmann\_json * raylib Both Raylib and Nlohmann's JSON libraries are available in mainstream distribution repositories. Confirmed with Arch Linux and Ubuntu. In case they are not, you can install Raylib[1] and JSON[2] from source. EnTT is rarely available. For -Arch Linux you can use AUR package[3]. Otherwise, install from source git repository[4]. +Arch Linux you can use AUR package[3]. Otherwise, install from source git repository[4]. GTest is available in Arch, but +Ubuntu package repositories contain only sources. After making sure all dependencies are available, run CMake to generate and build: diff --git a/sim/CMakeLists.txt b/sim/CMakeLists.txt index ef80c77..4ddd15d 100644 --- a/sim/CMakeLists.txt +++ b/sim/CMakeLists.txt @@ -22,3 +22,13 @@ target_link_libraries( PRIVATE stats PUBLIC universe ) +add_executable( + ${PROJECT_NAME}_test + tests/HitPoints.cpp +) +target_link_libraries( + ${PROJECT_NAME}_test + PRIVATE GTest::gtest_main + PRIVATE ${PROJECT_NAME} +) +gtest_discover_tests(${PROJECT_NAME}_test) diff --git a/sim/tests/HitPoints.cpp b/sim/tests/HitPoints.cpp new file mode 100644 index 0000000..8b8ef84 --- /dev/null +++ b/sim/tests/HitPoints.cpp @@ -0,0 +1,44 @@ +#include <gtest/gtest.h> + +#include <kurator/sim/HitPoints.h> +#include <kurator/universe/ShipType.h> + + +namespace kurator +{ +namespace tests +{ + + +const universe::ShipType SHIP_TYPE { + "", + 100.0, + 100.0, + 100.0, + 0.0, + 0.5, + 0.2, + 0.5, +}; + + + +TEST(HitPoints, Deal) +{ + sim::HitPoints points {SHIP_TYPE}; + EXPECT_TRUE(points.is_alive()); + EXPECT_DOUBLE_EQ(300.0, points.total()); + EXPECT_DOUBLE_EQ(50.0, points.deal(100.0)); + EXPECT_DOUBLE_EQ(250.0, points.total()); + EXPECT_DOUBLE_EQ(50.0, points.deal(100.0)); + EXPECT_DOUBLE_EQ(200.0, points.total()); + EXPECT_DOUBLE_EQ(100.0, points.deal(125.0)); + EXPECT_DOUBLE_EQ(100.0, points.total()); + EXPECT_DOUBLE_EQ(100.0, points.deal(200.0)); + EXPECT_DOUBLE_EQ(0.0, points.total()); + EXPECT_FALSE(points.is_alive()); +} + + +} // namespace tests +} // namespace kurator |