aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-12-19 13:58:58 +0100
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-12-19 13:58:58 +0100
commitb5c4879189a8ff55434c8c04c14163dfda83de65 (patch)
tree17595782d04038818f7ed4f6bb2199949ebd30a0 /src/test
parentebe2fcfce52d9a303c5fa19d79554e20ac7f0bac (diff)
parent794efc4ef7a44b190a4d9ecc2dd84a66c62ab005 (diff)
Merge branch 'master' into niels/UI
Diffstat (limited to 'src/test')
-rw-r--r--src/test/CollisionTest.cpp1
-rw-r--r--src/test/DBTest.cpp8
-rw-r--r--src/test/InputTest.cpp54
-rw-r--r--src/test/SaveManagerTest.cpp17
-rw-r--r--src/test/ScriptTest.cpp22
-rw-r--r--src/test/ScriptTest.h7
-rw-r--r--src/test/main.cpp3
7 files changed, 81 insertions, 31 deletions
diff --git a/src/test/CollisionTest.cpp b/src/test/CollisionTest.cpp
index ff9e7cc..baa95c1 100644
--- a/src/test/CollisionTest.cpp
+++ b/src/test/CollisionTest.cpp
@@ -54,6 +54,7 @@ public:
ComponentManager mgr{m};
CollisionSystem collision_sys{m};
ScriptSystem script_sys{m};
+ LoopTimerManager loop_timer{m};
GameObject world = mgr.new_object("world", "", {50, 50});
GameObject game_object1 = mgr.new_object("object1", "", {50, 50});
diff --git a/src/test/DBTest.cpp b/src/test/DBTest.cpp
index 99dedff..7f2c339 100644
--- a/src/test/DBTest.cpp
+++ b/src/test/DBTest.cpp
@@ -27,3 +27,11 @@ TEST_F(DBTest, Has) {
db.set("foo", "bar");
EXPECT_EQ(db.has("foo"), true);
}
+
+TEST_F(DBTest, MultipleKeys) {
+ db.set("foo", "foo");
+ db.set("bar", "bar");
+
+ EXPECT_EQ(db.get("foo"), "foo");
+ EXPECT_EQ(db.get("bar"), "bar");
+}
diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp
index 2d844d4..ce8ea44 100644
--- a/src/test/InputTest.cpp
+++ b/src/test/InputTest.cpp
@@ -2,7 +2,6 @@
#include <crepe/manager/ResourceManager.h>
#include <crepe/system/RenderSystem.h>
-
#define protected public
#define private public
@@ -214,8 +213,12 @@ TEST_F(InputTest, MouseClick) {
TEST_F(InputTest, testButtonClick) {
GameObject button_obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1);
bool button_clicked = false;
- std::function<void()> on_click = [&]() { button_clicked = true; };
- auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click);
+ event_manager.subscribe<ButtonPressEvent>([&](const ButtonPressEvent & event) {
+ button_clicked = true;
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
+ return false;
+ });
+ auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0});
bool hover = false;
button.active = true;
@@ -232,25 +235,19 @@ TEST_F(InputTest, testButtonClick) {
TEST_F(InputTest, testButtonHover) {
GameObject button_obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1);
- bool button_clicked = false;
- std::function<void()> on_click = [&]() { button_clicked = true; };
- auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click);
+ bool button_hover = false;
+ event_manager.subscribe<ButtonEnterEvent>([&](const ButtonEnterEvent & event) {
+ button_hover = true;
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
+ return false;
+ });
+ event_manager.subscribe<ButtonExitEvent>([&](const ButtonExitEvent & event) {
+ button_hover = false;
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
+ return false;
+ });
+ auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0});
button.active = true;
-
- // Mouse not on button
- SDL_Event event;
- SDL_zero(event);
- event.type = SDL_MOUSEMOTION;
- event.motion.x = 700;
- event.motion.y = 700;
- event.motion.xrel = 10;
- event.motion.yrel = 10;
- SDL_PushEvent(&event);
-
- input_system.update();
- event_manager.dispatch_events();
- EXPECT_FALSE(button.hover);
-
// Mouse on button
SDL_Event hover_event;
SDL_zero(hover_event);
@@ -264,4 +261,19 @@ TEST_F(InputTest, testButtonHover) {
input_system.update();
event_manager.dispatch_events();
EXPECT_TRUE(button.hover);
+ EXPECT_TRUE(button_hover);
+ // Mouse not on button
+ SDL_Event event;
+ SDL_zero(event);
+ event.type = SDL_MOUSEMOTION;
+ event.motion.x = 500;
+ event.motion.y = 500;
+ event.motion.xrel = 10;
+ event.motion.yrel = 10;
+ SDL_PushEvent(&event);
+
+ input_system.update();
+ event_manager.dispatch_events();
+ EXPECT_FALSE(button.hover);
+ EXPECT_FALSE(button_hover);
}
diff --git a/src/test/SaveManagerTest.cpp b/src/test/SaveManagerTest.cpp
index e9b0c29..7609e69 100644
--- a/src/test/SaveManagerTest.cpp
+++ b/src/test/SaveManagerTest.cpp
@@ -27,8 +27,8 @@ TEST_F(SaveManagerTest, ReadWrite) {
mgr.set<string>("foo", "bar");
ASSERT_TRUE(mgr.has("foo"));
- ValueBroker value = mgr.get<string>("foo");
- EXPECT_EQ(value.get(), "bar");
+ string value = mgr.get<string>("foo");
+ EXPECT_EQ(value, "bar");
}
TEST_F(SaveManagerTest, DefaultValue) {
@@ -36,5 +36,16 @@ TEST_F(SaveManagerTest, DefaultValue) {
ASSERT_EQ(value.get(), 3);
value.set(5);
- ASSERT_EQ(value.get(), 5);
+ EXPECT_EQ(value.get(), 5);
+}
+
+TEST_F(SaveManagerTest, MultipleKeys) {
+ ValueBroker foo = mgr.get<int>("foo", 1);
+ ValueBroker bar = mgr.get<int>("bar", 2);
+
+ EXPECT_EQ(foo.get(), 1);
+ EXPECT_EQ(bar.get(), 2);
+
+ EXPECT_EQ(mgr.get<int>("foo"), 1);
+ EXPECT_EQ(mgr.get<int>("bar"), 2);
}
diff --git a/src/test/ScriptTest.cpp b/src/test/ScriptTest.cpp
index acdae70..846e398 100644
--- a/src/test/ScriptTest.cpp
+++ b/src/test/ScriptTest.cpp
@@ -28,7 +28,7 @@ void ScriptTest::SetUp() {
TEST_F(ScriptTest, Default) {
MyScript & script = this->script;
EXPECT_CALL(script, init()).Times(0);
- EXPECT_CALL(script, update()).Times(0);
+ EXPECT_CALL(script, update(_)).Times(0);
}
TEST_F(ScriptTest, UpdateOnce) {
@@ -38,7 +38,7 @@ TEST_F(ScriptTest, UpdateOnce) {
InSequence seq;
EXPECT_CALL(script, init()).Times(1);
- EXPECT_CALL(script, update()).Times(1);
+ EXPECT_CALL(script, update(_)).Times(1);
system.update();
}
@@ -46,7 +46,7 @@ TEST_F(ScriptTest, UpdateOnce) {
InSequence seq;
EXPECT_CALL(script, init()).Times(0);
- EXPECT_CALL(script, update()).Times(1);
+ EXPECT_CALL(script, update(_)).Times(1);
system.update();
}
}
@@ -59,7 +59,7 @@ TEST_F(ScriptTest, UpdateInactive) {
InSequence seq;
EXPECT_CALL(script, init()).Times(0);
- EXPECT_CALL(script, update()).Times(0);
+ EXPECT_CALL(script, update(_)).Times(0);
behaviorscript.active = false;
system.update();
}
@@ -68,8 +68,20 @@ TEST_F(ScriptTest, UpdateInactive) {
InSequence seq;
EXPECT_CALL(script, init()).Times(1);
- EXPECT_CALL(script, update()).Times(1);
+ EXPECT_CALL(script, update(_)).Times(1);
behaviorscript.active = true;
system.update();
}
}
+
+TEST_F(ScriptTest, SaveManager) {
+ MyScript & script = this->script;
+
+ EXPECT_EQ(&script.get_save_manager(), &this->save_manager);
+}
+
+TEST_F(ScriptTest, LoopTimerManager) {
+ MyScript & script = this->script;
+
+ EXPECT_EQ(&script.get_loop_timer(), &this->loop_timer);
+}
diff --git a/src/test/ScriptTest.h b/src/test/ScriptTest.h
index 31fa7c9..f3dbda4 100644
--- a/src/test/ScriptTest.h
+++ b/src/test/ScriptTest.h
@@ -7,7 +7,10 @@
#include <crepe/api/Script.h>
#include <crepe/manager/ComponentManager.h>
#include <crepe/manager/EventManager.h>
+#include <crepe/manager/LoopTimerManager.h>
+#include <crepe/manager/SaveManager.h>
#include <crepe/system/ScriptSystem.h>
+
class ScriptTest : public testing::Test {
protected:
crepe::Mediator mediator;
@@ -17,6 +20,8 @@ public:
crepe::ComponentManager component_manager{mediator};
crepe::ScriptSystem system{mediator};
crepe::EventManager event_mgr{mediator};
+ crepe::LoopTimerManager loop_timer{mediator};
+ crepe::SaveManager save_manager{mediator};
crepe::GameObject entity = component_manager.new_object(OBJ_NAME);
class MyScript : public crepe::Script {
@@ -24,7 +29,7 @@ public:
public:
MOCK_METHOD(void, init, (), (override));
- MOCK_METHOD(void, update, (), (override));
+ MOCK_METHOD(void, update, (crepe::duration_t), (override));
};
crepe::OptionalRef<crepe::BehaviorScript> behaviorscript;
diff --git a/src/test/main.cpp b/src/test/main.cpp
index ed2aed5..0e1bc75 100644
--- a/src/test/main.cpp
+++ b/src/test/main.cpp
@@ -1,6 +1,7 @@
-#include <crepe/api/Config.h>
#include <gtest/gtest.h>
+#include <crepe/api/Config.h>
+
using namespace crepe;
using namespace testing;