summaryrefslogtreecommitdiffstats
path: root/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2020-02-13 09:14:09 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-02-13 18:31:40 +0100
commit6b2535ea15cdbdb2355416b604f072fc13ff36b2 (patch)
tree4bf1560bab77c8b315850c5337ba31a0ea87b5f0 /tests/auto/testlib/selftests/mouse/tst_mouse.cpp
parent54c2cebabdda0280b8443c6947b6fee02445e138 (diff)
parent67491e2df5357706dbf88ddaf1f030ff095b4528 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: examples/widgets/graphicsview/boxes/scene.h src/corelib/Qt5CoreMacros.cmake src/corelib/Qt6CoreMacros.cmake src/network/ssl/qsslsocket.cpp src/network/ssl/qsslsocket.h src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp src/testlib/CMakeLists.txt src/testlib/.prev_CMakeLists.txt tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp Disabled building manual tests with CMake for now, because qmake doesn't do it, and it confuses people. Done-With: Alexandru Croitor <alexandru.croitor@qt.io> Done-With: Volker Hilsheimer <volker.hilsheimer@qt.io> Change-Id: I865ae347bd01f4e59f16d007b66d175a52f1f152
Diffstat (limited to 'tests/auto/testlib/selftests/mouse/tst_mouse.cpp')
-rw-r--r--tests/auto/testlib/selftests/mouse/tst_mouse.cpp67
1 files changed, 66 insertions, 1 deletions
diff --git a/tests/auto/testlib/selftests/mouse/tst_mouse.cpp b/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
index d097027e7e..43dda31daf 100644
--- a/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
+++ b/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
@@ -42,6 +42,8 @@ class tst_Mouse : public QObject
Q_OBJECT
private slots:
+ void timestampBetweenTestFunction_data();
+ void timestampBetweenTestFunction();
void stateHandlingPart1_data();
void stateHandlingPart1();
void stateHandlingPart2();
@@ -55,20 +57,83 @@ public:
Qt::MouseButtons stateInMouseMove = Qt::NoButton;
int moveCount = 0;
int pressCount = 0;
+ int doubleClickCount = 0;
+ ulong lastTimeStamp = 0;
protected:
- void mousePressEvent(QMouseEvent *)
+ void mousePressEvent(QMouseEvent *e)
{
pressCount++;
+ processEvent(e);
}
void mouseMoveEvent(QMouseEvent *e)
{
moveCount++;
stateInMouseMove = e->buttons();
+ processEvent(e);
}
+
+ void mouseReleaseEvent(QMouseEvent *e)
+ {
+ processEvent(e);
+ }
+
+ void mouseDoubleClickEvent(QMouseEvent *e)
+ {
+ doubleClickCount++;
+ processEvent(e);
+ }
+
+ void processEvent(QMouseEvent *e)
+ {
+ lastTimeStamp = e->timestamp();
+ }
+
};
+static ulong lastTimeStampInPreviousTestFunction = 0;
+
+void tst_Mouse::timestampBetweenTestFunction_data()
+{
+ QTest::addColumn<bool>("hoverLast");
+ QTest::addColumn<bool>("pressAndRelease");
+ QTest::newRow("press, release") << true << false;
+ QTest::newRow("press, release, hover") << true << true;
+ QTest::newRow("hover") << false << true;
+ QTest::newRow("hover #2") << false << true;
+ QTest::newRow("press, release #2") << true << false;
+ QTest::newRow("press, release, hover #2") << true << true;
+}
+
+void tst_Mouse::timestampBetweenTestFunction()
+{
+ QFETCH(bool, hoverLast);
+ QFETCH(bool, pressAndRelease);
+
+ MouseWindow w;
+ w.show();
+ w.setGeometry(100, 100, 200, 200);
+ QVERIFY(QTest::qWaitForWindowActive(&w));
+
+ QPoint point(10, 10);
+ QCOMPARE(w.pressCount, 0);
+ if (pressAndRelease) {
+ QTest::mousePress(&w, Qt::LeftButton, { }, point);
+ QVERIFY(w.lastTimeStamp - lastTimeStampInPreviousTestFunction > 500); // Should be at least 500 ms timestamp between each test case
+ QCOMPARE(w.pressCount, 1);
+ QTest::mouseRelease(&w, Qt::LeftButton, { }, point);
+ }
+ QCOMPARE(w.doubleClickCount, 0);
+ if (hoverLast) {
+ static int xMove = 0;
+ xMove += 5; // Just make sure we generate different hover coordinates
+ point.rx() += xMove;
+ QTest::mouseMove(&w, point); // a hover move. This doesn't generate a timestamp delay of 500 ms
+ }
+ lastTimeStampInPreviousTestFunction = w.lastTimeStamp;
+}
+
void tst_Mouse::stateHandlingPart1_data()
{
QTest::addColumn<bool>("dummy");