From cc6d984390dc937b9d8440b6ba7d4f578e22ac0d Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Thu, 2 Jun 2022 11:51:49 +0200 Subject: 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 --- src/testlib/qtestcase.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/testlib/qtestcase.h') diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index 555458e041..d4caf20e69 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -204,6 +204,42 @@ do { \ #define QTRY_COMPARE(expr, expected) QTRY_COMPARE_WITH_TIMEOUT((expr), expected, 5000) +#define QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, op, opId, timeout) \ +do { \ + QTRY_IMPL(((left) op (right)), timeout); \ + QCOMPARE_OP_IMPL(left, right, op, opId); \ +} while (false) + +#define QTRY_COMPARE_EQ_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, ==, Equal, timeout) + +#define QTRY_COMPARE_EQ(left, right) QTRY_COMPARE_EQ_WITH_TIMEOUT(left, right, 5000) + +#define QTRY_COMPARE_NE_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, !=, NotEqual, timeout) + +#define QTRY_COMPARE_NE(left, right) QTRY_COMPARE_NE_WITH_TIMEOUT(left, right, 5000) + +#define QTRY_COMPARE_LT_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, <, LessThan, timeout) + +#define QTRY_COMPARE_LT(left, right) QTRY_COMPARE_LT_WITH_TIMEOUT(left, right, 5000) + +#define QTRY_COMPARE_LE_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, <=, LessThanOrEqual, timeout) + +#define QTRY_COMPARE_LE(left, right) QTRY_COMPARE_LE_WITH_TIMEOUT(left, right, 5000) + +#define QTRY_COMPARE_GT_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, >, GreaterThan, timeout) + +#define QTRY_COMPARE_GT(left, right) QTRY_COMPARE_GT_WITH_TIMEOUT(left, right, 5000) + +#define QTRY_COMPARE_GE_WITH_TIMEOUT(left, right, timeout) \ + QTRY_COMPARE_OP_WITH_TIMEOUT_IMPL(left, right, >=, GreaterThanOrEqual, timeout) + +#define QTRY_COMPARE_GE(left, right) QTRY_COMPARE_GE_WITH_TIMEOUT(left, right, 5000) + #define QSKIP_INTERNAL(statement) \ do {\ QTest::qSkip(static_cast(statement), __FILE__, __LINE__);\ -- cgit v1.2.3