diff options
Diffstat (limited to 'src/test/inputTest.cpp')
-rw-r--r-- | src/test/inputTest.cpp | 139 |
1 files changed, 132 insertions, 7 deletions
diff --git a/src/test/inputTest.cpp b/src/test/inputTest.cpp index 0f02410..6b820ee 100644 --- a/src/test/inputTest.cpp +++ b/src/test/inputTest.cpp @@ -1,10 +1,18 @@ +#include <gtest/gtest.h> +#define protected public #include <SDL2/SDL.h> #include <SDL2/SDL_keycode.h> #include "system/InputSystem.h" +#include <crepe/ComponentManager.h> #include "api/EventManager.h" #include "api/KeyCodes.h" #include <gmock/gmock.h> -#include <gtest/gtest.h> +#include <crepe/ComponentManager.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Metadata.h> +#include <crepe/api/Transform.h> +#include <crepe/api/Vector2.h> +#include <crepe/api/Button.h> using namespace std; using namespace std::chrono_literals; @@ -12,14 +20,17 @@ using namespace crepe; class InputTest : public ::testing::Test { public: -InputSystem input_system; +ComponentManager mgr{}; +InputSystem input_system{mgr}; + EventManager& event_manager = EventManager::get_instance(); protected: void SetUp() override { + event_manager.clear(); } void TearDown() override { - + event_manager.clear(); } void simulate_mouse_click(int mouse_x, int mouse_y, Uint8 mouse_button) { SDL_Event event; @@ -41,13 +52,127 @@ void simulate_mouse_click(int mouse_x, int mouse_y, Uint8 mouse_button) { }; -TEST_F(InputTest, KeyDown) { - +TEST_F(InputTest, MouseDown) { + bool mouse_triggered = false; + EventHandler<MousePressEvent> on_mouse_click = [&](const MousePressEvent& event) { + // Handle the mouse click event here + mouse_triggered = true; + EXPECT_EQ(event.mouse_x, 10); + EXPECT_EQ(event.mouse_y, 10); + EXPECT_EQ(event.button, MouseButton::LEFT_MOUSE); + return false; + }; + event_manager.subscribe<MousePressEvent>(on_mouse_click); SDL_Event event; SDL_zero(event); event.type = SDL_MOUSEBUTTONDOWN; event.button.x = 10; event.button.y = 10; - event.button.button = mouse_bu; - SDL_PushEvent(&event); // Push event into the SDL event queue + event.button.button = SDL_BUTTON_LEFT; + SDL_PushEvent(&event); + EXPECT_TRUE(mouse_triggered); +} + +TEST_F(InputTest, MouseUp) { + EventHandler<MouseReleaseEvent> on_mouse_click = [&](const MouseReleaseEvent& event) { + // Handle the mouse click event here + EXPECT_EQ(event.mouse_x, 10); + EXPECT_EQ(event.mouse_y, 10); + EXPECT_EQ(event.button, MouseButton::LEFT_MOUSE); + return false; + }; + event_manager.subscribe<MouseReleaseEvent>(on_mouse_click); + SDL_Event event; + SDL_zero(event); + event.type = SDL_MOUSEBUTTONUP; + event.button.x = 10; + event.button.y = 10; + event.button.button = SDL_BUTTON_LEFT; + SDL_PushEvent(&event); +} +TEST_F(InputTest, MouseUp) { + EventHandler<MouseReleaseEvent> on_mouse_click = [&](const MouseReleaseEvent& event) { + // Handle the mouse click event here + EXPECT_EQ(event.mouse_x, 10); + EXPECT_EQ(event.mouse_y, 10); + EXPECT_EQ(event.button, MouseButton::LEFT_MOUSE); + return false; + }; + event_manager.subscribe<MouseReleaseEvent>(on_mouse_click); + SDL_Event event; + SDL_zero(event); + event.type = SDL_MOUSEBUTTONUP; + event.button.x = 10; + event.button.y = 10; + event.button.button = SDL_BUTTON_LEFT; + SDL_PushEvent(&event); +} +TEST_F(InputTest, KeyDown) { + EventHandler<KeyPressEvent> on_mouse_click = [&](const KeyPressEvent& event) { + // Handle the mouse click event here + EXPECT_EQ(event.key, Keycode::B); + EXPECT_EQ(event.repeat, true); + return false; + }; + event_manager.subscribe<KeyPressEvent>(on_mouse_click); + SDL_Event event; + SDL_zero(event); + event.type = SDL_KEYUP; + event.button.button = SDL_BUTTON_LEFT; + event.key.repeat = 1; + SDL_PushEvent(&event); +} +TEST_F(InputTest, KeyUp) { + EventHandler<KeyReleaseEvent> on_mouse_click = [&](const KeyReleaseEvent& event) { + // Handle the mouse click event here + EXPECT_EQ(event.key, Keycode::B); + return false; + }; + event_manager.subscribe<KeyReleaseEvent>(on_mouse_click); + SDL_Event event; + SDL_zero(event); + event.type = SDL_KEYUP; + event.button.button = SDL_BUTTON_LEFT; + SDL_PushEvent(&event); +} +TEST_F(InputTest, KeyClick) { + GameObject obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1); + Button test_button; + bool button_clicked = false; + test_button.active = true; + test_button.width = 100; + test_button.height = 100; + std::function<void()> on_click = [&]() { + button_clicked = true; + }; + test_button.on_click = on_click; + test_button.is_pressed = false; + test_button.is_toggle = false; + obj.add_component<Button>(); + EventHandler<KeyReleaseEvent> on_mouse_click = [&](const KeyReleaseEvent& event) { + EXPECT_EQ(event.key, Keycode::B); + return false; + }; + event_manager.subscribe<KeyReleaseEvent>(on_mouse_click); + SDL_Event event; + SDL_zero(event); + event.type = SDL_KEYUP; + event.button.button = SDL_BUTTON_LEFT; + SDL_PushEvent(&event); +} +TEST_F(InputTest, testButton) { + GameObject obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1); + Button test_button; + bool button_clicked = false; + test_button.active = true; + test_button.width = 100; + test_button.height = 100; + std::function<void()> on_click = [&]() { + button_clicked = true; + }; + test_button.on_click = on_click; + test_button.is_pressed = false; + test_button.is_toggle = false; + obj.add_component<Button>(); + this->simulate_mouse_click(10,10,MouseButton::LEFT_MOUSE); } |