#include #include #include #include "gui/event_router.hpp" using namespace fmt; using namespace gui; using enum gui::routing::Event; using enum gui::routing::State; using namespace fuc2; namespace event_router_tests { using EventScript = std::vector; void run_script(routing::Router& router, routing::State expected, EventScript script) { for(auto ev : script) { router.event(ev); } CHECK(router.in_state(expected)); } void test_basic_router_operations_test() { routing::Router router; // start goes to idle run_script(router, IDLE, { STARTED }); // simulate drag and drop run_script(router, IDLE, { MOUSE_DOWN, MOUSE_MOVE, MOUSE_UP, KEY_PRESS }); // moving the mouse outside dnd run_script(router, IDLE, { MOUSE_MOVE, KEY_PRESS, MOUSE_MOVE }); // regular mouse click run_script(router, IDLE, { MOUSE_DOWN, MOUSE_UP }); // possible bad key press in a move? run_script(router, IDLE, { MOUSE_DOWN, MOUSE_MOVE, KEY_PRESS, MOUSE_UP, }); } fuc2::Set TESTS{ .name="event_router", .tests={ TEST(test_basic_router_operations_test), } }; }