#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 EventScript = std::vector; void run_script(routing::Router& router, routing::State expected, EventScript script) { for(auto ev : script) { router.event(ev); } REQUIRE(router.in_state(expected)); } TEST_CASE("basic router operations test", "[event_router]") { 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, }); }