16
16
* Authored by: Kevin DuBois <kevin.dubois@canonical.com>
19
#define MIR_INCLUDE_DEPRECATED_EVENT_HEADER
19
#include "mir_protobuf.pb.h"
20
#include "mir_protobuf_wire.pb.h"
21
22
#include "src/server/frontend/message_sender.h"
22
23
#include "src/server/frontend/event_sender.h"
23
#include "mir_test_doubles/stub_display_configuration.h"
25
#include "mir/events/event_builders.h"
24
27
#include "mir_test/display_config_matchers.h"
25
28
#include "mir_test/fake_shared.h"
29
#include "mir_test_doubles/stub_display_configuration.h"
27
#include "mir_protobuf.pb.h"
28
#include "mir_protobuf_wire.pb.h"
29
31
#include <gtest/gtest.h>
30
32
#include <gmock/gmock.h>
32
namespace mt=mir::test;
33
namespace mtd=mir::test::doubles;
34
namespace mf=mir::frontend;
35
namespace mfd=mf::detail;
36
namespace geom=mir::geometry;
34
namespace mt = mir::test;
35
namespace mtd = mir::test::doubles;
36
namespace mf = mir::frontend;
37
namespace mfd = mf::detail;
38
namespace mev = mir::events;
39
namespace geom = mir::geometry;
42
45
MOCK_METHOD3(send, void(char const*, size_t, mfd::FdSets const&));
47
struct EventSender : public testing::Test
50
: event_sender(mt::fake_shared(mock_msg_sender))
53
MockMsgSender mock_msg_sender;
54
mfd::EventSender event_sender;
46
TEST(TestEventSender, display_send)
58
TEST_F(EventSender, display_send)
48
60
using namespace testing;
50
62
mtd::StubDisplayConfig config;
51
MockMsgSender mock_msg_sender;
53
64
auto msg_validator = [&config](char const* data, size_t len){
54
65
mir::protobuf::wire::Result wire;
64
75
.WillOnce(WithArgs<0,1>(Invoke(msg_validator)));
66
mfd::EventSender sender(mt::fake_shared(mock_msg_sender));
68
sender.handle_display_config_change(config);
77
event_sender.handle_display_config_change(config);
71
TEST(TestEventSender, sends_noninput_events)
80
TEST_F(EventSender, sends_noninput_events)
73
82
using namespace testing;
75
auto msg_sender = std::make_shared<MockMsgSender>();
76
mfd::EventSender event_sender(msg_sender);
79
memset(&event, 0, sizeof event);
81
EXPECT_CALL(*msg_sender, send(_, _, _))
84
auto surface_ev = mev::make_event(mf::SurfaceId{1}, mir_surface_attrib_focus, mir_surface_focused);
85
auto resize_ev = mev::make_event(mf::SurfaceId{1}, {10, 10});
87
EXPECT_CALL(mock_msg_sender, send(_, _, _))
83
event.type = mir_event_type_surface;
84
event_sender.handle_event(event);
85
event.type = mir_event_type_resize;
86
event_sender.handle_event(event);
89
event_sender.handle_event(*surface_ev);
90
event_sender.handle_event(*resize_ev);
89
TEST(TestEventSender, never_sends_input_events)
93
TEST_F(EventSender, never_sends_input_events)
91
95
using namespace testing;
93
auto msg_sender = std::make_shared<MockMsgSender>();
94
mfd::EventSender event_sender(msg_sender);
97
memset(&event, 0, sizeof event);
99
EXPECT_CALL(*msg_sender, send(_, _, _))
97
auto ev = mev::make_event(MirInputDeviceId(), 0, MirKeyboardAction(),
98
0, 0, MirInputEventModifiers());
100
EXPECT_CALL(mock_msg_sender, send(_, _, _))
101
event.type = mir_event_type_key;
102
event_sender.handle_event(event);
103
event.type = mir_event_type_motion;
104
event_sender.handle_event(event);
102
event_sender.handle_event(*ev);