From c608ffc56ab37f9a9d5b9c34543126adb89e2b08 Mon Sep 17 00:00:00 2001 From: Samuel Gaist Date: Tue, 28 Mar 2017 08:56:24 +0200 Subject: Improve pair-like class handling in tests Currently when doing comparison with pair-like classes the fallback toString method is called which returns a Q_NULLPTR thus not allowing proper diagnostic of the values that triggered an error. This patch adds support for QPair and std::pair to improve the tests output readability. [ChangeLog][QtTest][QCOMPARE] Now outputs contents of QPair and std::pair on failure. Change-Id: Ib0b4aad7640590d56275b6f1306fb9fb39fa81bc Reviewed-by: Thiago Macieira --- src/testlib/qtestcase.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index a7e825396a..8347b99f17 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -259,6 +259,22 @@ namespace QTest return Internal::toString(t); } + template + inline char *toString(const QPair &pair) + { + const QScopedArrayPointer first(toString(pair.first)); + const QScopedArrayPointer second(toString(pair.second)); + return toString(QString::asprintf("QPair(%s,%s)", first.data(), second.data())); + } + + template + inline char *toString(const std::pair &pair) + { + const QScopedArrayPointer first(toString(pair.first)); + const QScopedArrayPointer second(toString(pair.second)); + return toString(QString::asprintf("std::pair(%s,%s)", first.data(), second.data())); + } + Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, int length); Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, int length); Q_TESTLIB_EXPORT char *toPrettyUnicode(const ushort *unicode, int length); -- cgit v1.2.3