Next: , Up: conditions assertion   [Contents][Index]


8.6.1 Basic assertions

The assertion exceptional–condition object–type is used by CCTests to signal failure in an assertion verification, for example by cctests_assertion(). We can instantiate this type and also derive new types from it. To catch this exceptional condition we can do:

cce_location_t        L[1];

if (cce_location(L)) {
  if (cctests_condition_is_assertion(cce_condition(L))) {
    CCTESTS_PC(cctests_condition_assertion_t, C, cce_condition(L));
    do_something_with(C);
  }
  cce_run_catch_handlers_final(L);
} else {
  do_something(L);
  cce_run_body_handlers(L);
}
Struct Typedef: cctests_descriptor_assertion_t

Type of data structure representing the exceptional–condition descriptor. It has the following public fields:

cce_descriptor_t descriptor

The condition descriptor’s base values.

The parent of this type descriptor is the one referenced by cctests_descriptor_failure_ptr, Signalling test failure.

Struct Typedef: cctests_condition_assertion_t

Type of data structure representing the exceptional–condition object. It has the following public fields:

cctests_condition_failure_t failure

The condition object’s base values.

char const * expr

Pointer to a statically allocated ASCIIZ string representing the failed assertion’s expression.

char const * filename

Pointer to a statically allocated ASCIIZ string representing the pathname of the source file in which the failed assertion is located. This value is meant to be generated with the preprocessor macro __FILE__.

char const * funcname

Pointer to a statically allocated ASCIIZ string representing the name of the function in which the failed assertion is located. This value is meant to be generated with the preprocessor macro __func__.

int linenum

The line number in the source file in which the failed assertion is located. This value is meant to be generated with the preprocessor macro __LINE__.

char const * dynamic_string

This is either NULL or a pointer to an ASCIIZ message string allocated using the standard allocator.

Function: void cce_descriptor_set_parent_to(cctests_condition_assertion_t) (cce_descriptor_t * const D)

Set the parent of the descriptor referenced by D to the descriptor of the exceptional–condition object–type cctests_condition_assertion_t.

Function: void cctests_condition_init_assertion (cctests_condition_assertion_t * C, char const * expr, char const * filename, char const * funcname, int linenum, char const * message)

Initialisation function for the condition object. This function is meant to be called from the initialisation function of sub–types of cctests_condition_assertion_t.

The strings referenced by expr, filename, funcname are not duplicated. The argument message is either NULL or a pointer to an ASCIIZ message string allocated using the standard allocator; the ownership of this string is transferred to the exceptional–condition object.

Function: cce_condition_t const * cctests_condition_new_assertion (cce_destination_t L, char const * expr, char const * filename, char const * funcname, int linenum, char const * message)

Return a pointer to exceptional condition object. If an error occurs building the instance: raise an exception by performing a non–local exit to L.

The strings referenced by expr, filename, funcname are not duplicated. The argument message is either NULL or a pointer to an ASCIIZ message string allocated using the standard allocator; the ownership of this string is transferred to the exceptional–condition object.

Function: bool cctests_condition_is_assertion (cce_condition_t const * C)

Return true if C if of type cctests_condition_assertion_t; otherwise return false.

Sub–typing example

To define a sub–type of cctests_condition_assertion_t we can copy the code in the files:

condition-assertion-subtype.c
condition-assertion-subtype-headear.h
condition-assertion-subtype-body.c

under the tests directory of the source distribution; the code defines a new condition–object type my_condition_assertion_subtype_t.


Next: , Up: conditions assertion   [Contents][Index]

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