summaryrefslogtreecommitdiffstats
path: root/tests/auto/testlib/selftests/extendedcompare
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-06-02 11:51:49 +0200
committerIvan Solovev <ivan.solovev@qt.io>2022-06-03 22:37:50 +0200
commitcc6d984390dc937b9d8440b6ba7d4f578e22ac0d (patch)
tree2050e45a5322fe8072b1dcd790c64f69beaa7f6d /tests/auto/testlib/selftests/extendedcompare
parent343e0ff485de36e27c0a62781dc512a4bda22fce (diff)
Add QTRY_COMPARE_{EQ,NE,LT,LE,GT,GE}_WITH_TIMEOUT()
[ChangeLog][QTestLib] Add QTRY_COMPARE_{EQ,NE,LT,LE,GT,GE}_WITH_TIMEOUT macros that repeatedly execute QCOMPARE_{EQ,NE,LT,LE,GT,GE} until either the comparison returns true or the timeout expires. Also add QTRY_COMPARE_{EQ,NE,LT,LE,GT,GE} macros that simply invoke the *_WITH_TIMEOUT versions with the usual timeout of five seconds. Task-number: QTBUG-98873 Change-Id: Ib0d7d1c8c997f442b46acd85da738a8f512cc875 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'tests/auto/testlib/selftests/extendedcompare')
-rw-r--r--tests/auto/testlib/selftests/extendedcompare/tst_extendedcompare.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/testlib/selftests/extendedcompare/tst_extendedcompare.cpp b/tests/auto/testlib/selftests/extendedcompare/tst_extendedcompare.cpp
index 503729365f..d198d621e1 100644
--- a/tests/auto/testlib/selftests/extendedcompare/tst_extendedcompare.cpp
+++ b/tests/auto/testlib/selftests/extendedcompare/tst_extendedcompare.cpp
@@ -2,6 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <QTest>
+#include <QtCore/qtimer.h>
QT_BEGIN_NAMESPACE
@@ -143,6 +144,7 @@ private slots:
void compareCustomTypes_data();
void compareCustomTypes();
void checkComparisonForTemporaryObjects();
+ void checkComparisonWithTimeout();
};
void tst_ExtendedCompare::initTestCase_data()
@@ -272,6 +274,58 @@ void tst_ExtendedCompare::checkComparisonForTemporaryObjects()
getClassForValue(1).getValuePointer());
}
+class ClassWithDeferredSetter : public MyClass
+{
+public:
+ ClassWithDeferredSetter(int value) : MyClass(value) {}
+
+ void setValueDeferred(int value)
+ {
+ QTimer::singleShot(100, [this, value] { setValue(value); });
+ }
+};
+
+namespace QTest {
+
+char *toString(const ClassWithDeferredSetter &val)
+{
+ char *msg = new char[128];
+ qsnprintf(msg, 128, "ClassWithDeferredSetter(%d)", val.value());
+ return msg;
+}
+
+} // namespace QTest
+
+void tst_ExtendedCompare::checkComparisonWithTimeout()
+{
+ QFETCH_GLOBAL(QTest::ComparisonOperation, operation);
+ ClassWithDeferredSetter c(0);
+ c.setValueDeferred(1);
+ switch (operation) {
+ case QTest::ComparisonOperation::Equal:
+ QTRY_COMPARE_EQ_WITH_TIMEOUT(c, ClassWithDeferredSetter(1), 300);
+ break;
+ case QTest::ComparisonOperation::NotEqual:
+ QTRY_COMPARE_NE_WITH_TIMEOUT(c, ClassWithDeferredSetter(0), 300);
+ break;
+ case QTest::ComparisonOperation::LessThan:
+ QTRY_COMPARE_LT_WITH_TIMEOUT(c, ClassWithDeferredSetter(0), 300);
+ break;
+ case QTest::ComparisonOperation::LessThanOrEqual:
+ QTRY_COMPARE_LE_WITH_TIMEOUT(c, ClassWithDeferredSetter(-1), 300);
+ break;
+ case QTest::ComparisonOperation::GreaterThan:
+ QTRY_COMPARE_GT_WITH_TIMEOUT(c, ClassWithDeferredSetter(1), 300);
+ break;
+ case QTest::ComparisonOperation::GreaterThanOrEqual:
+ QTRY_COMPARE_GE_WITH_TIMEOUT(c, ClassWithDeferredSetter(1), 300);
+ break;
+ case QTest::ComparisonOperation::CustomCompare:
+ QFAIL("Unexpected comparison operation");
+ break;
+ }
+}
+
QT_END_NAMESPACE
QTEST_MAIN(tst_ExtendedCompare)