168TEST(PointerDataPacketConverterTest, CanConvertPointerDataPacket) {
172 auto packet = std::make_unique<PointerDataPacket>(6);
175 packet->SetPointerData(0,
data);
177 packet->SetPointerData(1,
data);
179 packet->SetPointerData(2,
data);
181 packet->SetPointerData(3,
data);
183 packet->SetPointerData(4,
data);
186 packet->SetPointerData(5,
data);
187 auto converted_packet = converter.
Convert(*packet);
189 std::vector<PointerData> result;
192 ASSERT_EQ(result.size(), (
size_t)6);
194 ASSERT_EQ(result[0].synthesized, 0);
197 ASSERT_EQ(result[1].synthesized, 0);
198 ASSERT_EQ(result[1].physical_delta_x, 3.0);
199 ASSERT_EQ(result[1].physical_delta_y, 0.0);
202 ASSERT_EQ(result[2].pointer_identifier, 1);
203 ASSERT_EQ(result[2].synthesized, 0);
206 ASSERT_EQ(result[3].pointer_identifier, 1);
207 ASSERT_EQ(result[3].synthesized, 0);
208 ASSERT_EQ(result[3].physical_delta_x, 0.0);
209 ASSERT_EQ(result[3].physical_delta_y, 4.0);
212 ASSERT_EQ(result[4].pointer_identifier, 1);
213 ASSERT_EQ(result[4].synthesized, 0);
216 ASSERT_EQ(result[5].synthesized, 0);
219TEST(PointerDataPacketConverterTest, CanSynthesizeDownAndUp) {
223 auto packet = std::make_unique<PointerDataPacket>(4);
226 packet->SetPointerData(0,
data);
228 packet->SetPointerData(1,
data);
230 packet->SetPointerData(2,
data);
233 packet->SetPointerData(3,
data);
234 auto converted_packet = converter.
Convert(*packet);
236 std::vector<PointerData> result;
239 ASSERT_EQ(result.size(), (
size_t)6);
241 ASSERT_EQ(result[0].synthesized, 0);
245 ASSERT_EQ(result[1].synthesized, 1);
246 ASSERT_EQ(result[1].physical_delta_x, 3.0);
247 ASSERT_EQ(result[1].physical_delta_y, 0.0);
248 ASSERT_EQ(result[1].buttons, 0);
251 ASSERT_EQ(result[2].pointer_identifier, 1);
252 ASSERT_EQ(result[2].synthesized, 0);
253 ASSERT_EQ(result[2].buttons, 1);
257 ASSERT_EQ(result[3].pointer_identifier, 1);
258 ASSERT_EQ(result[3].synthesized, 1);
259 ASSERT_EQ(result[3].physical_delta_x, 0.0);
260 ASSERT_EQ(result[3].physical_delta_y, 4.0);
261 ASSERT_EQ(result[3].buttons, 1);
264 ASSERT_EQ(result[4].pointer_identifier, 1);
265 ASSERT_EQ(result[4].synthesized, 0);
266 ASSERT_EQ(result[4].buttons, 0);
269 ASSERT_EQ(result[5].synthesized, 0);
272TEST(PointerDataPacketConverterTest, CanUpdatePointerIdentifier) {
276 auto packet = std::make_unique<PointerDataPacket>(7);
279 packet->SetPointerData(0,
data);
281 packet->SetPointerData(1,
data);
283 packet->SetPointerData(2,
data);
285 packet->SetPointerData(3,
data);
287 packet->SetPointerData(4,
data);
289 packet->SetPointerData(5,
data);
292 packet->SetPointerData(6,
data);
293 auto converted_packet = converter.
Convert(*packet);
295 std::vector<PointerData> result;
298 ASSERT_EQ(result.size(), (
size_t)7);
300 ASSERT_EQ(result[0].synthesized, 0);
303 ASSERT_EQ(result[1].pointer_identifier, 1);
304 ASSERT_EQ(result[1].synthesized, 0);
307 ASSERT_EQ(result[2].pointer_identifier, 1);
308 ASSERT_EQ(result[2].synthesized, 0);
312 ASSERT_EQ(result[3].pointer_identifier, 2);
313 ASSERT_EQ(result[3].synthesized, 0);
316 ASSERT_EQ(result[4].pointer_identifier, 2);
317 ASSERT_EQ(result[4].synthesized, 0);
318 ASSERT_EQ(result[4].physical_delta_x, 3.0);
319 ASSERT_EQ(result[4].physical_delta_y, 0.0);
322 ASSERT_EQ(result[5].pointer_identifier, 2);
323 ASSERT_EQ(result[5].synthesized, 0);
326 ASSERT_EQ(result[6].synthesized, 0);
329TEST(PointerDataPacketConverterTest, AlwaysForwardMoveEvent) {
333 auto packet = std::make_unique<PointerDataPacket>(4);
336 packet->SetPointerData(0,
data);
338 packet->SetPointerData(1,
data);
341 packet->SetPointerData(2,
data);
343 packet->SetPointerData(3,
data);
345 auto converted_packet = converter.
Convert(*packet);
347 std::vector<PointerData> result;
350 ASSERT_EQ(result.size(), (
size_t)4);
352 ASSERT_EQ(result[0].synthesized, 0);
355 ASSERT_EQ(result[1].pointer_identifier, 1);
356 ASSERT_EQ(result[1].synthesized, 0);
360 ASSERT_EQ(result[2].pointer_identifier, 1);
361 ASSERT_EQ(result[2].synthesized, 0);
364 ASSERT_EQ(result[3].pointer_identifier, 1);
365 ASSERT_EQ(result[3].synthesized, 0);
368TEST(PointerDataPacketConverterTest, CanWorkWithDifferentDevices) {
372 auto packet = std::make_unique<PointerDataPacket>(12);
375 packet->SetPointerData(0,
data);
377 packet->SetPointerData(1,
data);
379 packet->SetPointerData(2,
data);
381 packet->SetPointerData(3,
data);
383 packet->SetPointerData(4,
data);
385 packet->SetPointerData(5,
data);
387 packet->SetPointerData(6,
data);
389 packet->SetPointerData(7,
data);
391 packet->SetPointerData(8,
data);
393 packet->SetPointerData(9,
data);
396 packet->SetPointerData(10,
data);
399 packet->SetPointerData(11,
data);
400 auto converted_packet = converter.
Convert(*packet);
402 std::vector<PointerData> result;
405 ASSERT_EQ(result.size(), (
size_t)12);
407 ASSERT_EQ(result[0].
device, 0);
408 ASSERT_EQ(result[0].synthesized, 0);
411 ASSERT_EQ(result[1].
device, 0);
412 ASSERT_EQ(result[1].pointer_identifier, 1);
413 ASSERT_EQ(result[1].synthesized, 0);
416 ASSERT_EQ(result[2].
device, 1);
417 ASSERT_EQ(result[2].synthesized, 0);
420 ASSERT_EQ(result[3].
device, 1);
421 ASSERT_EQ(result[3].pointer_identifier, 2);
422 ASSERT_EQ(result[3].synthesized, 0);
425 ASSERT_EQ(result[4].
device, 0);
426 ASSERT_EQ(result[4].pointer_identifier, 1);
427 ASSERT_EQ(result[4].synthesized, 0);
430 ASSERT_EQ(result[5].
device, 0);
431 ASSERT_EQ(result[5].pointer_identifier, 3);
432 ASSERT_EQ(result[5].synthesized, 0);
435 ASSERT_EQ(result[6].
device, 1);
436 ASSERT_EQ(result[6].pointer_identifier, 2);
437 ASSERT_EQ(result[6].synthesized, 0);
438 ASSERT_EQ(result[6].physical_delta_x, 0.0);
439 ASSERT_EQ(result[6].physical_delta_y, 4.0);
442 ASSERT_EQ(result[7].
device, 0);
443 ASSERT_EQ(result[7].pointer_identifier, 3);
444 ASSERT_EQ(result[7].synthesized, 0);
445 ASSERT_EQ(result[7].physical_delta_x, 3.0);
446 ASSERT_EQ(result[7].physical_delta_y, 0.0);
449 ASSERT_EQ(result[8].
device, 1);
450 ASSERT_EQ(result[8].pointer_identifier, 2);
451 ASSERT_EQ(result[8].synthesized, 0);
454 ASSERT_EQ(result[9].
device, 0);
455 ASSERT_EQ(result[9].pointer_identifier, 3);
456 ASSERT_EQ(result[9].synthesized, 0);
459 ASSERT_EQ(result[10].
device, 0);
460 ASSERT_EQ(result[10].synthesized, 0);
463 ASSERT_EQ(result[11].
device, 1);
464 ASSERT_EQ(result[11].synthesized, 0);
467TEST(PointerDataPacketConverterTest, CanSynthesizeAdd) {
471 auto packet = std::make_unique<PointerDataPacket>(2);
475 packet->SetPointerData(0,
data);
477 packet->SetPointerData(1,
data);
478 auto converted_packet = converter.
Convert(*packet);
480 std::vector<PointerData> result;
483 ASSERT_EQ(result.size(), (
size_t)4);
486 ASSERT_EQ(result[0].physical_x, 330.0);
487 ASSERT_EQ(result[0].physical_y, 450.0);
488 ASSERT_EQ(result[0].synthesized, 1);
489 ASSERT_EQ(result[0].buttons, 0);
492 ASSERT_EQ(result[1].physical_x, 330.0);
493 ASSERT_EQ(result[1].physical_y, 450.0);
494 ASSERT_EQ(result[1].synthesized, 0);
495 ASSERT_EQ(result[1].buttons, 1);
499 ASSERT_EQ(result[2].physical_delta_x, -330.0);
500 ASSERT_EQ(result[2].physical_delta_y, -450.0);
501 ASSERT_EQ(result[2].physical_x, 0.0);
502 ASSERT_EQ(result[2].physical_y, 0.0);
503 ASSERT_EQ(result[2].synthesized, 1);
504 ASSERT_EQ(result[2].buttons, 1);
507 ASSERT_EQ(result[3].physical_x, 0.0);
508 ASSERT_EQ(result[3].physical_y, 0.0);
509 ASSERT_EQ(result[3].synthesized, 0);
510 ASSERT_EQ(result[3].buttons, 0);
513TEST(PointerDataPacketConverterTest, CanSynthesizeRemove) {
518 auto packet = std::make_unique<PointerDataPacket>(3);
523 packet->SetPointerData(0,
data);
526 packet->SetPointerData(1,
data);
529 packet->SetPointerData(2,
data);
530 auto converted_packet = converter.
Convert(*packet);
532 std::vector<PointerData> result;
535 ASSERT_EQ(result.size(), (
size_t)6);
536 ASSERT_EQ(result[0].synthesized, 0);
537 ASSERT_EQ(result[0].
view_id, 100);
541 ASSERT_EQ(result[1].synthesized, 1);
542 ASSERT_EQ(result[1].physical_delta_x, 3.0);
543 ASSERT_EQ(result[1].physical_delta_y, 4.0);
544 ASSERT_EQ(result[1].buttons, 0);
547 ASSERT_EQ(result[2].pointer_identifier, 1);
548 ASSERT_EQ(result[2].synthesized, 0);
549 ASSERT_EQ(result[2].buttons, 1);
553 ASSERT_EQ(result[3].pointer_identifier, 1);
554 ASSERT_EQ(result[3].synthesized, 1);
555 ASSERT_EQ(result[3].physical_x, 3.0);
556 ASSERT_EQ(result[3].physical_y, 4.0);
557 ASSERT_EQ(result[3].buttons, 1);
560 ASSERT_EQ(result[4].physical_x, 3.0);
561 ASSERT_EQ(result[4].physical_y, 4.0);
562 ASSERT_EQ(result[4].synthesized, 1);
563 ASSERT_EQ(result[4].
view_id, 100);
565 ASSERT_EQ(result[5].synthesized, 0);
566 ASSERT_EQ(result[5].
view_id, 200);
569TEST(PointerDataPacketConverterTest,
570 CanAvoidDoubleRemoveAfterSynthesizedRemove) {
575 auto packet = std::make_unique<PointerDataPacket>(2);
580 packet->SetPointerData(0,
data);
583 packet->SetPointerData(1,
data);
584 auto converted_packet = converter.
Convert(*packet);
586 std::vector<PointerData> result;
589 ASSERT_EQ(result.size(), (
size_t)3);
590 ASSERT_EQ(result[0].synthesized, 0);
591 ASSERT_EQ(result[0].
view_id, 100);
594 ASSERT_EQ(result[1].synthesized, 1);
595 ASSERT_EQ(result[1].
view_id, 100);
597 ASSERT_EQ(result[2].synthesized, 0);
598 ASSERT_EQ(result[2].
view_id, 200);
601 packet = std::make_unique<PointerDataPacket>(1);
605 packet->SetPointerData(0,
data);
606 converted_packet = converter.
Convert(*packet);
612 ASSERT_EQ(result.size(), (
size_t)0);
615TEST(PointerDataPacketConverterTest, CanHandleThreeFingerGesture) {
621 std::vector<PointerData> result;
623 auto packet = std::make_unique<PointerDataPacket>(1);
625 packet->SetPointerData(0,
data);
626 auto converted_packet = converter.
Convert(*packet);
629 packet = std::make_unique<PointerDataPacket>(1);
632 packet->SetPointerData(0,
data);
633 converted_packet = converter.
Convert(*packet);
636 packet = std::make_unique<PointerDataPacket>(3);
639 packet->SetPointerData(0,
data);
642 packet->SetPointerData(1,
data);
645 packet->SetPointerData(2,
data);
646 converted_packet = converter.
Convert(*packet);
649 ASSERT_EQ(result.size(), (
size_t)6);
651 ASSERT_EQ(result[0].
device, 0);
652 ASSERT_EQ(result[0].physical_x, 0.0);
653 ASSERT_EQ(result[0].physical_y, 0.0);
654 ASSERT_EQ(result[0].synthesized, 1);
655 ASSERT_EQ(result[0].buttons, 0);
658 ASSERT_EQ(result[1].
device, 0);
659 ASSERT_EQ(result[1].physical_x, 0.0);
660 ASSERT_EQ(result[1].physical_y, 0.0);
661 ASSERT_EQ(result[1].synthesized, 0);
662 ASSERT_EQ(result[1].buttons, 1);
665 ASSERT_EQ(result[2].
device, 1);
666 ASSERT_EQ(result[2].physical_x, 33.0);
667 ASSERT_EQ(result[2].physical_y, 44.0);
668 ASSERT_EQ(result[2].synthesized, 1);
669 ASSERT_EQ(result[2].buttons, 0);
672 ASSERT_EQ(result[3].
device, 1);
673 ASSERT_EQ(result[3].physical_x, 33.0);
674 ASSERT_EQ(result[3].physical_y, 44.0);
675 ASSERT_EQ(result[3].synthesized, 0);
676 ASSERT_EQ(result[3].buttons, 1);
679 ASSERT_EQ(result[4].
device, 1);
680 ASSERT_EQ(result[4].physical_x, 33.0);
681 ASSERT_EQ(result[4].physical_y, 44.0);
682 ASSERT_EQ(result[4].synthesized, 0);
685 ASSERT_EQ(result[5].
device, 0);
686 ASSERT_EQ(result[5].physical_x, 0.0);
687 ASSERT_EQ(result[5].physical_y, 0.0);
688 ASSERT_EQ(result[5].synthesized, 0);
692TEST(PointerDataPacketConverterTest, CanConvertPointerSignals) {
702 auto packet = std::make_unique<PointerDataPacket>(6);
707 packet->SetPointerData(0,
data);
711 packet->SetPointerData(1,
data);
715 packet->SetPointerData(2,
data);
717 34.0, 34.0, 30.0, 0.0, 0);
718 packet->SetPointerData(3,
data);
720 49.0, 49.0, 50.0, 0.0, 0);
721 packet->SetPointerData(4,
data);
723 10.0, 20.0, 30.0, 40.0, 0);
724 packet->SetPointerData(5,
data);
725 auto converted_packet = converter.
Convert(*packet);
727 std::vector<PointerData> result;
730 ASSERT_EQ(result.size(), (
size_t)9);
733 ASSERT_EQ(result[0].
device, 0);
734 ASSERT_EQ(result[0].physical_x, 0.0);
735 ASSERT_EQ(result[0].physical_y, 0.0);
736 ASSERT_EQ(result[0].synthesized, 0);
740 ASSERT_EQ(result[1].
device, 1);
741 ASSERT_EQ(result[1].physical_x, 0.0);
742 ASSERT_EQ(result[1].physical_y, 0.0);
743 ASSERT_EQ(result[1].synthesized, 0);
747 ASSERT_EQ(result[2].
device, 1);
748 ASSERT_EQ(result[2].physical_x, 0.0);
749 ASSERT_EQ(result[2].physical_y, 0.0);
750 ASSERT_EQ(result[2].synthesized, 0);
755 ASSERT_EQ(result[3].
device, 0);
756 ASSERT_EQ(result[3].physical_x, 34.0);
757 ASSERT_EQ(result[3].physical_y, 34.0);
758 ASSERT_EQ(result[3].physical_delta_x, 34.0);
759 ASSERT_EQ(result[3].physical_delta_y, 34.0);
760 ASSERT_EQ(result[3].buttons, 0);
761 ASSERT_EQ(result[3].synthesized, 1);
764 ASSERT_EQ(result[4].signal_kind, kind);
765 ASSERT_EQ(result[4].
device, 0);
766 ASSERT_EQ(result[4].physical_x, 34.0);
767 ASSERT_EQ(result[4].physical_y, 34.0);
768 ASSERT_EQ(result[4].scroll_delta_x, 30.0);
769 ASSERT_EQ(result[4].scroll_delta_y, 0.0);
774 ASSERT_EQ(result[5].
device, 1);
775 ASSERT_EQ(result[5].physical_x, 49.0);
776 ASSERT_EQ(result[5].physical_y, 49.0);
777 ASSERT_EQ(result[5].physical_delta_x, 49.0);
778 ASSERT_EQ(result[5].physical_delta_y, 49.0);
779 ASSERT_EQ(result[5].buttons, 1);
780 ASSERT_EQ(result[5].synthesized, 1);
783 ASSERT_EQ(result[6].signal_kind, kind);
784 ASSERT_EQ(result[6].
device, 1);
785 ASSERT_EQ(result[6].physical_x, 49.0);
786 ASSERT_EQ(result[6].physical_y, 49.0);
787 ASSERT_EQ(result[6].scroll_delta_x, 50.0);
788 ASSERT_EQ(result[6].scroll_delta_y, 0.0);
793 ASSERT_EQ(result[7].
device, 2);
794 ASSERT_EQ(result[7].physical_x, 10.0);
795 ASSERT_EQ(result[7].physical_y, 20.0);
796 ASSERT_EQ(result[7].synthesized, 1);
799 ASSERT_EQ(result[8].signal_kind, kind);
800 ASSERT_EQ(result[8].
device, 2);
801 ASSERT_EQ(result[8].physical_x, 10.0);
802 ASSERT_EQ(result[8].physical_y, 20.0);
803 ASSERT_EQ(result[8].scroll_delta_x, 30.0);
804 ASSERT_EQ(result[8].scroll_delta_y, 40.0);
808TEST(PointerDataPacketConverterTest, CanConvertTrackpadGesture) {
812 auto packet = std::make_unique<PointerDataPacket>(3);
815 0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
816 packet->SetPointerData(0,
data);
818 0, 0.0, 0.0, 3.0, 4.0, 1.0, 0.0);
819 packet->SetPointerData(1,
data);
821 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
822 packet->SetPointerData(2,
data);
823 auto converted_packet = converter.
Convert(*packet);
825 std::vector<PointerData> result;
828 ASSERT_EQ(result.size(), (
size_t)4);
830 ASSERT_EQ(result[0].
device, 0);
831 ASSERT_EQ(result[0].synthesized, 1);
835 ASSERT_EQ(result[1].
device, 0);
836 ASSERT_EQ(result[1].physical_x, 0.0);
837 ASSERT_EQ(result[1].physical_y, 0.0);
838 ASSERT_EQ(result[1].synthesized, 0);
842 ASSERT_EQ(result[2].
device, 0);
843 ASSERT_EQ(result[2].physical_x, 0.0);
844 ASSERT_EQ(result[2].physical_y, 0.0);
845 ASSERT_EQ(result[2].pan_x, 3.0);
846 ASSERT_EQ(result[2].pan_y, 4.0);
847 ASSERT_EQ(result[2].pan_delta_x, 3.0);
848 ASSERT_EQ(result[2].pan_delta_y, 4.0);
849 ASSERT_EQ(result[2].scale, 1.0);
850 ASSERT_EQ(result[2].rotation, 0.0);
851 ASSERT_EQ(result[2].synthesized, 0);
855 ASSERT_EQ(result[3].
device, 0);
856 ASSERT_EQ(result[3].physical_x, 0.0);
857 ASSERT_EQ(result[3].physical_y, 0.0);
858 ASSERT_EQ(result[3].synthesized, 0);