38 location (
const char *file,
int line,
const char *
function)
39 : m_file (file), m_line (line), m_function (
function) {}
43 const char *m_function;
49#define SELFTEST_LOCATION \
50 (::selftest::location (__FILE__, __LINE__, __FUNCTION__))
58extern void pass (
const location &loc,
const char *
msg);
62extern void fail (
const location &loc,
const char *
msg)
105 const char *get_filename ()
const {
return m_filename; }
121 const char *
content,
size_t sz);
185 vec <tree> ¶m_types,
198extern char *read_file (
const location &loc,
const char *path);
287#define ASSERT_TRUE(EXPR) \
288 ASSERT_TRUE_AT (SELFTEST_LOCATION, (EXPR))
293#define ASSERT_TRUE_AT(LOC, EXPR) \
294 SELFTEST_BEGIN_STMT \
295 const char *desc_ = "ASSERT_TRUE (" #EXPR ")"; \
296 bool actual_ = (EXPR); \
298 ::selftest::pass ((LOC), desc_); \
300 ::selftest::fail ((LOC), desc_); \
307#define ASSERT_FALSE(EXPR) \
308 ASSERT_FALSE_AT (SELFTEST_LOCATION, (EXPR))
313#define ASSERT_FALSE_AT(LOC, EXPR) \
314 SELFTEST_BEGIN_STMT \
315 const char *desc_ = "ASSERT_FALSE (" #EXPR ")"; \
316 bool actual_ = (EXPR); \
318 ::selftest::fail ((LOC), desc_); \
320 ::selftest::pass ((LOC), desc_); \
327#define ASSERT_EQ(VAL1, VAL2) \
328 ASSERT_EQ_AT ((SELFTEST_LOCATION), (VAL1), (VAL2))
333#define ASSERT_EQ_AT(LOC, VAL1, VAL2) \
334 SELFTEST_BEGIN_STMT \
335 const char *desc_ = "ASSERT_EQ (" #VAL1 ", " #VAL2 ")"; \
336 if ((VAL1) == (VAL2)) \
337 ::selftest::pass ((LOC), desc_); \
339 ::selftest::fail ((LOC), desc_); \
346#define ASSERT_KNOWN_EQ(VAL1, VAL2) \
347 ASSERT_KNOWN_EQ_AT ((SELFTEST_LOCATION), (VAL1), (VAL2))
352#define ASSERT_KNOWN_EQ_AT(LOC, VAL1, VAL2) \
353 SELFTEST_BEGIN_STMT \
354 const char *desc = "ASSERT_KNOWN_EQ (" #VAL1 ", " #VAL2 ")"; \
355 if (known_eq (VAL1, VAL2)) \
356 ::selftest::pass ((LOC), desc); \
358 ::selftest::fail ((LOC), desc); \
365#define ASSERT_NE(VAL1, VAL2) \
366 SELFTEST_BEGIN_STMT \
367 const char *desc_ = "ASSERT_NE (" #VAL1 ", " #VAL2 ")"; \
368 if ((VAL1) != (VAL2)) \
369 ::selftest::pass (SELFTEST_LOCATION, desc_); \
371 ::selftest::fail (SELFTEST_LOCATION, desc_); \
377#define ASSERT_NE_AT(LOC, VAL1, VAL2) \
378 SELFTEST_BEGIN_STMT \
379 const char *desc_ = "ASSERT_NE (" #VAL1 ", " #VAL2 ")"; \
380 if ((VAL1) != (VAL2)) \
381 ::selftest::pass ((LOC), desc_); \
383 ::selftest::fail ((LOC), desc_); \
390#define ASSERT_MAYBE_NE(VAL1, VAL2) \
391 ASSERT_MAYBE_NE_AT ((SELFTEST_LOCATION), (VAL1), (VAL2))
396#define ASSERT_MAYBE_NE_AT(LOC, VAL1, VAL2) \
397 SELFTEST_BEGIN_STMT \
398 const char *desc = "ASSERT_MAYBE_NE (" #VAL1 ", " #VAL2 ")"; \
399 if (maybe_ne (VAL1, VAL2)) \
400 ::selftest::pass ((LOC), desc); \
402 ::selftest::fail ((LOC), desc); \
409#define ASSERT_GT(LHS, RHS) \
410 ASSERT_GT_AT ((SELFTEST_LOCATION), (LHS), (RHS))
415#define ASSERT_GT_AT(LOC, LHS, RHS) \
416 SELFTEST_BEGIN_STMT \
417 const char *desc_ = "ASSERT_GT (" #LHS ", " #RHS ")"; \
419 ::selftest::pass ((LOC), desc_); \
421 ::selftest::fail ((LOC), desc_); \
428#define ASSERT_LT(LHS, RHS) \
429 ASSERT_LT_AT ((SELFTEST_LOCATION), (LHS), (RHS))
434#define ASSERT_LT_AT(LOC, LHS, RHS) \
435 SELFTEST_BEGIN_STMT \
436 const char *desc_ = "ASSERT_LT (" #LHS ", " #RHS ")"; \
438 ::selftest::pass ((LOC), desc_); \
440 ::selftest::fail ((LOC), desc_); \
447#define ASSERT_STREQ(VAL1, VAL2) \
448 SELFTEST_BEGIN_STMT \
449 ::selftest::assert_streq (SELFTEST_LOCATION, #VAL1, #VAL2, \
456#define ASSERT_STREQ_AT(LOC, VAL1, VAL2) \
457 SELFTEST_BEGIN_STMT \
458 ::selftest::assert_streq ((LOC), #VAL1, #VAL2, \
467#define ASSERT_STR_CONTAINS(HAYSTACK, NEEDLE) \
468 SELFTEST_BEGIN_STMT \
469 ::selftest::assert_str_contains (SELFTEST_LOCATION, #HAYSTACK, #NEEDLE, \
470 (HAYSTACK), (NEEDLE)); \
476#define ASSERT_STR_CONTAINS_AT(LOC, HAYSTACK, NEEDLE) \
477 SELFTEST_BEGIN_STMT \
478 ::selftest::assert_str_contains (LOC, #HAYSTACK, #NEEDLE, \
479 (HAYSTACK), (NEEDLE)); \
486#define ASSERT_STR_STARTSWITH(STR, PREFIX) \
487 SELFTEST_BEGIN_STMT \
488 ::selftest::assert_str_startswith (SELFTEST_LOCATION, #STR, #PREFIX, \
495#define ASSERT_PRED1(PRED1, VAL1) \
496 SELFTEST_BEGIN_STMT \
497 const char *desc_ = "ASSERT_PRED1 (" #PRED1 ", " #VAL1 ")"; \
498 bool actual_ = (PRED1) (VAL1); \
500 ::selftest::pass (SELFTEST_LOCATION, desc_); \
502 ::selftest::fail (SELFTEST_LOCATION, desc_); \
505#define SELFTEST_BEGIN_STMT do {
506#define SELFTEST_END_STMT } while (0)
union tree_node * tree
Definition coretypes.h:97
void ATTRIBUTE_NORETURN
Definition diagnostic-core.h:72
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
Definition dump-context.h:31
static void const char * msg
Definition read-md.cc:204
Definition function.h:249