diff options
Diffstat (limited to 'src/testlib/qtestresult.cpp')
-rw-r--r-- | src/testlib/qtestresult.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp index 14ab29af2b..231fc8f3b1 100644 --- a/src/testlib/qtestresult.cpp +++ b/src/testlib/qtestresult.cpp @@ -254,22 +254,38 @@ bool QTestResult::compare(bool success, const char *msg, const char *file, int l return checkStatement(success, msg, file, line); } -bool QTestResult::compare(bool success, const char *msg, char *val1, char *val2, - const char *actual, const char *expected, const char *file, int line) +bool QTestResult::compare(bool success, const char *failureMsg, + char *val1, char *val2, + const char *actual, const char *expected, + const char *file, int line) { QTEST_ASSERT(expected); QTEST_ASSERT(actual); - if (!val1 && !val2) - return compare(success, msg, file, line); + char msg[1024]; + + if (QTestLog::verboseLevel() >= 2) { + qsnprintf(msg, 1024, "QCOMPARE(%s, %s)", actual, expected); + QTestLog::info(msg, file, line); + } + + if (!failureMsg) + failureMsg = "Compared values are not the same"; + + if (success && QTest::expectFailMode) { + qsnprintf(msg, 1024, "QCOMPARE(%s, %s) returned TRUE unexpectedly.", actual, expected); + } else if (val1 || val2) { + qsnprintf(msg, 1024, "%s\n Actual (%s): %s\n Expected (%s): %s", + failureMsg, + actual, val1 ? val1 : "<null>", + expected, val2 ? val2 : "<null>"); + } else + qsnprintf(msg, 1024, "%s", failureMsg); - char buf[1024]; - qsnprintf(buf, 1024, "%s\n Actual (%s): %s\n Expected (%s): %s", msg, - actual, val1 ? val1 : "<null>", - expected, val2 ? val2 : "<null>"); delete [] val1; delete [] val2; - return compare(success, buf, file, line); + + return checkStatement(success, msg, file, line); } void QTestResult::addFailure(const char *message, const char *file, int line) |