*/
extern void ccunit_assert (const char* file, unsigned int line,
bool cond, const char* condstr);
+
/**
* Check for a failed assertion.
* @param file file name.
* @param ACTUAL actual value.
*/
#define CCUNIT_ASSERT_TEST(VFMT, TYP, EXPECT, OP, ACTUAL) \
- ccunit_assert_test (__FILE__, __LINE__, (EXPECT) OP (ACTUAL), \
- (#EXPECT " " #OP " " #ACTUAL), \
- VFMT, ((TYP)EXPECT), ((TYP)ACTUAL))
+ do { \
+ TYP ex = (TYP)EXPECT; \
+ TYP ac = (TYP)ACTUAL; \
+ ccunit_assert_test (__FILE__, __LINE__, ex OP ac, \
+ (#EXPECT " " #OP " " #ACTUAL), VFMT, ex, ac); \
+ } while (0)
#define CCUNIT_ASSERT_TEST_INT(EXPECT, OP, ACTUAL) \
CCUNIT_ASSERT_TEST ("%d", int, EXPECT, OP, ACTUAL)
#define CCUNIT_ASSERT_TEST_STR(EXPECT, OP, ACTUAL) \
- ccunit_assert_test (__FILE__, __LINE__, strcmp(EXPECT, ACTUAL) OP 0, \
- "strcmp (" #EXPECT ", " #ACTUAL ") " #OP " 0", \
- "%s", (char*)EXPECT, (char*)ACTUAL)
+ do { \
+ const char* ex = EXPECT; \
+ const char* ac = ACTUAL; \
+ ccunit_assert_test (__FILE__, __LINE__, strcmp(ex, ac) OP 0, \
+ "strcmp (" #EXPECT ", " #ACTUAL ") " #OP " 0", \
+ "%s", ex, ac); \
+ } while (0)
#define CCUNIT_ASSERT_NULL(ACTUAL) \
CCUNIT_ASSERT_TEST_PTR(NULL, ==, ACTUAL)