26 #include "TestRunner.h" 40 template <
typename A,
typename B>
41 void printAssertionMessage(
bool ok,
const char* file, uint16_t line,
42 const A& lhs,
const char *opName,
const B& rhs) {
50 printer->print(
"Assertion ");
51 printer->print(ok ?
"passed" :
"failed");
52 printer->print(
": (");
55 printer->print(opName);
60 printer->print(
", file ");
62 printer->print(
", line ");
64 printer->println(
'.');
72 bool Assertion::assertion(
const char* file, uint16_t line,
bool lhs,
73 const char* opName,
bool (*op)(
bool lhs,
bool rhs),
75 if (
isDone())
return false;
76 bool ok = op(lhs, rhs);
78 printAssertionMessage(ok, file, line, lhs, opName, rhs);
84 bool Assertion::assertion(
const char* file, uint16_t line,
char lhs,
85 const char* opName,
bool (*op)(
char lhs,
char rhs),
87 if (
isDone())
return false;
88 bool ok = op(lhs, rhs);
90 printAssertionMessage(ok, file, line, lhs, opName, rhs);
96 bool Assertion::assertion(
const char* file, uint16_t line,
int lhs,
97 const char* opName,
bool (*op)(
int lhs,
int rhs),
99 if (
isDone())
return false;
100 bool ok = op(lhs, rhs);
102 printAssertionMessage(ok, file, line, lhs, opName, rhs);
108 bool Assertion::assertion(
const char* file, uint16_t line,
unsigned int lhs,
109 const char* opName,
bool (*op)(
unsigned int lhs,
unsigned int rhs),
111 if (
isDone())
return false;
112 bool ok = op(lhs, rhs);
114 printAssertionMessage(ok, file, line, lhs, opName, rhs);
120 bool Assertion::assertion(
const char* file, uint16_t line,
long lhs,
121 const char* opName,
bool (*op)(
long lhs,
long rhs),
123 if (
isDone())
return false;
124 bool ok = op(lhs, rhs);
126 printAssertionMessage(ok, file, line, lhs, opName, rhs);
132 bool Assertion::assertion(
const char* file, uint16_t line,
unsigned long lhs,
133 const char* opName,
bool (*op)(
unsigned long lhs,
unsigned long rhs),
135 if (
isDone())
return false;
136 bool ok = op(lhs, rhs);
138 printAssertionMessage(ok, file, line, lhs, opName, rhs);
144 bool Assertion::assertion(
const char* file, uint16_t line,
double lhs,
145 const char* opName,
bool (*op)(
double lhs,
double rhs),
147 if (
isDone())
return false;
148 bool ok = op(lhs, rhs);
150 printAssertionMessage(ok, file, line, lhs, opName, rhs);
156 bool Assertion::assertion(
const char* file, uint16_t line,
const char* lhs,
157 const char* opName,
bool (*op)(
const char* lhs,
const char* rhs),
159 if (
isDone())
return false;
160 bool ok = op(lhs, rhs);
162 printAssertionMessage(ok, file, line, lhs, opName, rhs);
168 bool Assertion::assertion(
const char* file, uint16_t line,
const char* lhs,
169 const char *opName,
bool (*op)(
const char* lhs,
const String& rhs),
171 if (
isDone())
return false;
172 bool ok = op(lhs, rhs);
174 printAssertionMessage(ok, file, line, lhs, opName, rhs);
180 bool Assertion::assertion(
const char* file, uint16_t line,
const char* lhs,
182 bool (*op)(
const char* lhs,
const __FlashStringHelper* rhs),
183 const __FlashStringHelper* rhs) {
184 if (
isDone())
return false;
185 bool ok = op(lhs, rhs);
187 printAssertionMessage(ok, file, line, lhs, opName, rhs);
193 bool Assertion::assertion(
const char* file, uint16_t line,
const String& lhs,
194 const char *opName,
bool (*op)(
const String& lhs,
const char* rhs),
196 if (
isDone())
return false;
197 bool ok = op(lhs, rhs);
199 printAssertionMessage(ok, file, line, lhs, opName, rhs);
205 bool Assertion::assertion(
const char* file, uint16_t line,
const String& lhs,
206 const char *opName,
bool (*op)(
const String& lhs,
const String& rhs),
208 if (
isDone())
return false;
209 bool ok = op(lhs, rhs);
211 printAssertionMessage(ok, file, line, lhs, opName, rhs);
217 bool Assertion::assertion(
const char* file, uint16_t line,
const String& lhs,
219 bool (*op)(
const String& lhs,
const __FlashStringHelper* rhs),
220 const __FlashStringHelper* rhs) {
221 if (
isDone())
return false;
222 bool ok = op(lhs, rhs);
224 printAssertionMessage(ok, file, line, lhs, opName, rhs);
230 bool Assertion::assertion(
const char* file, uint16_t line,
231 const __FlashStringHelper* lhs,
const char *opName,
232 bool (*op)(
const __FlashStringHelper* lhs,
const char* rhs),
234 if (
isDone())
return false;
235 bool ok = op(lhs, rhs);
237 printAssertionMessage(ok, file, line, lhs, opName, rhs);
243 bool Assertion::assertion(
const char* file, uint16_t line,
244 const __FlashStringHelper* lhs,
const char *opName,
245 bool (*op)(
const __FlashStringHelper* lhs,
const String& rhs),
247 if (
isDone())
return false;
248 bool ok = op(lhs, rhs);
250 printAssertionMessage(ok, file, line, lhs, opName, rhs);
256 bool Assertion::assertion(
const char* file, uint16_t line,
257 const __FlashStringHelper* lhs,
const char *opName,
258 bool (*op)(
const __FlashStringHelper* lhs,
const __FlashStringHelper* rhs),
259 const __FlashStringHelper* rhs) {
260 if (
isDone())
return false;
261 bool ok = op(lhs, rhs);
263 printAssertionMessage(ok, file, line, lhs, opName, rhs);
void setPassOrFail(bool ok)
Set the status to Passed or Failed depending on ok.
bool isOutputEnabled(bool ok)
Returns true if an assertion message should be printed.
bool isVerbosity(uint8_t verbosity)
Determine if any of the given verbosity is enabled.
static const uint8_t kAssertionPassed
Print assertXxx() passed message.
bool isDone()
Return true if test is done (passed, failed, skipped, expired).
Various assertXxx() macros are defined in this header.
static Print * getPrinter()
Get the output printer used by the various assertion() methods and the TestRunner.
static const uint8_t kAssertionFailed
Print assertXxx() failed message.