4#include <QtTest/private/qtestresult_p.h>
5#include <QtCore/qglobal.h>
6#include <QtCore/qstringview.h>
8#include <QtTest/private/qtestlog_p.h>
9#include <QtTest/qtest.h>
10#include <QtTest/qtestdata.h>
11#include <QtTest/qtestcase.h>
12#include <QtTest/qtestassert.h>
13#include <QtTest/qtesteventloop.h>
31 static const bool fatalFailure = []() {
32 static const char *
const environmentVar =
"QTEST_FATAL_FAIL";
41 if (failed && fatalFailure)
149 addFailure(
"QEXPECT_FAIL was called without any subsequent verification statements");
173 addFailure(
"Not all expected messages were received");
222 if (!dataIndex || dataIndex[0] ==
'\0')
297 const char *description,
const char *
file,
int line)
311 statement ?
"'%s' returned TRUE unexpectedly. (%s)" :
"'%s' returned FALSE. (%s)",
312 statementStr, description ? description :
"");
330 const char *failureMsg,
331 const char *val1,
const char *val2,
332 const char *actual,
const char *
expected,
335 size_t len1 = mbstowcs(
nullptr, actual,
maxMsgLen);
344 val1 ? val1 :
"<null>",
346 val2 ? val2 :
"<null>");
355template <
class Actual,
class Expected>
357 const char *failureMsg,
358 const Actual &val1,
const Expected &val2,
359 const char *actual,
const char *
expected,
371template <
class Actual,
class Expected>
373 const Actual &val1,
const Expected &val2,
374 const char *actual,
const char *
expected,
376 bool hasValues =
true)
390 failureMsg =
"Compared values are not the same";
395 "QCOMPARE(%s, %s) returned TRUE unexpectedly.", actual,
expected);
416 const char *actual,
const char *
expected,
445 char *val1,
char *val2,
446 const char *actual,
const char *
expected,
450 val1 !=
nullptr ? val1 :
"<null>",
451 val2 !=
nullptr ? val2 :
"<null>",
453 val1 !=
nullptr && val2 !=
nullptr);
463 double val1,
double val2,
464 const char *actual,
const char *
expected,
471 float val1,
float val2,
472 const char *actual,
const char *
expected,
480 const char *actual,
const char *
expected,
486#if QT_POINTER_SIZE == 8
489 const char *actual,
const char *
expected,
497 unsigned val1,
unsigned val2,
498 const char *actual,
const char *
expected,
506 const char *actual,
const char *
expected,
514 const char *actual,
const char *
expected,
522 const char *actual,
const char *
expected,
531 const char *actual,
const char *expeceted,
584 return ::currentAppName;
589 using namespace QTest;
591 case ComparisonOperation::CustomCompare:
593 case ComparisonOperation::Equal:
594 return "QCOMPARE_EQ";
595 case ComparisonOperation::NotEqual:
596 return "QCOMPARE_NE";
597 case ComparisonOperation::LessThan:
598 return "QCOMPARE_LT";
599 case ComparisonOperation::LessThanOrEqual:
600 return "QCOMPARE_LE";
601 case ComparisonOperation::GreaterThan:
602 return "QCOMPARE_GT";
603 case ComparisonOperation::GreaterThanOrEqual:
604 return "QCOMPARE_GE";
606 Q_UNREACHABLE_RETURN(
"");
611 using namespace QTest;
613 case ComparisonOperation::CustomCompare:
614 return "Compared values are not the same";
615 case ComparisonOperation::Equal:
616 return "The computed value is expected to be equal to the baseline, but is not";
617 case ComparisonOperation::NotEqual:
618 return "The computed value is expected to be different from the baseline, but is not";
619 case ComparisonOperation::LessThan:
620 return "The computed value is expected to be less than the baseline, but is not";
621 case ComparisonOperation::LessThanOrEqual:
622 return "The computed value is expected to be less than or equal to the baseline, but is not";
623 case ComparisonOperation::GreaterThan:
624 return "The computed value is expected to be greater than the baseline, but is not";
625 case ComparisonOperation::GreaterThanOrEqual:
626 return "The computed value is expected to be greater than or equal to the baseline, but is not";
628 Q_UNREACHABLE_RETURN(
"");
632 const char *(*lhsFormatter)(
const void*),
633 const char *(*rhsFormatter)(
const void*),
634 const char *lhsExpr,
const char *rhsExpr,
636 const char *failureMessage)
657 const std::unique_ptr<const char[]> lhsPtr{ lhsFormatter(lhs) };
658 const std::unique_ptr<const char[]> rhsPtr{ rhsFormatter(rhs) };
664 lhsExpr, rhsExpr, op);
static QTestEventLoop & instance()
static void clearCurrentTestState()
static void addPass(const char *msg)
static int verboseLevel()
static void addSkip(const char *msg, const char *file, int line)
static void addFail(const char *msg, const char *file, int line)
static void enterTestData(QTestData *data)
static void enterTestFunction(const char *function)
static void addXPass(const char *msg, const char *file, int line)
static void addXFail(const char *msg, const char *file, int line)
static void addBPass(const char *msg)
static int unhandledIgnoreMessages()
static void addBFail(const char *msg, const char *file, int line)
static void addBXFail(const char *msg, const char *file, int line)
static void info(const char *msg, const char *file, int line)
static void leaveTestFunction()
static void printUnhandledIgnoreMessages()
static void addBXPass(const char *msg, const char *file, int line)
static void resetCounters()
static const char * currentTestObjectName()
static void fail(const char *message, const char *file, int line)
static const char * currentAppName()
static const char * currentGlobalDataTag()
static void finishedCurrentTestDataCleanup()
This function is called after completing each test function, including test functions that are not da...
static void finishedCurrentTestData()
This function is called after completing each test function, including test functions that are not da...
static bool expectFail(const char *dataIndex, const char *comment, QTest::TestFailMode mode, const char *file, int line)
static bool verify(bool statement, const char *statementStr, const char *extraInfo, const char *file, int line)
static bool currentTestFailed()
static void setSkipCurrentTest(bool value)
static void setCurrentAppName(const char *appName)
static void setCurrentTestFunction(const char *func)
static void setBlacklistCurrentTest(bool b)
static void setCurrentTestObject(const char *name)
static const char * currentDataTag()
static bool compare(bool success, const char *failureMsg, char *val1, char *val2, const char *actual, const char *expected, const char *file, int line)
static void addFailure(const char *message, const char *file=nullptr, int line=0)
static bool skipCurrentTest()
static void setCurrentGlobalTestData(QTestData *data)
static void finishedCurrentTestFunction()
This function is called after completing each test function, including test functions that are data-d...
static void setCurrentTestData(QTestData *data)
static bool reportResult(bool success, const void *lhs, const void *rhs, const char *(*lhsFormatter)(const void *), const char *(*rhsFormatter)(const void *), const char *lhsExpr, const char *rhsExpr, QTest::ComparisonOperation op, const char *file, int line, const char *failureMessage=nullptr)
static void addSkip(const char *message, const char *file, int line)
static QTestData * currentGlobalTestData()
static QTestData * currentTestData()
static const char * currentTestFunction()
static QThread * currentThread()
Combined button and popup list for selecting options.
static QTestData * currentGlobalTestData
static void resetFailed()
static QTestData * currentTestData
static bool skipCurrentTest
char * toString(const MyPoint &point)
static void setFailed(bool failed)
static const char * currentTestFunc
static bool blacklistCurrentTest
static int expectFailMode
static const char * expectFailComment
static const char * currentTestObjectName
Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt,...)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
QT_BEGIN_NAMESPACE Q_NORETURN void qTerminate() noexcept
constexpr const T & qMax(const T &a, const T &b)
GLboolean GLboolean GLboolean b
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLsizei const GLchar * message
Q_CORE_EXPORT bool qEnvironmentVariableIsSet(const char *varName) noexcept
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept
#define QTEST_ASSERT(cond)
static const char * currentAppName
static bool checkStatement(bool statement, const char *msg, const char *file, int line)
static bool isExpectFailData(const char *dataIndex)
static const char * rightArgNameForOp(QTest::ComparisonOperation op)
static const char * failureMessageForOp(QTest::ComparisonOperation op)
void formatFailMessage(char *msg, size_t maxMsgLen, const char *failureMsg, const char *val1, const char *val2, const char *actual, const char *expected, QTest::ComparisonOperation op)
static bool compareHelper(bool success, const char *failureMsg, const Actual &val1, const Expected &val2, const char *actual, const char *expected, const char *file, int line, bool hasValues=true)
static const char * macroNameForOp(QTest::ComparisonOperation op)
static constexpr size_t maxMsgLen
static const char * leftArgNameForOp(QTest::ComparisonOperation op)
static void clearExpectFail()