Next: , Up: assertions   [Contents][Index]


6.1 Generic assertions

Preprocessor Macro: void cctests_assert (cce_destination_t L, expr)
Preprocessor Macro: void cctests_assert (cce_destination_t L, expr, char const * message, …)

Evaluate the expression expr; this macro is similar, but not equal, to the standard assert(). If the expression evaluates to true: just return. Otherwise raise an exception of type cctests_condition_assertion_t by performing a non–local exit to L.

When the optional argument message and the following arguments are used: a dynamically allocated string is formatted using message as template and printf() format specifiers; this string is used as description message for the assertion violation.

Preprocessor Macro: void cctests_assert_true (cce_destination_t L, expr)
Preprocessor Macro: void cctests_assert_true (cce_destination_t L, expr, char const * message, …)

An alias for cctests_assert().

Preprocessor Macro: void cctests_assert_false (cce_destination_t L, expr)
Preprocessor Macro: void cctests_assert_false (cce_destination_t L, expr, char const * message, …)

Evaluate the expression expr. If the expression evaluates to false: just return. Otherwise raise an exception of type cctests_condition_assertion_t by performing a non–local exit to L.

When the optional argument message and the following arguments are used: a dynamically allocated string is formatted using message as template and printf() format specifiers; this string is used as description message for the assertion violation.

Here are some usage examples:

void
test_1_1 (cce_destination_t L)
{
  cctests_assert(L, true);   /* success */
}

void
test_1_2 (cce_destination_t L)
{
  cctests_assert(L, false);  /* failure */
}

void
test_1_3 (cce_destination_t L)
{
  void *  P = malloc(16);

  cctests_assert(L, NULL != P);
}

void
test_1_4 (cce_destination_t L)
{
  char const *  A = "ciao";
  char const *  B = "hello";

  cctests_assert(L, 0 == strcmp(A, B),
                 "Unqual strings: %s, %s", A, B);
}

void
test_1_5 (cce_destination_t upper_L)
{
  cce_location_t       L[1];
  cce_clean_handler_t  P_H[1];

  if (cce_location(L)) {
    cce_run_catch_handlers_raise(L, upper_L);
  } else {
    void *      P = cce_sys_malloc_guarded(L, P_H, 1024);

    /* do something with P, then: */
    cctests_assert(L, some_predicate(P));

    cce_run_body_handlers(L);
  }
}

Next: , Up: assertions   [Contents][Index]

This document describes version 0.4.1-devel.1 of CCTests.