3
0

GestureRecognizerClickOrTapTests.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzTest/AzTest.h>
  9. #include <Gestures/GestureRecognizerClickOrTap.h>
  10. #include "BaseGestureTest.h"
  11. namespace
  12. {
  13. Gestures::RecognizerClickOrTap::Config singleTapOneSecond;
  14. }
  15. class MockRecognizer
  16. : public Gestures::RecognizerClickOrTap
  17. {
  18. public:
  19. AZ_CLASS_ALLOCATOR(MockRecognizer, AZ::SystemAllocator)
  20. MockRecognizer()
  21. : m_count(0)
  22. {
  23. }
  24. int m_count;
  25. void OnDiscreteGestureRecognized() override
  26. {
  27. ++m_count;
  28. }
  29. };
  30. class SimpleTests
  31. : public BaseGestureTest
  32. {
  33. public:
  34. void SetUp() override
  35. {
  36. BaseGestureTest::SetUp();
  37. // configure
  38. singleTapOneSecond.maxSecondsHeld = 1.0f;
  39. singleTapOneSecond.minClicksOrTaps = 1;
  40. }
  41. void TearDown() override
  42. {
  43. BaseGestureTest::TearDown();
  44. }
  45. };
  46. TEST_F(SimpleTests, NoInput_DefaultConfig_NotRecognized)
  47. {
  48. MockRecognizer mockRecognizer;
  49. mockRecognizer.SetConfig(singleTapOneSecond);
  50. ASSERT_EQ(0, mockRecognizer.m_count);
  51. }
  52. TEST_F(SimpleTests, Tap_ZeroDuration_Recognized)
  53. {
  54. MockRecognizer mockRecognizer;
  55. mockRecognizer.SetConfig(singleTapOneSecond);
  56. MouseDownAt(mockRecognizer, 0.0f);
  57. MouseUpAt(mockRecognizer, 0.0f);
  58. ASSERT_EQ(1, mockRecognizer.m_count);
  59. }
  60. TEST_F(SimpleTests, Tap_LessThanMaxDuration_Recognized)
  61. {
  62. MockRecognizer mockRecognizer;
  63. mockRecognizer.SetConfig(singleTapOneSecond);
  64. MouseDownAt(mockRecognizer, 0.0f);
  65. MouseUpAt(mockRecognizer, 0.9f);
  66. ASSERT_EQ(1, mockRecognizer.m_count);
  67. }
  68. TEST_F(SimpleTests, Tap_GreaterThanMaxDuration_NotRecognized)
  69. {
  70. MockRecognizer mockRecognizer;
  71. mockRecognizer.SetConfig(singleTapOneSecond);
  72. MouseDownAt(mockRecognizer, 0.0f);
  73. MouseUpAt(mockRecognizer, 1.1f);
  74. ASSERT_EQ(0, mockRecognizer.m_count);
  75. }
  76. TEST_F(SimpleTests, Tap_MoveWithinLimits_Recognized)
  77. {
  78. MockRecognizer mockRecognizer;
  79. singleTapOneSecond.maxPixelsMoved = 10.0f;
  80. mockRecognizer.SetConfig(singleTapOneSecond);
  81. MoveTo(0.0f, 0.0f);
  82. MouseDownAt(mockRecognizer, 0.0f);
  83. MoveTo(9.9f, 0.0f);
  84. MouseUpAt(mockRecognizer, 0.5f);
  85. ASSERT_EQ(1, mockRecognizer.m_count);
  86. }
  87. TEST_F(SimpleTests, Tap_MoveOutsideLimits_NotRecognized)
  88. {
  89. MockRecognizer mockRecognizer;
  90. singleTapOneSecond.maxPixelsMoved = 10.0f;
  91. mockRecognizer.SetConfig(singleTapOneSecond);
  92. MoveTo(0.0f, 0.0f);
  93. MouseDownAt(mockRecognizer, 0.0f);
  94. MoveTo(10.1f, 0.0f);
  95. MouseUpAt(mockRecognizer, 0.5f);
  96. ASSERT_EQ(0, mockRecognizer.m_count);
  97. }