Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
CUnit(3)		    CUnit Programmer's Manual			CUnit(3)

NAME
     CUnit - A unit testing framework for C

SYNOPSIS
     #include <CUnit/CUnit.h>	   ASSERT definitions, test management.
     #include <CUnit/Automated.h>  Automated interface with xml output.
     #include <CUnit/Basic.h>	   Basic interface with console output.
     #include <CUnit/Console.h>    Interactive console interface.
     #include <CUnit/CUCurses.h>   Interactive curses interface.

DESCRIPTION
     CUnit  is a system for writing, administering, and running unit tests in C.
     It uses a simple framework for building test  structures,	and  provides  a
     rich  set of assertions for testing common data types.  CUnit is built as a
     static library which is linked with the user's testing code.

STRUCTURE & GENERAL USAGE
     CUnit is a combination of a  platform-independent	framework  with  various
     user  interfaces.	The core framework provides basic support for managing a
     test registry, suites, and test cases. The user interfaces  facilitate  in-
     teraction with the framework to run tests and view results.

     The basic hierarchichal organization of CUnit is depicted here:

		       Test Registry
			     |
		-----------------------------
		|			    |
	     Suite '1'	    . . . .	 Suite 'N'
		|			    |
	  ---------------	      ---------------
	  |		|	      | 	    |
       Test '11' ... Test '1M'	   Test 'N1' ... Test 'NM'

     Individual  test  cases are packaged into suites, which are registered with
     the active test registry.	Suites can have  setup	and  teardown  functions
     which  are automatically called before and after running the suite's tests.
     All suites/tests in the registry may be run using a single  function  call,
     or selected suites or tests can be run.

     The typical usage of CUnit is:

     1. Write functions for tests (and suite init/cleanup if necessary).
     2. Initialize the test registry using CU_initialize_registry()
     3. Add test suites to the registry using CU_add_suite()
     4. Add test cases to the suites using CU_add_test()
     5. Run tests using the desired interface, e.g.
	CU_console_run_tests() to use the interactive console.
     6. Cleanup the test registry using CU_cleanup_registry()

     All  public  names  in  CUnit are prefixed with 'CU_'.  This helps minimize
     clashes with names in user code.  Note that  earlier  versions  CUnit  used
     different	names  without	this prefix.  The older API names are deprecated
     but still supported.  To use the older names, user code must  now	be  com-
     piled with USE_DEPRECATED_CUNIT_NAMES defined.

