aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-12-12 19:48:18 +0100
committerWBoerenkamps <wrj.boerenkamps@student.avans.nl>2024-12-12 19:48:18 +0100
commit8cb43ae9ce445c757274874934c30f815b3b6108 (patch)
tree47e2d09223995b122cab3be6af0a5d6dd09dfbbd /src/test
parentf7b4866811c63ae24c366d9452e53d24e504336f (diff)
parentfd403d038b017ec8976023471073329896035e36 (diff)
Merge branch 'master' of https://github.com/lonkaars/crepe into wouter/gameloop
Diffstat (limited to 'src/test')
-rw-r--r--src/test/InputTest.cpp45
-rw-r--r--src/test/LoopManagerTest.cpp10
-rw-r--r--src/test/LoopTimerTest.cpp5
-rw-r--r--src/test/PhysicsTest.cpp46
-rw-r--r--src/test/Profiling.cpp1
5 files changed, 47 insertions, 60 deletions
diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp
index 29ef941..8b40cea 100644
--- a/src/test/InputTest.cpp
+++ b/src/test/InputTest.cpp
@@ -1,3 +1,4 @@
+#include "system/RenderSystem.h"
#include <gtest/gtest.h>
#define protected public
#define private public
@@ -27,14 +28,20 @@ public:
SDLContext sdl_context{mediator};
InputSystem input_system{mediator};
+ RenderSystem render{mediator};
EventManager event_manager{mediator};
//GameObject camera;
protected:
void SetUp() override {
- mediator.event_manager = event_manager;
- mediator.component_manager = mgr;
- event_manager.clear();
+ GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
+ auto & camera
+ = obj.add_component<Camera>(ivec2{500, 500}, vec2{500, 500},
+ Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
+ render.update();
+ //mediator.event_manager = event_manager;
+ //mediator.component_manager = mgr;
+ //event_manager.clear();
}
void simulate_mouse_click(int mouse_x, int mouse_y, Uint8 mouse_button) {
@@ -59,10 +66,6 @@ protected:
};
TEST_F(InputTest, MouseDown) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool mouse_triggered = false;
EventHandler<MousePressEvent> on_mouse_down = [&](const MousePressEvent & event) {
mouse_triggered = true;
@@ -89,10 +92,6 @@ TEST_F(InputTest, MouseDown) {
}
TEST_F(InputTest, MouseUp) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool function_triggered = false;
EventHandler<MouseReleaseEvent> on_mouse_release = [&](const MouseReleaseEvent & e) {
function_triggered = true;
@@ -117,10 +116,6 @@ TEST_F(InputTest, MouseUp) {
}
TEST_F(InputTest, MouseMove) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool function_triggered = false;
EventHandler<MouseMoveEvent> on_mouse_move = [&](const MouseMoveEvent & e) {
function_triggered = true;
@@ -147,10 +142,6 @@ TEST_F(InputTest, MouseMove) {
}
TEST_F(InputTest, KeyDown) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool function_triggered = false;
// Define event handler for KeyPressEvent
@@ -178,10 +169,6 @@ TEST_F(InputTest, KeyDown) {
}
TEST_F(InputTest, KeyUp) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool function_triggered = false;
EventHandler<KeyReleaseEvent> on_key_release = [&](const KeyReleaseEvent & event) {
function_triggered = true;
@@ -202,10 +189,6 @@ TEST_F(InputTest, KeyUp) {
}
TEST_F(InputTest, MouseClick) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
bool on_click_triggered = false;
EventHandler<MouseClickEvent> on_mouse_click = [&](const MouseClickEvent & event) {
on_click_triggered = true;
@@ -223,10 +206,6 @@ TEST_F(InputTest, MouseClick) {
}
TEST_F(InputTest, testButtonClick) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
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; };
@@ -250,10 +229,6 @@ TEST_F(InputTest, testButtonClick) {
}
TEST_F(InputTest, testButtonHover) {
- GameObject obj = mgr.new_object("camera", "camera", vec2{0, 0}, 0, 1);
- auto & camera = obj.add_component<Camera>(
- ivec2{0, 0}, vec2{500, 500}, Camera::Data{.bg_color = Color::WHITE, .zoom = 1.0f});
- camera.active = true;
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; };
diff --git a/src/test/LoopManagerTest.cpp b/src/test/LoopManagerTest.cpp
index af89d64..df132ae 100644
--- a/src/test/LoopManagerTest.cpp
+++ b/src/test/LoopManagerTest.cpp
@@ -10,7 +10,7 @@
using namespace std::chrono;
using namespace crepe;
-class LoopManagerTest : public ::testing::Test {
+class DISABLED_LoopManagerTest : public ::testing::Test {
protected:
class TestGameLoop : public crepe::LoopManager {
public:
@@ -22,7 +22,7 @@ protected:
void SetUp() override {}
};
-TEST_F(LoopManagerTest, FixedUpdate) {
+TEST_F(DISABLED_LoopManagerTest, FixedUpdate) {
// Arrange
test_loop.loop_timer.set_target_framerate(60);
@@ -43,7 +43,8 @@ TEST_F(LoopManagerTest, FixedUpdate) {
// Test finished
}
-TEST_F(LoopManagerTest, ScaledFixedUpdate) {
+
+TEST_F(DISABLED_LoopManagerTest, ScaledFixedUpdate) {
// Arrange
test_loop.loop_timer.set_target_framerate(60);
@@ -64,7 +65,8 @@ TEST_F(LoopManagerTest, ScaledFixedUpdate) {
// Test finished
}
-TEST_F(LoopManagerTest, ShutDown) {
+
+TEST_F(DISABLED_LoopManagerTest, ShutDown) {
// Arrange
test_loop.loop_timer.set_target_framerate(60);
// Start the loop in a separate thread
diff --git a/src/test/LoopTimerTest.cpp b/src/test/LoopTimerTest.cpp
index c468567..6391076 100644
--- a/src/test/LoopTimerTest.cpp
+++ b/src/test/LoopTimerTest.cpp
@@ -1,10 +1,13 @@
#include <chrono>
#include <gtest/gtest.h>
#include <thread>
+
#define private public
#define protected public
+
#include <crepe/manager/LoopTimerManager.h>
#include <crepe/manager/Mediator.h>
+
using namespace std::chrono;
using namespace crepe;
@@ -57,7 +60,7 @@ TEST_F(LoopTimerTest, DeltaTimeCalculation) {
ASSERT_NEAR(delta_time.count(), elapsed_time, 1);
}
-TEST_F(LoopTimerTest, getCurrentTime) {
+TEST_F(LoopTimerTest, DISABLED_getCurrentTime) {
// Set the target FPS to 60 (16.67 ms per frame)
loop_timer.set_target_framerate(60);
diff --git a/src/test/PhysicsTest.cpp b/src/test/PhysicsTest.cpp
index 43d2931..3afb3c7 100644
--- a/src/test/PhysicsTest.cpp
+++ b/src/test/PhysicsTest.cpp
@@ -3,6 +3,8 @@
#include <crepe/api/Rigidbody.h>
#include <crepe/api/Transform.h>
#include <crepe/manager/ComponentManager.h>
+#include <crepe/manager/LoopTimerManager.h>
+#include <crepe/manager/Mediator.h>
#include <crepe/system/PhysicsSystem.h>
#include <gtest/gtest.h>
@@ -16,6 +18,7 @@ class PhysicsTest : public ::testing::Test {
public:
ComponentManager component_manager{m};
PhysicsSystem system{m};
+ LoopTimerManager loop_timer{m};
void SetUp() override {
ComponentManager & mgr = this->component_manager;
@@ -27,7 +30,7 @@ public:
.mass = 1,
.gravity_scale = 1,
.body_type = Rigidbody::BodyType::DYNAMIC,
- .max_linear_velocity = vec2{10, 10},
+ .max_linear_velocity = 10,
.max_angular_velocity = 10,
.constraints = {0, 0},
});
@@ -55,39 +58,40 @@ TEST_F(PhysicsTest, gravity) {
EXPECT_EQ(transform.position.y, 0);
system.update();
- EXPECT_EQ(transform.position.y, 1);
+ EXPECT_NEAR(transform.position.y, 0.0004, 0.0001);
system.update();
- EXPECT_EQ(transform.position.y, 3);
+ EXPECT_NEAR(transform.position.y, 0.002, 0.001);
}
TEST_F(PhysicsTest, max_velocity) {
ComponentManager & mgr = this->component_manager;
vector<reference_wrapper<Rigidbody>> rigidbodies = mgr.get_components_by_id<Rigidbody>(0);
Rigidbody & rigidbody = rigidbodies.front().get();
+ rigidbody.data.gravity_scale = 0;
ASSERT_FALSE(rigidbodies.empty());
EXPECT_EQ(rigidbody.data.linear_velocity.y, 0);
rigidbody.add_force_linear({100, 100});
rigidbody.add_force_angular(100);
system.update();
- EXPECT_EQ(rigidbody.data.linear_velocity.y, 10);
- EXPECT_EQ(rigidbody.data.linear_velocity.x, 10);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.y, 7.07, 0.01);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.x, 7.07, 0.01);
EXPECT_EQ(rigidbody.data.angular_velocity, 10);
rigidbody.add_force_linear({-100, -100});
rigidbody.add_force_angular(-100);
system.update();
- EXPECT_EQ(rigidbody.data.linear_velocity.y, -10);
- EXPECT_EQ(rigidbody.data.linear_velocity.x, -10);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.y, -7.07, 0.01);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.x, -7.07, 0.01);
EXPECT_EQ(rigidbody.data.angular_velocity, -10);
}
TEST_F(PhysicsTest, movement) {
- Config::get_instance().physics.gravity = 0;
ComponentManager & mgr = this->component_manager;
vector<reference_wrapper<Rigidbody>> rigidbodies = mgr.get_components_by_id<Rigidbody>(0);
Rigidbody & rigidbody = rigidbodies.front().get();
+ rigidbody.data.gravity_scale = 0;
vector<reference_wrapper<Transform>> transforms = mgr.get_components_by_id<Transform>(0);
const Transform & transform = transforms.front().get();
ASSERT_FALSE(rigidbodies.empty());
@@ -96,31 +100,33 @@ TEST_F(PhysicsTest, movement) {
rigidbody.add_force_linear({1, 1});
rigidbody.add_force_angular(1);
system.update();
- EXPECT_EQ(transform.position.x, 1);
- EXPECT_EQ(transform.position.y, 1);
- EXPECT_EQ(transform.rotation, 1);
+ EXPECT_NEAR(transform.position.x, 0.02, 0.001);
+ EXPECT_NEAR(transform.position.y, 0.02, 0.001);
+ EXPECT_NEAR(transform.rotation, 0.02, 0.001);
rigidbody.data.constraints = {1, 1, 1};
- EXPECT_EQ(transform.position.x, 1);
- EXPECT_EQ(transform.position.y, 1);
- EXPECT_EQ(transform.rotation, 1);
-
+ EXPECT_NEAR(transform.position.x, 0.02, 0.001);
+ EXPECT_NEAR(transform.position.y, 0.02, 0.001);
+ EXPECT_NEAR(transform.rotation, 0.02, 0.001);
+ rigidbody.data.constraints = {0, 0, 0};
rigidbody.data.linear_velocity_coefficient.x = 0.5;
rigidbody.data.linear_velocity_coefficient.y = 0.5;
rigidbody.data.angular_velocity_coefficient = 0.5;
system.update();
- EXPECT_EQ(rigidbody.data.linear_velocity.x, 0.5);
- EXPECT_EQ(rigidbody.data.linear_velocity.y, 0.5);
- EXPECT_EQ(rigidbody.data.angular_velocity, 0.5);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.x, 0.98, 0.01);
+ EXPECT_NEAR(rigidbody.data.linear_velocity.y, 0.98, 0.01);
+ EXPECT_NEAR(rigidbody.data.angular_velocity, 0.98, 0.01);
rigidbody.data.constraints = {1, 1, 0};
rigidbody.data.angular_velocity_coefficient = 0;
rigidbody.data.max_angular_velocity = 1000;
rigidbody.data.angular_velocity = 360;
system.update();
- EXPECT_EQ(transform.rotation, 1);
+ EXPECT_NEAR(transform.rotation, 7.24, 0.01);
rigidbody.data.angular_velocity = -360;
system.update();
- EXPECT_EQ(transform.rotation, 1);
+ EXPECT_NEAR(transform.rotation, 0.04, 0.001);
+ system.update();
+ EXPECT_NEAR(transform.rotation, 352.84, 0.01);
}
diff --git a/src/test/Profiling.cpp b/src/test/Profiling.cpp
index cc4c637..35f52dc 100644
--- a/src/test/Profiling.cpp
+++ b/src/test/Profiling.cpp
@@ -17,6 +17,7 @@
#include <crepe/api/Rigidbody.h>
#include <crepe/api/Script.h>
#include <crepe/api/Transform.h>
+#include <crepe/facade/SDLContext.h>
#include <crepe/manager/ComponentManager.h>
#include <crepe/manager/EventManager.h>
#include <crepe/system/CollisionSystem.h>