Browse Source

lolunit: add several helper macros for various comparison checks.

legacy
Sam Hocevar sam 13 years ago
parent
commit
bcc62b548a
1 changed files with 66 additions and 20 deletions
  1. +66
    -20
      src/lol/unit.h

+ 66
- 20
src/lol/unit.h View File

@@ -201,7 +201,7 @@ public:
TestCase##TestCaseName lol_unit_test_case_##TestCaseName; \
void TestCaseName()

#define LOLUNIT_ASSERT_GENERIC(message, cond) \
#define LOLUNIT_ASSERT_GENERIC(msg, cond) \
do { \
m_asserts++; \
if (True() && !(cond)) \
@@ -213,33 +213,36 @@ public:
<< __FILE__ << std::endl; \
m_errorlog << "assertion failed" << std::endl; \
m_errorlog << "- Expression: " << #cond << std::endl; \
m_errorlog << message; \
m_errorlog << msg; \
m_failure = true; \
return; \
} \
} while(!True())

#define LOLUNIT_ASSERT_EQUAL_GENERIC(message, a, b) \
#define LOLUNIT_ASSERT_OP(op, modifier, opdesc, msg, a, b) \
do { \
m_asserts++; \
if (True() && (a) != (b)) \
if (True() && !modifier((a) op (b))) \
{ \
m_errorlog << std::endl << std::endl; \
m_errorlog << ++m_failcases << ") test: " \
<< LolUnitFixtureName(this) << "::" << m_currentname \
<< " (F) line: " << __LINE__ << " " \
<< __FILE__ << std::endl; \
m_errorlog << "equality assertion failed" << std::endl; \
m_errorlog << opdesc << " assertion failed" << std::endl; \
m_errorlog << "- Expected: " << #a << " = " << (a) << std::endl; \
m_errorlog << "- Actual : " << #b << " = " << (b) << std::endl; \
m_errorlog << message; \
m_errorlog << msg; \
m_errorlog << m_context.str(); \
m_failure = true; \
return; \
} \
} while(!True())

#define LOLUNIT_ASSERT_DOUBLES_EQUAL_GENERIC(message, a, b, t) \
#define LOLUNIT_MSG(msg) \
"- " << msg << std::endl

#define LOLUNIT_ASSERT_DOUBLES_EQUAL_GENERIC(msg, a, b, t) \
do { \
m_asserts++; \
if (True() && fabs((a) - (b)) > fabs((t))) \
@@ -256,14 +259,14 @@ public:
m_errorlog << "- Actual : " << #b << " = " << (b) << std::endl; \
m_errorlog << "- Delta : " << (t) << std::endl; \
m_errorlog << std::setprecision(old_prec); \
m_errorlog << message; \
m_errorlog << msg; \
m_errorlog << m_context.str(); \
m_failure = true; \
return; \
} \
} while(!True())

#define LOLUNIT_FAIL(message) \
#define LOLUNIT_FAIL(msg) \
do { \
m_asserts++; \
m_errorlog << std::endl << std::endl; \
@@ -272,7 +275,7 @@ public:
<< " (F) line: " << __LINE__ << " " \
<< __FILE__ << std::endl; \
m_errorlog << "forced failure" << std::endl; \
m_errorlog << "- " << message << std::endl; \
m_errorlog << "- " << msg << std::endl; \
m_errorlog << m_context.str(); \
m_failure = true; \
return; \
@@ -283,27 +286,70 @@ public:
m_context.str(""); \
m_context << "- Context : " << #n << " = " << (n) << std::endl; \
} while(!True())

#define LOLUNIT_UNSET_CONTEXT(n) \
m_context.str("")

#define LOLUNIT_ASSERT(cond) \
LOLUNIT_ASSERT_GENERIC("", cond)
#define LOLUNIT_ASSERT_MESSAGE(m, cond) \
LOLUNIT_ASSERT_GENERIC(LOLUNIT_MSG(m), cond)

