diff --git a/FlippR-Driver/Matrix_Config.json b/FlippR-Driver/Input_Config.json similarity index 100% rename from FlippR-Driver/Matrix_Config.json rename to FlippR-Driver/Input_Config.json diff --git a/FlippR-Driver/Input_Matrix_Config.json b/FlippR-Driver/Input_Matrix_Config.json new file mode 100644 index 0000000..de13801 --- /dev/null +++ b/FlippR-Driver/Input_Matrix_Config.json @@ -0,0 +1,16 @@ +{ + "input_matrix" : + [ + { + "name" : "event_01", + "address" : 123, + "priority" : 1 + }, + + { + "name" : "event_02", + "address" : 2, + "priority" : 2 + }, + ] +} diff --git a/FlippR-Driver/src/input/InputDriver.hpp b/FlippR-Driver/src/input/InputDriver.hpp index 4b82aa2..98ac6d1 100644 --- a/FlippR-Driver/src/input/InputDriver.hpp +++ b/FlippR-Driver/src/input/InputDriver.hpp @@ -8,6 +8,8 @@ #ifndef SRC_INPUT_INPUTDRIVER_HPP_ #define SRC_INPUT_INPUTDRIVER_HPP_ +#include "EventNotifier.h" + namespace Input { diff --git a/FlippR-Driver/src/tests/input/TestInputDriver.cpp b/FlippR-Driver/src/tests/input/TestInputDriver.cpp new file mode 100644 index 0000000..8738a9a --- /dev/null +++ b/FlippR-Driver/src/tests/input/TestInputDriver.cpp @@ -0,0 +1,70 @@ +/* + * TestInputDriver.cpp + * + * Created on: May 31, 2018 + * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht + */ + +#include "../catch.hpp" + +#include "../../src/input/InputDriver.hpp" + +#include "mocks/EventHandlerMock.hpp" +#include "mocks/EventNotifierMock.hpp" + +#define private public + +SCENARIO("An InputDriver gets created", "[construction}") +{ + GIVEN("An EventNotifier") + { + Input::EventNotifierMock event_notifier; + + WHEN("The InputDriver gets created") + { + Input::InputDriver input_driver(&event_notifier); + + THEN("It saved the EventNotifier") + { + REQUIRE(input_driver.event_notifier == &event_notifier); + } + } + } +} + +SCENARIO("An EventHandler [un]registers at the driver", "[[un]register]") +{ + GIVEN("An InputDriver, EventHandler and an EventNotifier") + { + + Input::EventHandler event_handler = Input::EventHandlerMock(); + Input::EventNotifierMock event_notifier; + + Input::InputDriver input_driver(&event_notifier); + + REQUIRE(event_notifier.registered = false); + + WHEN("The EventHandler registers at the driver") + { + input_driver.register_event_handler(&event_handler); + + THEN("The register_event_handler at the event_notifier gets called") + { + REQUIRE(event_notifier.registered == true); + } + } + + WHEN("The EventHandler unregisters at the driver") + { + REQUIRE(event_notifier.registered = true); + input_driver.unregister_event_handler(&event_handler); + + THEN("The unregister_event_handler at the event_notifier gets called") + { + REQUIRE(event_notifier.registered == false); + } + } + } +} + + diff --git a/FlippR-Driver/src/tests/input/mocks/EventHandlerMock.hpp b/FlippR-Driver/src/tests/input/mocks/EventHandlerMock.hpp new file mode 100644 index 0000000..f917c9b --- /dev/null +++ b/FlippR-Driver/src/tests/input/mocks/EventHandlerMock.hpp @@ -0,0 +1,27 @@ +/* + * EventHandlerMock.hpp + * + * Created on: May 31, 2018 + * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht + */ + +#ifndef SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_ +#define SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_ + +#include "../../../src/input/EventHandler.hpp" + +namespace Input +{ + +class EventHandlerMock : EventHandler +{ +public: + void handle(Event& event) override + { + + } +}; + +} + +#endif /* SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_ */ diff --git a/FlippR-Driver/src/tests/input/mocks/EventNotifierMock.hpp b/FlippR-Driver/src/tests/input/mocks/EventNotifierMock.hpp new file mode 100644 index 0000000..8c00a79 --- /dev/null +++ b/FlippR-Driver/src/tests/input/mocks/EventNotifierMock.hpp @@ -0,0 +1,39 @@ +/* + * EventNotfierMock.hpp + * + * Created on: May 31, 2018 + * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht + */ + +#ifndef SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_ +#define SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_ + +#include "../../../src/input/EventNotifier.h" + +namespace Input +{ + +class EventNotifierMock : EventNotifier +{ +public: + EventNotifierMock() : + registered(false) + {} + + void register_event_handler(EventHandler* handler) override + { + registered = true; + } + + void unregister_event_handler(EventHandler* handler) override + { + registered = false; + } + +public: + bool registered; +}; + +} + +#endif /* SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_ */