80
80
TEST(TestPointerBarrier, HandleHitNotifyEvents)
82
MockPointerBarrier pb;
82
auto pb = std::make_shared<MockPointerBarrier>();
84
84
XIBarrierEvent ev = GetGenericEvent(0xdeadbeef);
86
86
bool got_event = false;
88
pb.barrier_event.connect([&] (PointerBarrierWrapper* pbw, BarrierEvent::Ptr bev) {
88
pb->barrier_event.connect([&] (PointerBarrierWrapper::Ptr const& pbw, BarrierEvent::Ptr bev) {
89
89
if (!pbw->IsFirstEvent())
93
EXPECT_EQ(pbw.get(), pb.get());
94
94
EXPECT_EQ(bev->x, ev.root_x);
95
95
EXPECT_EQ(bev->y, ev.root_y);
96
EXPECT_EQ(bev->velocity, 600 * pb.max_velocity_multiplier);
96
EXPECT_EQ(bev->velocity, 600 * pb->max_velocity_multiplier);
97
97
EXPECT_EQ(bev->event_id, ev.eventid);
101
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
101
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
102
102
EXPECT_FALSE(got_event);
104
Utils::WaitForTimeoutMSec(pb.smoothing());
104
Utils::WaitForTimeoutMSec(pb->smoothing());
106
106
EXPECT_TRUE(got_event);
109
109
TEST(TestPointerBarrier, HandleHitNotifyReleasedEvents)
111
MockPointerBarrier pb;
111
auto pb = std::make_shared<MockPointerBarrier>();
112
pb->threshold = 1000;
113
113
XIBarrierEvent ev = GetGenericEvent(0xabba);
114
114
bool got_event = false;
116
pb.barrier_event.connect([&] (PointerBarrierWrapper* pbw, BarrierEvent::Ptr bev) {
116
pb->barrier_event.connect([&] (PointerBarrierWrapper::Ptr const& pbw, BarrierEvent::Ptr bev) {
117
117
got_event = true;
119
EXPECT_EQ(pbw.get(), pb.get());
120
120
EXPECT_EQ(bev->x, ev.root_x);
121
121
EXPECT_EQ(bev->y, ev.root_y);
122
122
EXPECT_GT(bev->velocity, 0);
123
123
EXPECT_EQ(bev->event_id, ev.eventid);
127
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
127
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
128
128
EXPECT_TRUE(got_event);
131
131
TEST(TestPointerBarrier, ReciveFirstEvent)
133
MockPointerBarrier pb;
133
auto pb = std::make_shared<MockPointerBarrier>();
134
pb->threshold = 1000;
135
135
XIBarrierEvent ev = GetGenericEvent(0xabba);
137
137
bool first_is_true = false;
139
pb.barrier_event.connect([&] (PointerBarrierWrapper* pbw, BarrierEvent::Ptr bev) {
139
pb->barrier_event.connect([&] (PointerBarrierWrapper::Ptr const& pbw, BarrierEvent::Ptr bev) {
140
140
first_is_true = true;
143
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
143
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
144
144
EXPECT_TRUE(first_is_true);
147
147
TEST(TestPointerBarrier, ReciveSecondEventFirstFalse)
149
MockPointerBarrier pb;
149
auto pb = std::make_shared<MockPointerBarrier>();
150
pb->threshold = 1000;
151
151
XIBarrierEvent ev = GetGenericEvent(0xabba);
152
152
int events_recived = 0;
154
pb.barrier_event.connect([&] (PointerBarrierWrapper* pbw, BarrierEvent::Ptr bev) {
154
pb->barrier_event.connect([&] (PointerBarrierWrapper::Ptr const& pbw, BarrierEvent::Ptr bev) {
155
155
events_recived++;
157
157
if (events_recived == 1)
160
160
EXPECT_FALSE(pbw->IsFirstEvent());
163
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
163
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
165
Utils::WaitForTimeoutMSec(pb.smoothing());
165
Utils::WaitForTimeoutMSec(pb->smoothing());
167
167
EXPECT_EQ(events_recived, 2);
170
170
TEST(TestPointerBarrier, DontReleaseBarrierOnEmptyDTime)
172
MockPointerBarrier pb;
172
auto pb = std::make_shared<MockPointerBarrier>();
173
pb->threshold = 1000;
174
174
XIBarrierEvent ev = GetGenericEvent(0xabba);
178
178
InSequence sequence;
179
EXPECT_CALL(pb, ReleaseBarrier(0xabba)).Times(0);
179
EXPECT_CALL(*pb, ReleaseBarrier(0xabba)).Times(0);
182
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
182
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
184
Utils::WaitForTimeoutMSec(pb.smoothing());
184
Utils::WaitForTimeoutMSec(pb->smoothing());
187
187
TEST(TestPointerBarrier, ReleaseBarrierIfOverThreshold)
189
MockPointerBarrier pb;
189
auto pb = std::make_shared<MockPointerBarrier>();
191
191
XIBarrierEvent ev = GetGenericEvent(0xabba);
194
194
InSequence sequence;
195
EXPECT_CALL(pb, ReleaseBarrier(0xabba)).Times(1);
195
EXPECT_CALL(*pb, ReleaseBarrier(0xabba)).Times(1);
198
EXPECT_TRUE(pb.HandleBarrierEvent(&ev));
198
EXPECT_TRUE(pb->HandleBarrierEvent(&ev));
200
Utils::WaitForTimeoutMSec(pb.smoothing());
200
Utils::WaitForTimeoutMSec(pb->smoothing());