From 1ed8a7bff503aacf55f7f880ddaad461ea15e5e1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 22 Feb 2016 20:29:32 +0100 Subject: QTest: support nullptr in QCOMPARE This allows to write QCOMPARE(ptr, nullptr); instead of QVERIFY(ptr); Task-number: QTBUG-49973 Change-Id: I6e1327d4327bcf17bd9b59de4352fdcaae98ac27 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/testlib/qtestcase.h | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/testlib/qtestcase.h') diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index a27f7820f9..0395875cb3 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -332,13 +332,27 @@ namespace QTest Q_TESTLIB_EXPORT bool qCompare(double const &t1, double const &t2, const char *actual, const char *expected, const char *file, int line); - inline bool compare_ptr_helper(const void *t1, const void *t2, const char *actual, + inline bool compare_ptr_helper(const volatile void *t1, const volatile void *t2, const char *actual, const char *expected, const char *file, int line) { return compare_helper(t1 == t2, "Compared pointers are not the same", toString(t1), toString(t2), actual, expected, file, line); } + inline bool compare_ptr_helper(const volatile void *t1, std::nullptr_t, const char *actual, + const char *expected, const char *file, int line) + { + return compare_helper(t1 == nullptr, "Compared pointers are not the same", + toString(t1), toString(nullptr), actual, expected, file, line); + } + + inline bool compare_ptr_helper(std::nullptr_t, const volatile void *t2, const char *actual, + const char *expected, const char *file, int line) + { + return compare_helper(nullptr == t2, "Compared pointers are not the same", + toString(nullptr), toString(t2), actual, expected, file, line); + } + Q_TESTLIB_EXPORT bool compare_string_helper(const char *t1, const char *t2, const char *actual, const char *expected, const char *file, int line); @@ -388,6 +402,19 @@ namespace QTest return compare_ptr_helper(t1, t2, actual, expected, file, line); } + template + inline bool qCompare(T *t1, std::nullptr_t, const char *actual, const char *expected, + const char *file, int line) + { + return compare_ptr_helper(t1, nullptr, actual, expected, file, line); + } + template + inline bool qCompare(std::nullptr_t, T *t2, const char *actual, const char *expected, + const char *file, int line) + { + return compare_ptr_helper(nullptr, t2, actual, expected, file, line); + } + template inline bool qCompare(const T1 *t1, const T2 *t2, const char *actual, const char *expected, const char *file, int line) -- cgit v1.2.3