WRITING TEST FUNCTIONS
     A "test" is a C function having the signature: void test_func(void).  There
     are  no  restrictions  on	the  content  of a test function, except that it
     should not modify the CUnit framework (e.g. add suites or tests, modify the
     test registry, or initiate a test run).  A test  function	may  call  other
     functions	(which	also  may not modify the framework).  Registering a test
     will cause it's function to be run when the test is run.

     CUnit provides a set of assertions for  testing  logical  conditions.   The
     success or failure of these assertions is tracked by the framework, and can
     be viewed when a test run is complete.  Each assertion tests a single logi-
     cal  condition,  and  fails  if  the condition evaluates to CU_FALSE.  Upon
     failure, the test continues unless the user chooses the 'xxx_FATAL' version
     of an assertion.  In that case, the test function returns immediately.

     CUnit provides a set of assertions for  testing  logical  conditions.   The
     success or failure of these assertions is tracked by the framework, and can
     be viewed when a test run is complete.

     Each assertion tests a single logical condition, and fails if the condition
     evaluates	to  CU_FALSE.	Upon failure, the test function continues unless
     the user chooses the 'xxx_FATAL' version of an assertion.	 In  that  case,
     the  test	function  is aborted and returns immediately.  FATAL versions of
     assertions should be used with caution!  There is no  opportunity	for  the
     test  function  to clean up after itself once a FATAL assertion fails.  The
     normal suite cleanup function is not affected, however.

     There are also special "assertions" for registering a pass or fail with the
     framework without performing a logical test.  These are useful for  testing
     flow of control or other conditions not requiring a logical test.

     Other  functions called by a registered test function may use the CUnit as-
     sertions freely.  These assertions will be counted for  the  calling  func-
     tion.   They may also use FATAL versions of assertions - failure will abort
     the original test function and its entire call chain.

     The assertions defined by CUnit are:

     #include <CUnit/CUnit.h>

     CU_ASSERT(int expression)
     CU_ASSERT_FATAL(int expression)
     CU_TEST(int expression)
     CU_TEST_FATAL(int expression)
	  Assert that expression is CU_TRUE (non-zero).

     CU_ASSERT_TRUE(value)
     CU_ASSERT_TRUE_FATAL(value)
	  Assert that value is CU_TRUE (non-zero).

     CU_ASSERT_FALSE(value)
     CU_ASSERT_FALSE_FATAL(value)
	  Assert that value is CU_FALSE (zero).

     CU_ASSERT_EQUAL(actual, expected)
     CU_ASSERT_EQUAL_FATAL(actual, expected)
	  Assert that actual == expected.

     CU_ASSERT_NOT_EQUAL(actual, expected)
     CU_ASSERT_NOT_EQUAL_FATAL(actual, expected)
	  Assert that actual != expected.

     CU_ASSERT_PTR_EQUAL(actual, expected)
     CU_ASSERT_PTR_EQUAL_FATAL(actual, expected)
	  Assert that pointers actual == expected.

     CU_ASSERT_PTR_NOT_EQUAL(actual, expected)
     CU_ASSERT_PTR_NOT_EQUAL_FATAL(actual, expected)
	  Assert that pointers actual != expected.

     CU_ASSERT_PTR_NULL(value)
     CU_ASSERT_PTR_NULL_FATAL(value)
	  Assert that pointer value == NULL.

     CU_ASSERT_PTR_NOT_NULL(value)
     CU_ASSERT_PTR_NOT_NULL_FATAL(value)
	  Assert that pointer value != NULL.

     CU_ASSERT_STRING_EQUAL(actual, expected)
     CU_ASSERT_STRING_EQUAL_FATAL(actual, expected)
	  Assert that strings actual and expected are equivalent.

     CU_ASSERT_STRING_NOT_EQUAL(actual, expected)
     CU_ASSERT_STRING_NOT_EQUAL_FATAL(actual, expected)
	  Assert that strings actual and expected differ.

     CU_ASSERT_NSTRING_EQUAL(actual, expected, count)
     CU_ASSERT_NSTRING_EQUAL_FATAL(actual, expected, count)
	  Assert that 1st count chars of actual and expected are the same.

     CU_ASSERT_NSTRING_NOT_EQUAL(actual, expected, count)
     CU_ASSERT_NSTRING_NOT_EQUAL_FATAL(actual, expected, count)
	  Assert that 1st count chars of actual and expected differ.

     CU_ASSERT_DOUBLE_EQUAL(actual, expected, granularity)
     CU_ASSERT_DOUBLE_EQUAL_FATAL(actual, expected, granularity)
	  Assert that |actual - expected| <= |granularity|.
	  Math library must be linked in for this assertion.

     CU_ASSERT_DOUBLE_NOT_EQUAL(actual, expected, granularity)
     CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL(actual, expected, granularity)
	  Assert that |actual - expected| > |granularity|.
	  Math library must be linked in for this assertion.

     CU_PASS(message)
	  Register a success without performing a logical test.

     CU_FAIL(message)
     CU_FAIL_FATAL(message)
	  Register a failure without performing a logical test.

