do { \
auto _fl_a = (a); \
auto _fl_b = (b); \
auto _fl_diff = _fl_a - _fl_b; \
if (_fl_diff < 0) _fl_diff = -_fl_diff; \
bool _fl_result = _fl_diff <= (epsilon); \
fl::test::AssertResult ar(_fl_result); \
ar.mLocation =
fl::test::SourceLocation(__FILE__, __LINE__); \
ss << #a << " ~= " << #b << " (eps=" << (epsilon) << ")"; \
ar.mExpression = ss.str(); \
if (!_fl_result) { \
fl::sstream ess; \
ess << _fl_a << " ~= " << _fl_b << " (diff=" << _fl_diff << ")"; \
ar.mExpanded = ess.str(); \
} \
fl::test::TestContext::instance().reportAssert(ar); \
} while (0)
Base definition for an LED controller.
1083#define FL_CHECK_CLOSE(a, b, epsilon) \
1084 do { \
1085 auto _fl_a = (a); \
1086 auto _fl_b = (b); \
1087 auto _fl_diff = _fl_a - _fl_b; \
1088 if (_fl_diff < 0) _fl_diff = -_fl_diff; \
1089 bool _fl_result = _fl_diff <= (epsilon); \
1090 fl::test::AssertResult ar(_fl_result); \
1091 ar.mLocation = fl::test::SourceLocation(__FILE__, __LINE__); \
1092 fl::sstream ss; \
1093 ss << #a << " ~= " << #b << " (eps=" << (epsilon) << ")"; \
1094 ar.mExpression = ss.str(); \
1095 if (!_fl_result) { \
1096 fl::sstream ess; \
1097 ess << _fl_a << " ~= " << _fl_b << " (diff=" << _fl_diff << ")"; \
1098 ar.mExpanded = ess.str(); \
1099 } \
1100 fl::test::TestContext::instance().reportAssert(ar); \
1101 } while (0)