#include <setjmp.h>
/**
- * run test fixtures exception.
+ * run tests exception.
*/
-jmp_buf _ccunit_run_env;
+jmp_buf _ccunit_runTest_env;
/**
- * run tests exception.
+ * run tests exception
*/
-jmp_buf _ccunit_runTest_env;
+CCUnitTestFailure* _ccunit_testFailure;
extern void _ccunit_startTest (CCUnitTestResult* result,
struct CCUnitTestCase* test);
/*
* Runs the bare test sequence.
*
- * @throws _ccunit_run_env
+ * @return failure
*/
-static void runTest (CCUnitTestCase* testCase,
- CCUnitTestFunc* setUp,
- CCUnitTestFunc* tearDown,
- CCUnitTestResult* result)
+static CCUnitTestFailure* runTest (CCUnitTestCase* testCase,
+ CCUnitTestFunc* setUp,
+ CCUnitTestFunc* tearDown,
+ CCUnitTestResult* result)
{
- int failure = 0;
- int runFailure = 0;
+ CCUnitTestFailure* runFailure = NULL;
if (setUp && setUp->runTest)
{
- if ((failure = setjmp (_ccunit_runTest_env)) == 0)
+ if (setjmp (_ccunit_runTest_env) == 0)
setUp->runTest ();
else
{
- ((CCUnitTestFailure*)failure)->testCase = setUp;
- longjmp (_ccunit_run_env, failure);
+ _ccunit_testFailure->testCase = setUp;
+ return _ccunit_testFailure;
}
}
- if ((runFailure = setjmp (_ccunit_runTest_env)) == 0)
+ if (setjmp (_ccunit_runTest_env) == 0)
{
result->runCount ++;
testCase->runTest ();
}
else
- ((CCUnitTestFailure*)runFailure)->testCase = testCase;
+ {
+ runFailure = _ccunit_testFailure;
+ runFailure->testCase = testCase;
+ }
if (tearDown && tearDown->runTest)
{
- if ((failure = setjmp (_ccunit_runTest_env)) == 0)
+ if (setjmp (_ccunit_runTest_env) == 0)
tearDown->runTest ();
else
{
- ((CCUnitTestFailure*)failure)->testCase = tearDown;
- ccunit_addFailure (result, (CCUnitTestFailure*)failure);
+ _ccunit_testFailure->testCase = tearDown;
+ ccunit_addFailure (result, _ccunit_testFailure);
}
}
- if (runFailure)
- longjmp (_ccunit_run_env, runFailure);
+ return runFailure;
}
/**
static void run (CCUnitTest* test, CCUnitTestResult* result)
{
CCUnitTestFixture* fixture = (CCUnitTestFixture*)test;
- int failure = 0;
CCUnitListIterator itor;
CCUnitTestCase* testCase;
assert (test->type == ccunitTypeFixture);
ccunit_initListIterator (&fixture->testCases, &itor);
while ((testCase = ccunit_nextListIterator (&itor)) != NULL)
{
+ CCUnitTestFailure* failure = NULL;
_ccunit_startTest (result, testCase);
- if ((failure = setjmp (_ccunit_run_env)) == 0)
- runTest (testCase, fixture->setUp, fixture->tearDown, result);
- else
- ccunit_addFailure (result, (CCUnitTestFailure*)failure);
+ failure = runTest (testCase, fixture->setUp, fixture->tearDown, result);
+ if (failure)
+ ccunit_addFailure (result, failure);
_ccunit_endTest (result, testCase);
}
}
CCUnitTestFixture* fixture;
assert (test->type == ccunitTypeFixture);
fixture = (CCUnitTestFixture*)test;
- safe_free ((char*)fixture->name);
+ safe_free (fixture->name);
ccunit_deleteTestFunc (fixture->setUp);
ccunit_deleteTestFunc (fixture->tearDown);
ccunit_deleteList (&fixture->testCases,