THE TEST REGISTRY
     The test registry is the repository for suites and associated  tests.   The
     user normally only needs to initialize the registry before use and clean up
     afterwards.   However,  other functions are provided to manipulate the reg-
     istry when necessary.

     The main functions needed by clients are:

     #include <CUnit/TestDB.h> (included automatically by <CUnit/CUnit.h>)

     CU_ErrorCode CU_initialize_registry(void)
	  Initializes the framework.  This function should be called before  any
	  other  CUnit	functions.   Failure  to  do  so will likely result in a
	  crash.  An error status code is returned:

	  CUE_SUCCESS	 if initialization is successful.

	  CUE_NOMEMORY	 if memory allocation failed.

     CU_BOOL CU_registry_initialized(void)
	  Checks whether the framework has been initialized.  This may be useful
	  if the registry setup is distributed over multiple files that need  to
	  make sure the registry is ready for test registration.

     void CU_cleanup_registry(void)
	  Cleans  up  and releases memory used by the framework.  No CUnit func-
	  tions (other than CU_initialize_registry() ) should  be  called  after
	  this	function.   Failure to call CU_cleanup_registry() will result in
	  memory leaks.  Note also that this function will  destroy  all  suites
	  (and associated tests) in the registry.

     Other  registry  functions are primarily for internal and testing purposes.
     However, general users may find use for them and should be aware  of  them.
     These include:

     CU_pTestRegistry CU_get_registry(void)
	  Retrieve  a  pointer	to  the active test registry.  The registry is a
	  variable of data type CU_Testregistry (declared in  <CUnit/TestDB.h>).
	  Note	that  the  returned  pointer  will  be	invalidated by a call to
	  CU_cleanup_registry() or CU_initialize_registry()

     CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry)
	  Replace the active registry with the specified one.  A pointer to  the
	  previous  registry  is returned.  It is the caller's responsibility to
	  destroy the old registry.   This  can  be  accomplished  using  CU_de-
	  stroy_existing_registry() on the returned pointer.  Alternatively, the
	  old  registry  can  be  set  as  the active one.  A subsequent call to
	  CU_cleanup_registry() will then destroy it automatically.  Care should
	  be taken not to explicitly destroy a registry that is set as	the  ac-
	  tive one.  This will result in multiple frees of the same memory and a
	  likely crash.

     CU_pTestRegistry CU_create_new_registry(void)
	  Create  a  new  registry and return a pointer to it.	The new registry
	  will not contain any suites or tests.  It is the caller's responsibil-
	  ity to destroy the new registry by one  of  the  mechanisms  described
	  previously.

     void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry)
	  Destroy  the specified test registry, including any registered suites.
	  This function should not be called for a registry which is set as  the
	  active test registry.  This will result in a multiple free of the same
	  memory  when	CU_cleanup_registry()  is called.  ppRegistry may not be
	  NULL, but the pointer it points to may be.  Note that *ppRegistry will
	  be NULL on return.