#define LOLUNIT_ASSERT_MESSAGE(message, cond) \
LOLUNIT_ASSERT_GENERIC("- " << message << std::endl, cond)

#define LOLUNIT_ASSERT_EQUAL(a, b) \
LOLUNIT_ASSERT_EQUAL_GENERIC("", a, b)

#define LOLUNIT_ASSERT_EQUAL_MESSAGE(message, a, b) \
LOLUNIT_ASSERT_EQUAL_GENERIC("- " << message << std::endl, a, b)
LOLUNIT_ASSERT_OP(==, !!, "equality", "", a, b)
#define LOLUNIT_ASSERT_EQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(==, !!, "equality", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_DIFFERENT(a, b) \
LOLUNIT_ASSERT_OP(!=, !!, "inequality", "", a, b)
#define LOLUNIT_ASSERT_DIFFERENT_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(!=, !!, "inequality", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_LESS(a, b) \
LOLUNIT_ASSERT_OP(<, !!, "less than", "", a, b)
#define LOLUNIT_ASSERT_LESS_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(<, !!, "less than", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_LEQUAL(a, b) \
LOLUNIT_ASSERT_OP(<=, !!, "less than or equal", "", a, b)
#define LOLUNIT_ASSERT_LEQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(<=, !!, "less than or equal", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_GREATER(a, b) \
LOLUNIT_ASSERT_OP(>, !!, "greater than", "", a, b)
#define LOLUNIT_ASSERT_GREATER_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(>, !!, "greater than", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_GEQUAL(a, b) \
LOLUNIT_ASSERT_OP(>=, !!, "greater than or equal", "", a, b)
#define LOLUNIT_ASSERT_GEQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(>=, !!, "greater than or equal", LOLUNIT_MSG(m), a, b)


#define LOLUNIT_ASSERT_NOT_EQUAL(a, b) \
LOLUNIT_ASSERT_OP(==, !, "not equality", "", a, b)
#define LOLUNIT_ASSERT_NOT_EQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(==, !, "not equality", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_NOT_DIFFERENT(a, b) \
LOLUNIT_ASSERT_OP(!=, !, "not inequality", "", a, b)
#define LOLUNIT_ASSERT_NOT_DIFFERENT_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(!=, !, "not inequality", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_NOT_LESS(a, b) \
LOLUNIT_ASSERT_OP(<, !, "not less than", "", a, b)
#define LOLUNIT_ASSERT_NOT_LESS_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(<, !, "not less than", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_NOT_LEQUAL(a, b) \
LOLUNIT_ASSERT_OP(<=, !, "not less than or equal", "", a, b)
#define LOLUNIT_ASSERT_NOT_LEQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(<=, !, "not less than or equal", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_NOT_GREATER(a, b) \
LOLUNIT_ASSERT_OP(>, !, "not greater than", "", a, b)
#define LOLUNIT_ASSERT_NOT_GREATER_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(>, !, "not greater than", LOLUNIT_MSG(m), a, b)
#define LOLUNIT_ASSERT_NOT_GEQUAL(a, b) \
LOLUNIT_ASSERT_OP(>=, !, "not greater than or equal", "", a, b)
#define LOLUNIT_ASSERT_NOT_GEQUAL_MESSAGE(m, a, b) \
LOLUNIT_ASSERT_OP(>=, !, "not greater than or equal", LOLUNIT_MSG(m), a, b)

#define LOLUNIT_ASSERT_DOUBLES_EQUAL(a, b, t) \
LOLUNIT_ASSERT_DOUBLES_EQUAL_GENERIC("", a, b, t)

#define LOLUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(message, a, b, t) \
LOLUNIT_ASSERT_DOUBLES_EQUAL_GENERIC("- " << message << std::endl, a, b, t)
#define LOLUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(msg, a, b, t) \
LOLUNIT_ASSERT_DOUBLES_EQUAL_GENERIC("- " << msg << std::endl, a, b, t)

} /* namespace lol */



Loading…
Cancel
Save