You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.1 KiB
57 lines
1.1 KiB
#include <catch2/catch_test_macros.hpp>
|
|
#include <fmt/core.h>
|
|
#include <string>
|
|
#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<routing::Event>;
|
|
|
|
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,
|
|
});
|
|
}
|
|
|