Files
libsst/ZTestSuite/ZUnitTest.cpp
2026-04-03 00:22:39 -05:00

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;
}