138 std::unique_ptr<PointerDataPacket> packet) {
139 for (
size_t i = 0; i < packet->GetLength(); i++) {
140 PointerData pointer_data = packet->GetPointerData(i);
141 output.push_back(pointer_data);
146TEST(PointerDataPacketConverterTest, CanConvertPointerDataPacket) {
148 auto packet = std::make_unique<PointerDataPacket>(6);
151 packet->SetPointerData(0,
data);
153 packet->SetPointerData(1,
data);
155 packet->SetPointerData(2,
data);
157 packet->SetPointerData(3,
data);
159 packet->SetPointerData(4,
data);
162 packet->SetPointerData(5,
data);
163 auto converted_packet = converter.Convert(std::move(packet));
165 std::vector<PointerData>
result;
168 ASSERT_EQ(
result.size(), (
size_t)6);
170 ASSERT_EQ(
result[0].synthesized, 0);
173 ASSERT_EQ(
result[1].synthesized, 0);
174 ASSERT_EQ(
result[1].physical_delta_x, 3.0);
175 ASSERT_EQ(
result[1].physical_delta_y, 0.0);
178 ASSERT_EQ(
result[2].pointer_identifier, 1);
179 ASSERT_EQ(
result[2].synthesized, 0);
182 ASSERT_EQ(
result[3].pointer_identifier, 1);
183 ASSERT_EQ(
result[3].synthesized, 0);
184 ASSERT_EQ(
result[3].physical_delta_x, 0.0);
185 ASSERT_EQ(
result[3].physical_delta_y, 4.0);
188 ASSERT_EQ(
result[4].pointer_identifier, 1);
189 ASSERT_EQ(
result[4].synthesized, 0);
192 ASSERT_EQ(
result[5].synthesized, 0);
195TEST(PointerDataPacketConverterTest, CanSynthesizeDownAndUp) {
197 auto packet = std::make_unique<PointerDataPacket>(4);
200 packet->SetPointerData(0,
data);
202 packet->SetPointerData(1,
data);
204 packet->SetPointerData(2,
data);
207 packet->SetPointerData(3,
data);
208 auto converted_packet = converter.Convert(std::move(packet));
210 std::vector<PointerData>
result;
213 ASSERT_EQ(
result.size(), (
size_t)6);
215 ASSERT_EQ(
result[0].synthesized, 0);
219 ASSERT_EQ(
result[1].synthesized, 1);
220 ASSERT_EQ(
result[1].physical_delta_x, 3.0);
221 ASSERT_EQ(
result[1].physical_delta_y, 0.0);
222 ASSERT_EQ(
result[1].buttons, 0);
225 ASSERT_EQ(
result[2].pointer_identifier, 1);
226 ASSERT_EQ(
result[2].synthesized, 0);
227 ASSERT_EQ(
result[2].buttons, 1);
231 ASSERT_EQ(
result[3].pointer_identifier, 1);
232 ASSERT_EQ(
result[3].synthesized, 1);
233 ASSERT_EQ(
result[3].physical_delta_x, 0.0);
234 ASSERT_EQ(
result[3].physical_delta_y, 4.0);
235 ASSERT_EQ(
result[3].buttons, 1);
238 ASSERT_EQ(
result[4].pointer_identifier, 1);
239 ASSERT_EQ(
result[4].synthesized, 0);
240 ASSERT_EQ(
result[4].buttons, 0);
243 ASSERT_EQ(
result[5].synthesized, 0);
246TEST(PointerDataPacketConverterTest, CanUpdatePointerIdentifier) {
248 auto packet = std::make_unique<PointerDataPacket>(7);
251 packet->SetPointerData(0,
data);
253 packet->SetPointerData(1,
data);
255 packet->SetPointerData(2,
data);
257 packet->SetPointerData(3,
data);
259 packet->SetPointerData(4,
data);
261 packet->SetPointerData(5,
data);
264 packet->SetPointerData(6,
data);
265 auto converted_packet = converter.Convert(std::move(packet));
267 std::vector<PointerData>
result;
270 ASSERT_EQ(
result.size(), (
size_t)7);
272 ASSERT_EQ(
result[0].synthesized, 0);
275 ASSERT_EQ(
result[1].pointer_identifier, 1);
276 ASSERT_EQ(
result[1].synthesized, 0);
279 ASSERT_EQ(
result[2].pointer_identifier, 1);
280 ASSERT_EQ(
result[2].synthesized, 0);
284 ASSERT_EQ(
result[3].pointer_identifier, 2);
285 ASSERT_EQ(
result[3].synthesized, 0);
288 ASSERT_EQ(
result[4].pointer_identifier, 2);
289 ASSERT_EQ(
result[4].synthesized, 0);
290 ASSERT_EQ(
result[4].physical_delta_x, 3.0);
291 ASSERT_EQ(
result[4].physical_delta_y, 0.0);
294 ASSERT_EQ(
result[5].pointer_identifier, 2);
295 ASSERT_EQ(
result[5].synthesized, 0);
298 ASSERT_EQ(
result[6].synthesized, 0);
301TEST(PointerDataPacketConverterTest, AlwaysForwardMoveEvent) {
303 auto packet = std::make_unique<PointerDataPacket>(4);
306 packet->SetPointerData(0,
data);
308 packet->SetPointerData(1,
data);
311 packet->SetPointerData(2,
data);
313 packet->SetPointerData(3,
data);
315 auto converted_packet = converter.Convert(std::move(packet));
317 std::vector<PointerData>
result;
320 ASSERT_EQ(
result.size(), (
size_t)4);
322 ASSERT_EQ(
result[0].synthesized, 0);
325 ASSERT_EQ(
result[1].pointer_identifier, 1);
326 ASSERT_EQ(
result[1].synthesized, 0);
330 ASSERT_EQ(
result[2].pointer_identifier, 1);
331 ASSERT_EQ(
result[2].synthesized, 0);
334 ASSERT_EQ(
result[3].pointer_identifier, 1);
335 ASSERT_EQ(
result[3].synthesized, 0);
338TEST(PointerDataPacketConverterTest, CanWorkWithDifferentDevices) {
340 auto packet = std::make_unique<PointerDataPacket>(12);
343 packet->SetPointerData(0,
data);
345 packet->SetPointerData(1,
data);
347 packet->SetPointerData(2,
data);
349 packet->SetPointerData(3,
data);
351 packet->SetPointerData(4,
data);
353 packet->SetPointerData(5,
data);
355 packet->SetPointerData(6,
data);
357 packet->SetPointerData(7,
data);
359 packet->SetPointerData(8,
data);
361 packet->SetPointerData(9,
data);
364 packet->SetPointerData(10,
data);
367 packet->SetPointerData(11,
data);
368 auto converted_packet = converter.Convert(std::move(packet));
370 std::vector<PointerData>
result;
373 ASSERT_EQ(
result.size(), (
size_t)12);
376 ASSERT_EQ(
result[0].synthesized, 0);
380 ASSERT_EQ(
result[1].pointer_identifier, 1);
381 ASSERT_EQ(
result[1].synthesized, 0);
385 ASSERT_EQ(
result[2].synthesized, 0);
389 ASSERT_EQ(
result[3].pointer_identifier, 2);
390 ASSERT_EQ(
result[3].synthesized, 0);
394 ASSERT_EQ(
result[4].pointer_identifier, 1);
395 ASSERT_EQ(
result[4].synthesized, 0);
399 ASSERT_EQ(
result[5].pointer_identifier, 3);
400 ASSERT_EQ(
result[5].synthesized, 0);
404 ASSERT_EQ(
result[6].pointer_identifier, 2);
405 ASSERT_EQ(
result[6].synthesized, 0);
406 ASSERT_EQ(
result[6].physical_delta_x, 0.0);
407 ASSERT_EQ(
result[6].physical_delta_y, 4.0);
411 ASSERT_EQ(
result[7].pointer_identifier, 3);
412 ASSERT_EQ(
result[7].synthesized, 0);
413 ASSERT_EQ(
result[7].physical_delta_x, 3.0);
414 ASSERT_EQ(
result[7].physical_delta_y, 0.0);
418 ASSERT_EQ(
result[8].pointer_identifier, 2);
419 ASSERT_EQ(
result[8].synthesized, 0);
423 ASSERT_EQ(
result[9].pointer_identifier, 3);
424 ASSERT_EQ(
result[9].synthesized, 0);
428 ASSERT_EQ(
result[10].synthesized, 0);
432 ASSERT_EQ(
result[11].synthesized, 0);
435TEST(PointerDataPacketConverterTest, CanSynthesizeAdd) {
437 auto packet = std::make_unique<PointerDataPacket>(2);
441 packet->SetPointerData(0,
data);
443 packet->SetPointerData(1,
data);
444 auto converted_packet = converter.Convert(std::move(packet));
446 std::vector<PointerData>
result;
449 ASSERT_EQ(
result.size(), (
size_t)4);
452 ASSERT_EQ(
result[0].physical_x, 330.0);
453 ASSERT_EQ(
result[0].physical_y, 450.0);
454 ASSERT_EQ(
result[0].synthesized, 1);
455 ASSERT_EQ(
result[0].buttons, 0);
458 ASSERT_EQ(
result[1].physical_x, 330.0);
459 ASSERT_EQ(
result[1].physical_y, 450.0);
460 ASSERT_EQ(
result[1].synthesized, 0);
461 ASSERT_EQ(
result[1].buttons, 1);
465 ASSERT_EQ(
result[2].physical_delta_x, -330.0);
466 ASSERT_EQ(
result[2].physical_delta_y, -450.0);
467 ASSERT_EQ(
result[2].physical_x, 0.0);
468 ASSERT_EQ(
result[2].physical_y, 0.0);
469 ASSERT_EQ(
result[2].synthesized, 1);
470 ASSERT_EQ(
result[2].buttons, 1);
473 ASSERT_EQ(
result[3].physical_x, 0.0);
474 ASSERT_EQ(
result[3].physical_y, 0.0);
475 ASSERT_EQ(
result[3].synthesized, 0);
476 ASSERT_EQ(
result[3].buttons, 0);
479TEST(PointerDataPacketConverterTest, CanHandleThreeFingerGesture) {
483 std::vector<PointerData>
result;
485 auto packet = std::make_unique<PointerDataPacket>(1);
487 packet->SetPointerData(0,
data);
488 auto converted_packet = converter.Convert(std::move(packet));
491 packet = std::make_unique<PointerDataPacket>(1);
494 packet->SetPointerData(0,
data);
495 converted_packet = converter.Convert(std::move(packet));
498 packet = std::make_unique<PointerDataPacket>(3);
501 packet->SetPointerData(0,
data);
504 packet->SetPointerData(1,
data);
507 packet->SetPointerData(2,
data);
508 converted_packet = converter.Convert(std::move(packet));
511 ASSERT_EQ(
result.size(), (
size_t)6);
514 ASSERT_EQ(
result[0].physical_x, 0.0);
515 ASSERT_EQ(
result[0].physical_y, 0.0);
516 ASSERT_EQ(
result[0].synthesized, 1);
517 ASSERT_EQ(
result[0].buttons, 0);
521 ASSERT_EQ(
result[1].physical_x, 0.0);
522 ASSERT_EQ(
result[1].physical_y, 0.0);
523 ASSERT_EQ(
result[1].synthesized, 0);
524 ASSERT_EQ(
result[1].buttons, 1);
528 ASSERT_EQ(
result[2].physical_x, 33.0);
529 ASSERT_EQ(
result[2].physical_y, 44.0);
530 ASSERT_EQ(
result[2].synthesized, 1);
531 ASSERT_EQ(
result[2].buttons, 0);
535 ASSERT_EQ(
result[3].physical_x, 33.0);
536 ASSERT_EQ(
result[3].physical_y, 44.0);
537 ASSERT_EQ(
result[3].synthesized, 0);
538 ASSERT_EQ(
result[3].buttons, 1);
542 ASSERT_EQ(
result[4].physical_x, 33.0);
543 ASSERT_EQ(
result[4].physical_y, 44.0);
544 ASSERT_EQ(
result[4].synthesized, 0);
548 ASSERT_EQ(
result[5].physical_x, 0.0);
549 ASSERT_EQ(
result[5].physical_y, 0.0);
550 ASSERT_EQ(
result[5].synthesized, 0);
554TEST(PointerDataPacketConverterTest, CanConvertPointerSignals) {
562 auto packet = std::make_unique<PointerDataPacket>(6);
567 packet->SetPointerData(0,
data);
571 packet->SetPointerData(1,
data);
575 packet->SetPointerData(2,
data);
577 34.0, 34.0, 30.0, 0.0, 0);
578 packet->SetPointerData(3,
data);
580 49.0, 49.0, 50.0, 0.0, 0);
581 packet->SetPointerData(4,
data);
583 10.0, 20.0, 30.0, 40.0, 0);
584 packet->SetPointerData(5,
data);
585 auto converted_packet = converter.Convert(std::move(packet));
587 std::vector<PointerData>
result;
590 ASSERT_EQ(
result.size(), (
size_t)9);
594 ASSERT_EQ(
result[0].physical_x, 0.0);
595 ASSERT_EQ(
result[0].physical_y, 0.0);
596 ASSERT_EQ(
result[0].synthesized, 0);
601 ASSERT_EQ(
result[1].physical_x, 0.0);
602 ASSERT_EQ(
result[1].physical_y, 0.0);
603 ASSERT_EQ(
result[1].synthesized, 0);
608 ASSERT_EQ(
result[2].physical_x, 0.0);
609 ASSERT_EQ(
result[2].physical_y, 0.0);
610 ASSERT_EQ(
result[2].synthesized, 0);
616 ASSERT_EQ(
result[3].physical_x, 34.0);
617 ASSERT_EQ(
result[3].physical_y, 34.0);
618 ASSERT_EQ(
result[3].physical_delta_x, 34.0);
619 ASSERT_EQ(
result[3].physical_delta_y, 34.0);
620 ASSERT_EQ(
result[3].buttons, 0);
621 ASSERT_EQ(
result[3].synthesized, 1);
624 ASSERT_EQ(
result[4].signal_kind, kind);
626 ASSERT_EQ(
result[4].physical_x, 34.0);
627 ASSERT_EQ(
result[4].physical_y, 34.0);
628 ASSERT_EQ(
result[4].scroll_delta_x, 30.0);
629 ASSERT_EQ(
result[4].scroll_delta_y, 0.0);
635 ASSERT_EQ(
result[5].physical_x, 49.0);
636 ASSERT_EQ(
result[5].physical_y, 49.0);
637 ASSERT_EQ(
result[5].physical_delta_x, 49.0);
638 ASSERT_EQ(
result[5].physical_delta_y, 49.0);
639 ASSERT_EQ(
result[5].buttons, 1);
640 ASSERT_EQ(
result[5].synthesized, 1);
643 ASSERT_EQ(
result[6].signal_kind, kind);
645 ASSERT_EQ(
result[6].physical_x, 49.0);
646 ASSERT_EQ(
result[6].physical_y, 49.0);
647 ASSERT_EQ(
result[6].scroll_delta_x, 50.0);
648 ASSERT_EQ(
result[6].scroll_delta_y, 0.0);
654 ASSERT_EQ(
result[7].physical_x, 10.0);
655 ASSERT_EQ(
result[7].physical_y, 20.0);
656 ASSERT_EQ(
result[7].synthesized, 1);
659 ASSERT_EQ(
result[8].signal_kind, kind);
661 ASSERT_EQ(
result[8].physical_x, 10.0);
662 ASSERT_EQ(
result[8].physical_y, 20.0);
663 ASSERT_EQ(
result[8].scroll_delta_x, 30.0);
664 ASSERT_EQ(
result[8].scroll_delta_y, 40.0);
668TEST(PointerDataPacketConverterTest, CanConvertTrackpadGesture) {
670 auto packet = std::make_unique<PointerDataPacket>(3);
673 0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
674 packet->SetPointerData(0,
data);
676 0, 0.0, 0.0, 3.0, 4.0, 1.0, 0.0);
677 packet->SetPointerData(1,
data);
679 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
680 packet->SetPointerData(2,
data);
681 auto converted_packet = converter.Convert(std::move(packet));
683 std::vector<PointerData>
result;
686 ASSERT_EQ(
result.size(), (
size_t)4);
689 ASSERT_EQ(
result[0].synthesized, 1);
694 ASSERT_EQ(
result[1].physical_x, 0.0);
695 ASSERT_EQ(
result[1].physical_y, 0.0);
696 ASSERT_EQ(
result[1].synthesized, 0);
701 ASSERT_EQ(
result[2].physical_x, 0.0);
702 ASSERT_EQ(
result[2].physical_y, 0.0);
703 ASSERT_EQ(
result[2].pan_x, 3.0);
704 ASSERT_EQ(
result[2].pan_y, 4.0);
705 ASSERT_EQ(
result[2].pan_delta_x, 3.0);
706 ASSERT_EQ(
result[2].pan_delta_y, 4.0);
708 ASSERT_EQ(
result[2].rotation, 0.0);
709 ASSERT_EQ(
result[2].synthesized, 0);
714 ASSERT_EQ(
result[3].physical_x, 0.0);
715 ASSERT_EQ(
result[3].physical_y, 0.0);
716 ASSERT_EQ(
result[3].synthesized, 0);
719TEST(PointerDataPacketConverterTest, CanConvertViewId) {
721 auto packet = std::make_unique<PointerDataPacket>(2);
725 packet->SetPointerData(0,
data);
728 packet->SetPointerData(1,
data);
729 auto converted_packet = converter.Convert(std::move(packet));
731 std::vector<PointerData>
result;
734 ASSERT_EQ(
result.size(), (
size_t)2);
735 ASSERT_EQ(
result[0].view_id, 100);
736 ASSERT_EQ(
result[1].view_id, 200);
void CreateSimulatedMousePointerData(PointerData &data, PointerData::Change change, PointerData::SignalKind signal_kind, int64_t device, double dx, double dy, double scroll_delta_x, double scroll_delta_y, int64_t buttons)
void CreateSimulatedTrackpadGestureData(PointerData &data, PointerData::Change change, int64_t device, double dx, double dy, double pan_x, double pan_y, double scale, double rotation)