summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2023-02-05 01:18:18 +0100
committerAki <please@ignore.pl>2023-02-05 01:18:18 +0100
commit7c8aac19374013e7366b5afbf5d85fe151de3669 (patch)
treea447bf2c9366eb222ca37e29f679c84a166a4d18 /sim
parentdedd9566a53de73215a13117e2704e8df4d04e95 (diff)
downloadkurator-7c8aac19374013e7366b5afbf5d85fe151de3669.zip
kurator-7c8aac19374013e7366b5afbf5d85fe151de3669.tar.gz
kurator-7c8aac19374013e7366b5afbf5d85fe151de3669.tar.bz2
Added simple test for HitPoints
This should have been added earlier. The test itself is questionable and overall very optimistic about the edge cases. The intent of this commit is purely set up of the testing framework.
Diffstat (limited to 'sim')
-rw-r--r--sim/CMakeLists.txt10
-rw-r--r--sim/tests/HitPoints.cpp44
2 files changed, 54 insertions, 0 deletions
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