MANAGING TESTS AND SUITES
     In order for a test to be run by CUnit, it must be added to a test  collec-
     tion (suite) which is registered with the test registry.

   Adding Suites to the Registry
     The  first step in setting up a test system is creating and registering one
     or more test collections (suites).  Each suite has a name which may be used
     to reference the suite.  Therefore, it is recommended  (but  not  required)
     that  each registered suite have a unique name.  The current implementation
     does not support the creation of suites independent of the  test  registry.
     Suites  are simultaneously created and added to the active registry as fol-
     lows.

     #include <CUnit/TestDB.h> (included automatically by <CUnit/CUnit.h>)

     CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc pInit,
	  CU_CleanupFunc pClean)" This creates and registers a new suite  having
	  the  specified name, initialization function, and cleanup function.  A
	  pointer to the new suite is returned for use in adding  tests  to  the
	  suite.   This  pointer will be NULL if a fatal error occurs.	In addi-
	  tion, the framework error status is set as follows:

	  CUE_SUCCESS	    The suite was successfully created and registered.

	  CUE_NOREGISTRY    Error: Test Registry is not initialized.

	  CUE_NO_SUITENAME  Error: Suite name is not specified or NULL.

	  CUE_DUP_SUITE     Warning: The registry already has a suite with  this
			    name.

	  CUE_NOMEMORY	    Error: Memory allocation failed.

	  The  initialization  and  cleanup  functions are optional.  Both are C
	  functions having the signature int func_name(void).	These  functions
	  can  perform	setup  and  teardown  operations  needed  to support the
	  suite's tests.  They are called before and after the suite's tests are
	  run, even if only 1 of the suite's tests is run.  They take  no  argu-
	  ments,  and should return NULL if they complete successfully (non-NULL
	  otherwise).  If either function  is  not  required  for  a  particular
	  suite, pass NULL to CU_add_suite().

   Adding Tests to Suites
     Tests  are  created and added to suites.  Each test has a name which may be
     used to reference the test later.	Therefore, it is  recommended  (but  not
     required)	that the name be unique among all tests added to a single suite.
     The current implementation does not support the creation of tests	indepen-
     dent of registered suites.  Tests are simultaneously created and added to a
     suite as follows.

     #include <CUnit/TestDB.h> (included automatically by <CUnit/CUnit.h>)

     CU_pTest  CU_add_test(CU_pSuite pSuite, const char* strName, CU_TestFunc
	  pTestFunc)" This creates a new test having the specified name and test
	  function,  and  adds it to the indicated suite.  The suite should have
	  been previously created using CU_add_suite().  A pointer  to	the  new
	  test	is  returned,  which will be NULL if a fatal error occurred.  In
	  addition, the framework error status is set as follows:

	  CUE_SUCCESS	    The test was successfully created and added.

	  CUE_NOREGISTRY    Error: Test Registry is not initialized.

	  CUE_NOSUITE	    Error: Specified suite is NULL or invalid.

	  CUE_NO_TESTNAME   Error: Test name is not specified or NULL.

	  CUE_NOTEST	    Error: Test function is not specified or NULL.

	  CUE_DUP_TEST	    Warning: The suite already	has  a	test  with  this
			    name.

	  CUE_NOMEMORY	    Error: Memory allocation failed.

   Activation of Suites and Tests
     A suite or test must be active to be executed during a test run (all suites
     and  tests  are  active  by  default upon creation).  The active state of a
     suite or test is available as pSuite->fActive and	pTest->fActive,  respec-
     tively.   The flag will be CU_TRUE when the entity is active, CU_FALSE oth-
     erwise.  Use the following functions to selectively deactivate  suites  and
     tests  to	choose	subsets  of tests to run dynamically.  Note that it is a
     framework error to deactivate a test or suite and then specifically request
     that it be run.

     #include <CUnit/TestDB.h> (included automatically by <CUnit/CUnit.h>)

     CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive)

     CU_ErrorCode CU_set_test_active(CU_pTest pTest, CU_BOOL fNewActive)
	  Pass CU_TRUE to these functions to activate a suite/test, CU_FALSE  to
	  deactivate it.  These functions return CUE_NOSUITE and CUE_NOTEST, re-
	  spectively, if the specified suite or test is NULL.

   Modifying Other Attributes of Suites and Tests
     Normally  the  attributes of suites and tests are set at creation time.  In
     some cases, a client may wish to manipulate these to modify the test struc-
     ture dynamically.	The following functions are provided for  this	purpose,
     and should be used instead of directly setting the value of the data struc-
     ture  members.   All return CUE_SUCCESS on success, and the indicated error
     code on failure.

     CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName)

     CU_ErrorCode CU_set_test_name(CU_pTest pTest, const char *strNewName)
	  These functions change the name of registered suites and  tests.   The
	  current  names  are available as the pSuite->pName</I> and data struc-
	  ture members.  If the suite or  test	is  NULL,  then  CUE_NOSUITE  or
	  CUE_NOTEST  is  returned,  respectively.   If strNewName is NULL, then
	  CUE_NO_SUITENAME or CUE_NO_TESTNAME is returned, respectively.

     CU_ErrorCode CU_set_suite_initfunc(CU_pSuite pSuite, CU_InitializeFunc
     pNewInit)

     CU_ErrorCode CU_set_suite_cleanupfunc(CU_pSuite pSuite, CU_CleanupFunc
     pNewClean)
	  These functions change the initialization and cleanup functions for  a
	  registered   suite.	The  current  functions  are  available  as  the
	  pSuite->pInitializeFunc and pSuite->pCleanupFunc data  structure  mem-
	  bers.  If the suite is NULL then CUE_NOSUITE is returned.

     CU_ErrorCode CU_set_test_func(CU_pTest pTest, CU_TestFunc pNewFunc)
	  This	function  changes  the test function for a registered test.  The
	  current test function is available as  the  pTest->pTestFunc</I>  data
	  structure   member.	If  either  pTest  or  pNewFunc  is  NULL,  then
	  CUE_NOTEST is returned.

   Lookup of Individual Suites and Tests
     In most cases, clients will have references to registered suites and  tests
     as pointers returned from CU_add_suite() and CU_add_test().  Occassionally,
     a	client	may  need to be able to retrieve a reference to a suite or test.
     The following functions are provided to assist clients with this  when  the
     client  has  some	information about the entity (name or order of registra-
     tion).  In cases where nothing is known about the suite or test, the client
     will need to iterate the internal data structures to enumerate  the  suites
     and tests.  This is not directly supported in the client API.

     CU_pSuite	     CU_get_suite(const       char*	 strName)      CU_pSuite
     CU_get_suite_at_pos(unsigned	int	  pos)	     unsigned	     int
     CU_get_suite_pos(CU_pSuite 	  pSuite)	   unsigned	     int
     CU_get_suite_pos_by_name(const char* strName) </P> These functions  facili-
     tate  lookup of suites registered in the active test registry.  The first 2
     functions allow lookup of the suite by name or position and return NULL  if
     the suite cannot be found.  The position is a 1-based index in the range [1
     ..  CU_get_registry() ->uiNumberOfSuites].  This may be helpful when suites
     having  duplicate	names  are  registered, in which case lookup by name can
     only retrieve the 1st suite having that name.  The second 2 functions  help
     the  client identify the position of a registered suite.  These return 0 if
     the suite cannot be found.  In addition, all these functions set the  CUnit
     error  state to CUE_NOREGISTRY> if the registry is not initialized.  As ap-
     propriate, CUE_NO_SUITENAME is set if strName is NULL, and  CUE_NOSUITE  is
     set if pSuite is NULL.

     CU_pTest	CU_get_test(CU_pSuite  pSuite,	const  char  *strName)	CU_pTest
     CU_get_test_at_pos<(CU_pSuite  pSuite,  unsigned  int  pos)  unsigned   int
     CU_get_test_pos<(CU_pSuite    pSuite,    CU_pTest	 pTest)   unsigned   int
     CU_get_test_pos_by_name(CU_pSuite pSuite, const char *strName) These  func-
     tions  facilitate	lookup of tests registered in suites.  The first 2 func-
     tions allow lookup of the test by name or position and return NULL  if  the
     test  cannot  found.   The  position  is a 1-based index in the range [1 ..
     pSuite->uiNumberOfSuites].  This may be helpful when tests having duplicate
     names are registered, in which case lookup by name can  only  retrieve  the
     1st test having that name.  The second 2 functions help the client identify
     the  position  of	a test in a suite.  These return 0 if the test cannot be
     found.  In addition, all these functions  set  the  CUnit	error  state  to
     CUE_NOREGISTRY  if  the  registry is not initialized, and to CUE_NOSUITE if
     pSuite is NULL.  As appropriate, CUE_NO_TESTNAME is set if strName is NULL,
     and CUE_NOTEST is set if pTest is NULL.

