knowL: Knowledge Libraries
Loading...
Searching...
No Matches
Test.h
1#pragma once
2
3#include <QtTest/QtTest>
4
5#include <clog_qt>
6#include <cres_qt>
7#include <cres_qtest>
8
9#include "BigNumber.h"
10#include "Timestamp.h"
11#include "Unit.h"
12#include "Uri.h"
13#include "Value.h"
14
15namespace QTest
16{
17 inline bool qCompare(knowCore::Uri const& t1, const char* const& t2, const char* actual,
18 const char* expected, const char* file, int line)
19 {
20 return qCompare((QString)t1, QString::fromUtf8(t2), actual, expected, file, line);
21 }
22} // namespace QTest
23
24namespace knowCore
25{
26 inline char* toString(const knowCore::Uri& t) { return QTest::toString((QString)t); }
27 inline char* toString(const knowCore::Timestamp& t)
28 {
29 return QTest::toString(t.toEpoch<knowCore::NanoSeconds>().count());
30 }
31 inline char* toString(const knowCore::BigNumber& t) { return QTest::toString(t.toString()); }
32 inline char* toString(const knowCore::Value& t)
33 {
34 auto const [success, result, error] = t.printable();
35 if(success)
36 {
37 return QTest::toString(result.value());
38 }
39 else
40 {
41 return QTest::toString(error.value());
42 }
43 }
44 template<typename _T_>
45 inline char* toString(const cres_qresult<_T_>& _t)
46 {
47 if(_t.is_successful())
48 {
49 return QTest::toString(_t.get_value());
50 }
51 else
52 {
53 return toString(_t.get_error().get_message());
54 }
55 }
56 inline char* toString(const knowCore::Unit& t)
57 {
58 return t.isValid() ? QTest::toString(t.symbol()) : QTest::toString("invalid unit");
59 }
60} // namespace knowCore
61
62#define KNOWCORE_TEST_WAIT_FOR_ACT(_CONDITION_, _ACT_) \
63 for(int i = 0; i < 2000; ++i) \
64 { \
65 QThread::msleep(10); \
66 { \
67 _ACT_ \
68 } \
69 auto ___expr___ = clog_eval_expr(_CONDITION_); \
70 if(___expr___.value()) \
71 break; \
72 if((i % 100) == 0) \
73 { \
74 clog_info("Waiting for: {} since {}s", ___expr___, i / 100); \
75 } \
76 } \
77 (void)0
78
79#define KNOWCORE_TEST_WAIT_FOR(_CONDITION_) KNOWCORE_TEST_WAIT_FOR_ACT(_CONDITION_, )
Class that can contains large numeric value.
Definition BigNumber.h:51
Definition Timestamp.h:39
_unit_ toEpoch() const
Definition Timestamp.h:161
Definition Unit.h:17
QString symbol() const
Definition Unit.cpp:245
bool isValid() const
Definition Unit.cpp:259
Definition Uri.h:15
Definition Value.h:21