-/* -*- mode: C; -*- */
+/* -*- C -*- */
/* Copyright (C) 2003 TSUTSUMI Kikuo.
This file is part of the CCUnit Library.
/*
* $Id$
*/
-/**
- * @file
- * Test suite class.
+/** @file
+ * TestSuite module.
*/
#ifndef CCUNITTESTSUITE_H
#define CCUNITTESTSUITE_H
#include <ccunit/CCUnitConfig.h>
#include <ccunit/CCUnitList.h>
#include <ccunit/CCUnitTest.h>
-#include <ccunit/CCUnitTestCase.h>
+#include <ccunit/CCUnitTestFixture.h>
+#include <ccunit/CCUnitTestResult.h>
+
+/**
+ * @ingroup CCUnitTest
+ * @defgroup CCUnitTestSuite TestSuite
+ *
+ * A <code>Composite</code> class of Tests.
+ * It runs a collection of test cases.
+ * @{
+ */
/**
* A <code>Composite</code> class of Tests.
- * It runs a collection of test cases. Here is an example.
- * <pre>
- * CCUnitTestSuite* suite = ccunit_newTestSuite ();
- * ccunit_addTestCase (suite, CREATE_TESTCASE_1 ());
- * ccunit_addTestCase (suite, CREATE_TESTCASE_2 ());
- * </pre>
+ * It runs a collection of test fixture or suite. Here is an example.
*
- * @see CCUnitTest
- * @see CCUnitTestCase
+ * @code
+ * CCUnitTestSuite* suite = ccunit_newTestSuite ();
+ * ccunit_addTestFixture (suite, TESTFIXTURE);
+ * ccunit_addTestSuite (suite, TESTSUITE);
+ * @endcode
+ *
+ * @see CCUnitTest, CCUnitTestFixture.
+ * @ingroup CreatingTestSuite
*/
typedef struct CCUnitTestSuite
{
CCUnitList tests; /**< added test case/suite list */
} CCUnitTestSuite;
+typedef struct CCUnitTestSuiteDfn
+{
+ CCUnitTestDfn test; /**< super class */
+ const char* name; /**< test suite name */
+ CCUnitTestDfn** tests; /**< added test case/suite list */
+} CCUnitTestSuiteDfn;
+
/**
* Constructs an empty TestSuite.
* @param name test suite name.
* @return new test suite.
+ * @ingroup CreatingTestSuite
*/
extern inline CCUnitTestSuite* ccunit_newTestSuite(const char* name);
/**
+ * Constructs a TestSuite from definition struct.
+ * @param sdp test suite definition.
+ * @return new test suite.
+ */
+extern CCUnitTestSuite* ccunit_newTestSuiteFromDfn (const CCUnitTestSuiteDfn* sdp);
+
+/**
+ * Destructs test suite.
+ * @param suite deleting suite.
+ * @ingroup CreatingTestSuite
+ */
+extern inline void ccunit_deleteTestSuite (CCUnitTestSuite* suite);
+
+/**
* Adds a test to the suite.
* @param suite test suite.
* @param test test to add.
+ * @ingroup CreatingTestSuite
*/
extern inline void ccunit_addTest (CCUnitTestSuite* suite, CCUnitTest* test);
* Adds a test suite to the suite.
* @param suite test suite.
* @param testSuite test to add.
+ * @ingroup CreatingTestSuite
*/
extern inline void ccunit_addTestSuite (CCUnitTestSuite* suite,
CCUnitTestSuite* testSuite);
/**
- * Adds a test case to the suite.
+ * Adds a test fixture to the suite.
+ * @param suite test suite.
+ * @param fixture test to add.
+ * @ingroup CreatingTestSuite
+ */
+extern inline void ccunit_addTestFixture (CCUnitTestSuite* suite,
+ CCUnitTestFixture* fixture);
+
+/**
+ * run test suite and collect its results.
* @param suite test suite.
- * @param testCase test to add.
+ * @param result test result. if NULL, create a new result object and return it.
+ * @return test result.
+ * @ingroup ExecutingTest
*/
-extern inline void ccunit_addTestCase (CCUnitTestSuite* suite,
- CCUnitTestCase* testCase);
+extern inline CCUnitTestResult* ccunit_runTestSuite (CCUnitTestSuite* suite,
+ CCUnitTestResult* result);
/**
* Create a test suite from test source file.
* @param name test suite name.
* @return new test suite.
+ * @ingroup CreatingTestSuite
*/
extern CCUnitTestSuite* ccunit_suite (const char* name);
+/** @} */
#endif