Actual test of assert*() methods for < > <= >= == !=.
Actual test of assert*() methods for < > <= >= == !=.
class InverseWrapper
{
public:
typedef int Value;
Value value;
InverseWrapper(const Value& value)
:value(value)
{
}
bool operator==(const InverseWrapper& right) const
{
return value == right.value;
}
bool operator!=(const InverseWrapper& right) const
{
return value != right.value;
}
bool operator <(const InverseWrapper& right) const
{
return !(value < right.value);
}
bool operator >(const InverseWrapper& right) const
{
return !(value > right.value);
}
bool operator <=(const InverseWrapper& right) const
{
return (value == right.value) || ((*this) < right);
}
bool operator >=(const InverseWrapper& right) const
{
return (value == right.value) || ((*this) > right);
}
};
std::ostream& operator <<(std::ostream& out, const InverseWrapper& wrapper)
{
out << "InverseWrapper(" << wrapper.value << ")";
return out;
}
#define testLessGreater(lesser, greater) \
{ \
assertLess(lesser, greater, "pass: lesser < greater"); \
EXPECTED_FAILURE(assertLess(greater, lesser, "FAIL: greater < lesser"), "verify FAIL: greater < lesser"); \
assertGreater(greater, lesser, "greater > lesser"); \
EXPECTED_FAILURE(assertGreater(lesser, greater, "FAIL: lesser > greater"), "verify FAIL: FAIL: lesser > greater"); \
}
#define testLessEqualGreaterEqual(lesser, greater) \
{ \
assertLessEqual(lesser, lesser, "pass: lesser <= lesser"); \
assertGreaterEqual(greater, lesser, "lesser >= lesser"); \
\
assertLessEqual(lesser, greater, "pass: lesser <= greater"); \
EXPECTED_FAILURE(assertLessEqual(greater, lesser, "FAIL: greater <= lesser"), "verify FAIL: greater <= lesser"); \
assertGreaterEqual(greater, lesser, "greater >= lesser"); \
EXPECTED_FAILURE(assertGreaterEqual(lesser, greater, "FAIL: lesser >= greater"), "verify FAIL: FAIL: lesser >= greater"); \
}
{
testLessGreater(0, 1);
testLessGreater('a', 'b');
testLessGreater(0.0, 1.0);
}
{
testLessGreater(InverseWrapper(1), InverseWrapper(0));
EXPECTED_FAILURE(testLessGreater(InverseWrapper(0), InverseWrapper(1)),
"verify FAIL: inverse(0) vs. inverse(1)");
}
TEST_CASE(assertLessEqualGreaterEqual_Numeric)
{
testLessEqualGreaterEqual(0, 1);
testLessEqualGreaterEqual('a', 'b');
testLessEqualGreaterEqual(0.0, 1.0);
}
TEST_CASE(assertLessEqualGreaterEqual_Object)
{
testLessEqualGreaterEqual(InverseWrapper(1), InverseWrapper(0));
}
{
assertEqual(InverseWrapper(0), InverseWrapper(0),
"Same .values");
}
{
assertNotEqual(InverseWrapper(0), InverseWrapper(1),
"Not not same .values");
}
#define assertEqual(first, second, message)
Fail this test if (first) is not equal to (second) with the given message as explanation.
#define assertNotEqual(first, second, message)
Fail this test if (first) is equal to (second) with the given message as explanation.
#define EXPECTED_FAILURE(expression, message)
Fail this test if evaluating (expression) does not result itself in a failed test.
#define TEST_SUITE_END()
Finish definition of a Test Suite started with TEST_SUITE().
#define TEST_CASE(testCaseName)
Defines a Test Case method named testCaseName within a Test Suite defined by TEST_SUITE().
#define TEST_SUITE(testSuiteName)
Defines a Test Suite named testSuiteName.