58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
/*
|
|
ZUnitTest.cpp
|
|
Author: Patrick Baggett
|
|
|
|
Purpose : Code for automated ZUnitTest running
|
|
|
|
Changelog :
|
|
12/18/2011 - Removed dependency on ZString (crertel)
|
|
02/19/2011 - Added 'wait' after failed test (jcrussell)
|
|
12/15/2010 - Created (ptbaggett)
|
|
*/
|
|
|
|
#include "ZUnitTest.hpp"
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
//Set our namespace globals
|
|
int ZUnitTestGlobals::ARGC = 0;
|
|
char** ZUnitTestGlobals::ARGV = NULL;
|
|
int ZUnitTestGlobals::NonInteractive = 0;
|
|
int ZUnitTestGlobals::TestNumber = -1;
|
|
|
|
//This function runs a block of unit tests, returning true if they succeed
|
|
bool RunUnitTests(ZUnitTestBlock* block)
|
|
{
|
|
bool passedAllTests = true;
|
|
|
|
printf("*** BEGINNING TEST BLOCK FOR \"%s\" ***\n\n", block->blockName);
|
|
for(int i=0; i<block->nrTests; i++)
|
|
{
|
|
const char* result;
|
|
printf("Test %2d/%2d - %s: ", i+1, block->nrTests, block->tests[i].testName);
|
|
fflush(stdout);
|
|
result = block->tests[i].testFunc();
|
|
if( strcmp(result, ZTEST_SUCCESS) != 0)
|
|
{
|
|
printf("FAIL.\n -> Error message: %s\n", result);
|
|
passedAllTests = false;
|
|
}
|
|
else
|
|
printf("PASS.\n");
|
|
}
|
|
printf("\n*** OVERALL RESULT FOR \"%s\": %s ***\n\n", block->blockName, passedAllTests ? "PASS" : "FAIL");
|
|
|
|
if (!passedAllTests)
|
|
{
|
|
if(!ZUnitTestGlobals::NonInteractive)
|
|
{
|
|
printf("Press ENTER to keep running tests...\n");
|
|
fflush(stdout);
|
|
fgetc(stdin);
|
|
}
|
|
}
|
|
|
|
return passedAllTests;
|
|
}
|