RUNNING TESTS
     CUnit supports running all tests in all registered suites,  but  individual
     tests  or	suites	can  also  be run.  During each run, the framework keeps
     track of the number of suites,  tests,  and  assertions  run,  passed,  and
     failed.  Note that the previous results are cleared each time a test run is
     initiated (even if it fails).

     While CUnit provides primitive functions for running suites and tests, most
     users will want to use one of the user interfaces.  These interfaces handle
     the  details  of  interaction with the framework and provide output of test
     details and results for the user.	For more about the primitive  functions,
     see <CUnit/testRun.h>.

   Test Results
     The  interfaces present results of test runs, but client code may sometimes
     need to access the results directly.  These  results  include  various  run
     counts, as well as a linked list of failure records holding the failure de-
     tails.   Test  results  must  be  retrieved  before attempting to run other
     tests, which resets the result information.  Functions  for  accessing  the
     test results are:

     #include <CUnit/TestRun.h> (included automatically by <CUnit/CUnit.h>)

     unsigned int CU_get_number_of_suites_run(void)'
	  Retrieve  the number of suites run.  Suite having initialization func-
	  tions which fail are not run.  To get the total number  of  registered
	  suites, use CU_get_registry()->uiNumberOfSuites.

     unsigned int CU_get_number_of_suites_failed(void)
	  Retrieve  the  number  of  suites  which had initialization or cleanup
	  functions which failed (returned non-NULL).

     unsigned int CU_get_number_of_tests_run(void)
	  Retrieve the number of tests run.  Tests in suites having  initializa-
	  tion	functions  which  fail	are not run.  To get the total number of
	  registered tests , use CU_get_registry()->uiNumberOfTests.

     unsigned int CU_get_number_of_tests_failed(void)
	  Retrieve the number of tests which contained at least 1 failed  asser-
	  tion.

     unsigned int CU_get_number_of_asserts(void)
	  Retrieve the number of CUnit assertions made during the test run.

     unsigned int CU_get_number_of_successes(void)
	  Retrieve the number of assertions which passed.

     unsigned int CU_get_number_of_failures(void)
	  Retrieve the number of assertions which failed.

     const CU_pRunSummary CU_get_run_summary(void)
	  Retrieve  a  CU_RunSummary  containing  all the run count information.
	  This data structure is declared in <CUnit/TestRun.h> and includes  the
	  (self-explanatory)  unsigned	int  fields  nSuitesRun,  nSuitesFailed,
	  nTestsRun, nTestsFailed, nAsserts, and nAssertsFailed.

     const CU_pFailureRecord CU_get_failure_list(void)
	  Retrieve the head of the linked list of failure records for  the  last
	  run.	Each assertion failure or suite init/cleanup function failure is
	  registered  in  a  new CU_FailureRecord in the linked list.  This data
	  structure is declared in <CUnit/TestRun.h> and includes the  following
	  fields:
	       unsigned int uiLineNumber
	       char*	    strFileName
	       char*	    strCondition
	       CU_pTest     pTest
	       CU_pSuite    pSuite

   Automated Interface
     The  automated  interface	is  non-interactive.  The current implementation
     only supports running all registered suites.  Results are output to an  xml
     file to be viewed by appropriate external tools.  Registered tests can also
     be  listed  to an xml file for viewing.  The following public functions are
     available:

     #include <CUnit/Automated.h>

     void CU_automated_run_tests(void)
	  Run all tests in all registered (and active) suites.	Results are out-
	  put to a file named ROOT-Results.xml.  The filename 'ROOT' is set  us-
	  ing  CU_set_output_filename(), or else the default 'CUnitAutomated' is
	  used.  This means that the same filename is used each run (and the re-
	  sults file overwritten) if the user does not explicitly set the 'ROOT'
	  for each run.

     CU_ErrorCode CU_list_tests_to_file(void)
	  Lists the registered suites and associated tests to file.  The listing
	  file is named ROOT-Listing.xml.  The	filename  'ROOT'  is  set  using
	  CU_set_output_filename(),  or  else  the  default  'CUnitAutomated' is
	  used.  This means that the same filename is used  each  run  (and  the
	  listing  file  overwritten)  if  the	user does not explicitly set the
	  'ROOT' for each run.

     void CU_set_output_filename(const char* szFilenameRoot)
	  Set the filename root to use for automated results and listing files.

   Basic Interface (non-interactive)
     The basic interface is also non-interactive, with results output to stdout.
     This interface supports running individual  suites  or  tests,  and  allows
     client  code to control the type of output displayed during each run.  This
     interface provides the most flexibility to clients desiring simplified  ac-
     cess to the CUnit API.  The following public functions are provided:

     #include <CUnit/Basic.h>

     CU_ErrorCode CU_basic_run_tests(void)
	  Run  all  tests  in all registered suites.  Only the active suites are
	  run, and it is not considered an error if inactive suites are  encoun-
	  tered  and  skipped.	 Returns the 1st error code occurring during the
	  test run.  The type of output is controlled by the current  run  mode,
	  which can be set using CU_basic_set_mode().

     CU_ErrorCode CU_basic_run_suite(CU_pSuite pSuite)
	  Run  all  tests in single specified suite.  Returns the 1st error code
	  occurring during the test run.  CU_basic_run_suite() itself  generates
	  CUE_NOSUITE if pSuite is NULL, and CUE_SUITE_INACTIVE if the requested
	  suite  is not active.  The type of output is controlled by the current
	  run mode.

     CU_ErrorCode CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest)
	  Run a single test in a specified suite.  Returns the	1st  error  code
	  occurring  during  the test run.  BU_basic_run_test() itself generates
	  CUE_NOSUITE  of  pSuite  is  NULL;  CUE_NOTEST  if  pTest   is   NULL;
	  CUE_SUITE_INACTIVE   if   pSuite   is   not	active	 for  execution,
	  CUE_TEST_NOT_IN_SUITE if pTest is not a registered member  of  pSuite,
	  and  CUE_TEST_INACTIVE  if pTest is not active for execution. The type
	  of output is controlled by the current run mode.

     void CU_basic_set_mode(CU_BasicRunMode mode)
	  Set the basic run mode, which controls  the  output  during  the  run.
	  Choices are:

	       CU_BRM_NORMAL  Failures and run summary are printed.
	       CU_BRM_SILENT  No output is printed except error messages.
	       CU_BRM_VERBOSE
			      Maximum output of run details.

     CU_BasicRunMode CU_basic_get_mode(void)
	  Retrieve the current basic run mode code.

     void CU_basic_show_failures(CU_pFailureRecord pFailure)
	  Prints  a  summary  of all failures to stdout.  Does not depend on the
	  run mode.

   Interactive Console Interface
     The console interface is interactive.  All the client needs to do is initi-
     ate the console session, and the user controls the test run  interactively.
     This  include selection & running of suites and tests, and viewing test re-
     sults.

     #include <CUnit/Console.h>

     void CU_console_run_tests(void)
	  Initiate an interactive test run in the console.

   Interactive Curses Interface
     The curses interface is interactive.  All the client needs to do is  initi-
     ate  the  curses session, and the user controls the test run interactively.
     This include selection & running of suites and tests, and viewing test  re-
     sults.  Use of this interface requires linking the ncurses library into the
     application.

     #include <CUnit/CUCurses.h>

     void CU_curses_run_tests(void)
	  Initiate an interactive test run in curses.

