From db942d61252ee909c480629d4900ef155e158712 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 9 Nov 2020 09:58:56 +0100 Subject: QTestlib: Speed up comparison of qsizetype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a qCompare() overload for qsizetype, preventing it falling back to the slow code path pre-formatting expected/actual. toString() should use the correct format from the already present int-types (see macro TO_STRING_IMPL). Complements 94aa350621e8a5c4ad3b438c10fc1c0a9ed3bc8a. Task-number: QTBUG-38890 Change-Id: Ieb8cea7de086141a2c80f93b4c1be01572be96df Reviewed-by: Tor Arne Vestbø --- src/testlib/qtestcase.cpp | 15 +++++++++++++++ src/testlib/qtestcase.h | 5 +++++ src/testlib/qtestresult.cpp | 10 ++++++++++ src/testlib/qtestresult_p.h | 6 ++++++ 4 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 3227a66c05..7c2de877da 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2577,6 +2577,21 @@ bool QTest::qCompare(int t1, int t2, const char *actual, const char *expected, t1, t2, actual, expected, file, line); } +#if QT_POINTER_SIZE == 8 +/*! \fn bool QTest::qCompare(qsizetype t1, qsizetype t2, const char *actual, const char *expected, const char *file, int line) + \internal + \since 6.0 + */ + +bool QTest::qCompare(qsizetype t1, qsizetype t2, const char *actual, const char *expected, + const char *file, int line) +{ + return QTestResult::compare(t1 == t2, + "Compared values are not the same", + t1, t2, actual, expected, file, line); +} +#endif // QT_POINTER_SIZE == 8 + /*! \fn bool QTest::qCompare(unsigned t1, unsigned t2, const char *actual, const char *expected, const char *file, int line) \internal \since 5.14 diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index ced876fcd9..def2ff9da5 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -377,6 +377,11 @@ namespace QTest Q_TESTLIB_EXPORT bool qCompare(int t1, int t2, const char *actual, const char *expected, const char *file, int line); +#if QT_POINTER_SIZE == 8 + Q_TESTLIB_EXPORT bool qCompare(qsizetype t1, qsizetype t2, const char *actual, const char *expected, + const char *file, int line); +#endif + Q_TESTLIB_EXPORT bool qCompare(unsigned t1, unsigned t2, const char *actual, const char *expected, const char *file, int line); diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp index eeaea83357..ee038d3704 100644 --- a/src/testlib/qtestresult.cpp +++ b/src/testlib/qtestresult.cpp @@ -415,6 +415,16 @@ bool QTestResult::compare(bool success, const char *failureMsg, return compareHelper(success, failureMsg, val1, val2, actual, expected, file, line); } +#if QT_POINTER_SIZE == 8 +bool QTestResult::compare(bool success, const char *failureMsg, + qsizetype val1, qsizetype val2, + const char *actual, const char *expected, + const char *file, int line) +{ + return compareHelper(success, failureMsg, val1, val2, actual, expected, file, line); +} +#endif // QT_POINTER_SIZE == 8 + bool QTestResult::compare(bool success, const char *failureMsg, unsigned val1, unsigned val2, const char *actual, const char *expected, diff --git a/src/testlib/qtestresult_p.h b/src/testlib/qtestresult_p.h index 38a3024a0f..4da66885df 100644 --- a/src/testlib/qtestresult_p.h +++ b/src/testlib/qtestresult_p.h @@ -94,6 +94,12 @@ public: int val1, int val2, const char *actual, const char *expected, const char *file, int line); +#if QT_POINTER_SIZE == 8 + static bool compare(bool success, const char *failureMsg, + qsizetype val1, qsizetype val2, + const char *actual, const char *expected, + const char *file, int line); +#endif static bool compare(bool success, const char *failureMsg, unsigned val1, unsigned val2, const char *actual, const char *expected, -- cgit v1.2.3