#define _UT_ASSERT_EQUAL_INTTYPE(type, escseq, expect, actual, message)  \
if ((expect) == (actual))                                                \ ←
{                                                                        \
  _UT_ASSERT(TRUE, "");                                                  \
} else {                                                                 \
  /* To ensure that expect and actual are evaluated exactly              \ ←
   * once, assign to another variable. */                                \ ←
  type _expect = (type)(expect);                                         \
  type _actual = (type)(actual);                                         \
  char buffer[ASSERT_MESSAGE_BUFFER_SIZE];                               \
  snprintf(buffer,                                                       \
           ASSERT_MESSAGE_BUFFER_SIZE - 1,                               \
           "%s\n expected: <" escseq ">\n  but was: <" escseq ">",       \
           message, _expect, _actual);                                   \
  _UT_ASSERT(FALSE, buffer);                                             \
}

orz 頼むでほんま…

あと comparator も parameterize した方が便利。