Next: conditions assertion expected, Up: conditions assertion [Contents][Index]
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); }
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.
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.
Set the parent of the descriptor referenced by D to the descriptor of the
exceptional–condition object–type cctests_condition_assertion_t
.
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.
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.
Return true
if C if of type cctests_condition_assertion_t
; otherwise
return false
.
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: conditions assertion expected, Up: conditions assertion [Contents][Index]
This document describes version 0.4.1-devel.1 of CCTests.