3#include <QtTest/QtTest>
7#include "ReturnValue.h"
14 inline bool qCompare(
knowCore::Uri const &t1,
const char*
const &t2,
const char *actual,
const char *expected,
15 const char *file,
int line)
17 return qCompare((QString)t1, QString::fromUtf8(t2), actual, expected, file, line);
25 return QTest::toString((QString)t);
29 return QTest::toString(t.
toEpoch<knowCore::NanoSeconds>().count());
33 return QTest::toString(t.toString());
37 auto const [success, result, error] = t.printable();
39 return QTest::toString(result);
41 return QTest::toString(error);
44 template<
typename _T_>
45 inline char *toString(
const ReturnValue<_T_>& _t)
49 return QTest::toString(_t.value());
51 return toString(_t.message());
56 return t.
isValid() ? QTest::toString(t.
symbol()) : QTest::toString(
"invalid unit");
60#define KNOWCORE_TEST_WAIT_FOR_ACT(_CONDITION_, _ACT_) \
61 for(int i = 0; i < 2000; ++i) \
63 QThread::msleep(10); \
65 auto ___expr___ = clog_eval_expr(_CONDITION_); \
66 if(___expr___.value()) break; \
69 KNOWCORE_LOG_INFO("Waiting for: {} since {}s", ___expr___, i/100); \
74#define KNOWCORE_TEST_WAIT_FOR(_CONDITION_) \
75 KNOWCORE_TEST_WAIT_FOR_ACT(_CONDITION_, )
78#define KNOWCORE_TEST_VERIFY_SUCCESS_VOID(_EXPR_) \
80 auto const [__success__, __message__] = (_EXPR_); \
81 if (!QTest::qVerify(static_cast<bool>(__success__), #_EXPR_, qPrintable(__message__), \
82 __FILE__, __LINE__)) \
87#define KNOWCORE_TEST_VERIFY_FAILURE_VOID(_EXPR_) \
89 auto const [__success__, __message__] = (_EXPR_); \
90 if (!QTest::qVerify(static_cast<bool>(!__success__), #_EXPR_, \
91 qPrintable("Call succeeded, expected failure."), \
92 __FILE__, __LINE__)) \
96#define KNOWCORE_TEST_VERIFY_SUCCESS(_EXPR_) \
98 auto const [__success__, __result__, __message__] = (_EXPR_); \
99 QTest::qVerify(__success__, #_EXPR_, qPrintable(__message__), __FILE__, __LINE__); \
100 if(not __success__) \
102 throw(std::runtime_error(__message__.toStdString())); \
107#define KNOWCORE_TEST_VERIFY_FAILURE(_EXPR_) \
109 auto const [__success__, __result__, __message__] = (_EXPR_); \
110 QTest::qVerify(not __success__, #_EXPR_, \
111 qPrintable("Call succeeded, expected failure."), __FILE__, __LINE__); \
114 throw(std::runtime_error(__message__.toStdString())); \
119#define KNOWCORE_TEST_VERIFY_COMPARE(_EXPR_, _EXPECTED_) \
121 auto const [__success__, __result__, __message__] = (_EXPR_); \
122 if (!QTest::qVerify(static_cast<bool>(__success__), #_EXPR_, qPrintable(__message__), \
123 __FILE__, __LINE__)) \
125 if (!QTest::qCompare(__result__, _EXPECTED_, #_EXPR_, #_EXPECTED_, __FILE__, __LINE__)) \
Class that can contains large numeric value.
Definition BigNumber.h:46
Definition Timestamp.h:33
_unit_ toEpoch() const
Definition Timestamp.h:150
QString symbol() const
Definition Unit.cpp:244
bool isValid() const
Definition Unit.cpp:279