ERROR HANDLING
   CUnit Error Status Codes
     Many  CUnit  functions set a framework error code when an exception occurs.
     The error codes are an enum named CU_ErrorCode declared in header file <CU-
     nit/CUError.h> (included automatically by <CUnit/CUnit.h> ).  The following
     functions are provided for retrieving the framework error status:

     #include <CUnit/CUError.h> (included automatically by <CUnit/CUnit.h>)

     CU_ErrorCode CU_get_error(void)
	  Returns the framework error status code.

     const char* CU_get_error_msg(void)
	  Returns a message for the current error code.

   Error Actions
     By default, CUnit continues running tests when a  framework  error  occurs.
     In  this  context, failed assertions are not considered "framework errors".
     All other error conditions including suite initialization or cleanup  fail-
     ures, inactive suites or tests which are run explicitly, etc. are included.
     This  'error  action' can be changed by the user if desired.  The following
     functions are provided:

     #include <CUnit/CUError.h> (included automatically by <CUnit/CUnit.h>)

     void CU_set_error_action(CU_ErrorAction action)
	  Set the framework error action.

     CU_ErrorAction CU_get_error_action(void)
	  Retrieve the current error action.

     The error actions are defined in enum CU_ErrorAction in  header  file  <CU-
     nit/CUError.h> (included automatically by <CUnit/CUnit.h> ) as follows:

	  CUEA_IGNORE	 Continue test runs on framework errors (default).
	  CUEA_FAIL	 Stop test runs on a framework error.
	  CUEA_ABORT	 Exit the application on a framework error.

AUTHORS
     Anil Kumar     <anilsaharan@users.sourceforge.net>
     Jerry St.Clair <jds2@users.sourceforge.net>

WEBSITE
     http://cunit.sourceforge.net

CUnit-2.0-1			   August 2004				CUnit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=CUnit&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help