Update test harness to handle test return codes; fix comment format in harness; update Main test suite to handle globally disabled features
This commit is contained in:
parent
f86b25c56e
commit
2ff60371f5
3 changed files with 102 additions and 57 deletions
|
@ -51,8 +51,9 @@ extern "C" {
|
||||||
|
|
||||||
//! Definition of all the possible test return values of the test case method
|
//! Definition of all the possible test return values of the test case method
|
||||||
#define TEST_ABORTED -1
|
#define TEST_ABORTED -1
|
||||||
#define TEST_COMPLETED 0
|
#define TEST_STARTED 0
|
||||||
#define TEST_SKIPPED 1
|
#define TEST_COMPLETED 1
|
||||||
|
#define TEST_SKIPPED 2
|
||||||
|
|
||||||
//! Definition of all the possible test results for the harness
|
//! Definition of all the possible test results for the harness
|
||||||
#define TEST_RESULT_PASSED 0
|
#define TEST_RESULT_PASSED 0
|
||||||
|
@ -65,7 +66,7 @@ extern "C" {
|
||||||
typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
|
typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
|
||||||
|
|
||||||
//!< Function pointer to a test case function
|
//!< Function pointer to a test case function
|
||||||
typedef void (*SDLTest_TestCaseFp)(void *arg);
|
typedef int (*SDLTest_TestCaseFp)(void *arg);
|
||||||
|
|
||||||
//!< Function pointer to a test case teardown function (run after every test)
|
//!< Function pointer to a test case teardown function (run after every test)
|
||||||
typedef void (*SDLTest_TestCaseTearDownFp)(void *arg);
|
typedef void (*SDLTest_TestCaseTearDownFp)(void *arg);
|
||||||
|
|
|
@ -57,20 +57,20 @@ SDLTest_GenerateRunSeed(const int length)
|
||||||
SDLTest_RandomContext randomContext;
|
SDLTest_RandomContext randomContext;
|
||||||
int counter;
|
int counter;
|
||||||
|
|
||||||
// Sanity check input
|
/* Sanity check input */
|
||||||
if (length <= 0) {
|
if (length <= 0) {
|
||||||
SDLTest_LogError("The length of the harness seed must be >0.");
|
SDLTest_LogError("The length of the harness seed must be >0.");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allocate output buffer
|
/* Allocate output buffer */
|
||||||
seed = (char *)SDL_malloc((length + 1) * sizeof(char));
|
seed = (char *)SDL_malloc((length + 1) * sizeof(char));
|
||||||
if (seed == NULL) {
|
if (seed == NULL) {
|
||||||
SDLTest_LogError("SDL_malloc for run seed output buffer failed.");
|
SDLTest_LogError("SDL_malloc for run seed output buffer failed.");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate a random string of alphanumeric characters
|
/* Generate a random string of alphanumeric characters */
|
||||||
SDLTest_RandomInitTime(&randomContext);
|
SDLTest_RandomInitTime(&randomContext);
|
||||||
for (counter = 0; counter < length - 1; ++counter) {
|
for (counter = 0; counter < length - 1; ++counter) {
|
||||||
unsigned int number = SDLTest_Random(&randomContext);
|
unsigned int number = SDLTest_Random(&randomContext);
|
||||||
|
@ -129,11 +129,11 @@ SDLTest_GenerateExecKey(char *runSeed, char *suiteName, char *testName, int iter
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert iteration number into a string
|
/* Convert iteration number into a string */
|
||||||
SDL_memset(iterationString, 0, sizeof(iterationString));
|
SDL_memset(iterationString, 0, sizeof(iterationString));
|
||||||
SDL_snprintf(iterationString, sizeof(iterationString) - 1, "%d", iteration);
|
SDL_snprintf(iterationString, sizeof(iterationString) - 1, "%d", iteration);
|
||||||
|
|
||||||
// Combine the parameters into single string
|
/* Combine the parameters into single string */
|
||||||
runSeedLength = SDL_strlen(runSeed);
|
runSeedLength = SDL_strlen(runSeed);
|
||||||
suiteNameLength = SDL_strlen(suiteName);
|
suiteNameLength = SDL_strlen(suiteName);
|
||||||
testNameLength = SDL_strlen(testName);
|
testNameLength = SDL_strlen(testName);
|
||||||
|
@ -146,7 +146,7 @@ SDLTest_GenerateExecKey(char *runSeed, char *suiteName, char *testName, int iter
|
||||||
}
|
}
|
||||||
SDL_snprintf(buffer, entireStringLength, "%s%s%s%d", runSeed, suiteName, testName, iteration);
|
SDL_snprintf(buffer, entireStringLength, "%s%s%s%d", runSeed, suiteName, testName, iteration);
|
||||||
|
|
||||||
// Hash string and use half of the digest as 64bit exec key
|
/* Hash string and use half of the digest as 64bit exec key */
|
||||||
SDLTest_Md5Init(&md5Context);
|
SDLTest_Md5Init(&md5Context);
|
||||||
SDLTest_Md5Update(&md5Context, (unsigned char *)buffer, entireStringLength);
|
SDLTest_Md5Update(&md5Context, (unsigned char *)buffer, entireStringLength);
|
||||||
SDLTest_Md5Final(&md5Context);
|
SDLTest_Md5Final(&md5Context);
|
||||||
|
@ -208,7 +208,7 @@ void
|
||||||
SDLTest_BailOut()
|
SDLTest_BailOut()
|
||||||
{
|
{
|
||||||
SDLTest_LogError("TestCaseTimeout timer expired. Aborting test run.");
|
SDLTest_LogError("TestCaseTimeout timer expired. Aborting test run.");
|
||||||
exit(TEST_ABORTED); // bail out from the test
|
exit(TEST_ABORTED); /* bail out from the test */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -224,6 +224,7 @@ int
|
||||||
SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference *testCase, Uint64 execKey)
|
SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference *testCase, Uint64 execKey)
|
||||||
{
|
{
|
||||||
SDL_TimerID timer = 0;
|
SDL_TimerID timer = 0;
|
||||||
|
int testCaseResult = 0;
|
||||||
int testResult = 0;
|
int testResult = 0;
|
||||||
int fuzzerCount;
|
int fuzzerCount;
|
||||||
|
|
||||||
|
@ -240,16 +241,16 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Initialize fuzzer
|
/* Initialize fuzzer */
|
||||||
SDLTest_FuzzerInit(execKey);
|
SDLTest_FuzzerInit(execKey);
|
||||||
|
|
||||||
// Reset assert tracker
|
/* Reset assert tracker */
|
||||||
SDLTest_ResetAssertSummary();
|
SDLTest_ResetAssertSummary();
|
||||||
|
|
||||||
// Set timeout timer
|
/* Set timeout timer */
|
||||||
timer = SDLTest_SetTestTimeout(SDLTest_TestCaseTimeout, SDLTest_BailOut);
|
timer = SDLTest_SetTestTimeout(SDLTest_TestCaseTimeout, SDLTest_BailOut);
|
||||||
|
|
||||||
// Maybe run suite initalizer function
|
/* Maybe run suite initalizer function */
|
||||||
if (testSuite->testSetUp) {
|
if (testSuite->testSetUp) {
|
||||||
testSuite->testSetUp(0x0);
|
testSuite->testSetUp(0x0);
|
||||||
if (SDLTest_AssertSummaryToTestResult() == TEST_RESULT_FAILED) {
|
if (SDLTest_AssertSummaryToTestResult() == TEST_RESULT_FAILED) {
|
||||||
|
@ -258,26 +259,53 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run test case function
|
/* Run test case function */
|
||||||
testCase->testCase(0x0);
|
testCaseResult = testCase->testCase(0x0);
|
||||||
testResult = SDLTest_AssertSummaryToTestResult();
|
|
||||||
|
/* Convert test execution result into harness result */
|
||||||
|
if (testCaseResult == TEST_SKIPPED) {
|
||||||
|
/* Test was programatically skipped */
|
||||||
|
testResult = TEST_RESULT_SKIPPED;
|
||||||
|
} else if (testCaseResult == TEST_STARTED) {
|
||||||
|
/* Test did not return a TEST_COMPLETED value; assume it failed */
|
||||||
|
testResult = TEST_RESULT_FAILED;
|
||||||
|
} else if (testCaseResult == TEST_ABORTED) {
|
||||||
|
/* Test was aborted early; assume it failed */
|
||||||
|
testResult = TEST_RESULT_FAILED;
|
||||||
|
} else {
|
||||||
|
/* Perform failure analysis based on asserts */
|
||||||
|
testResult = SDLTest_AssertSummaryToTestResult();
|
||||||
|
}
|
||||||
|
|
||||||
// Maybe run suite cleanup function (ignore failed asserts)
|
/* Maybe run suite cleanup function (ignore failed asserts) */
|
||||||
if (testSuite->testTearDown) {
|
if (testSuite->testTearDown) {
|
||||||
testSuite->testTearDown(0x0);
|
testSuite->testTearDown(0x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel timeout timer
|
/* Cancel timeout timer */
|
||||||
if (timer) {
|
if (timer) {
|
||||||
SDL_RemoveTimer(timer);
|
SDL_RemoveTimer(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Report on asserts and fuzzer usage
|
/* Report on asserts and fuzzer usage */
|
||||||
fuzzerCount = SDLTest_GetFuzzerInvocationCount();
|
fuzzerCount = SDLTest_GetFuzzerInvocationCount();
|
||||||
if (fuzzerCount > 0) {
|
if (fuzzerCount > 0) {
|
||||||
SDLTest_Log("Fuzzer invocations: %d", fuzzerCount);
|
SDLTest_Log("Fuzzer invocations: %d", fuzzerCount);
|
||||||
}
|
}
|
||||||
SDLTest_LogAssertSummary();
|
|
||||||
|
/* Final log based on test execution result */
|
||||||
|
if (testCaseResult == TEST_SKIPPED) {
|
||||||
|
/* Test was programatically skipped */
|
||||||
|
SDLTest_Log((char *)SDLTest_FinalResultFormat, "Test", testCase->name, "Skipped (Programmatically)");
|
||||||
|
} else if (testCaseResult == TEST_STARTED) {
|
||||||
|
/* Test did not return a TEST_COMPLETED value; assume it failed */
|
||||||
|
SDLTest_LogError((char *)SDLTest_FinalResultFormat, "Test", testCase->name, "Failed (test started, but did not return TEST_COMPLETED)");
|
||||||
|
} else if (testCaseResult == TEST_ABORTED) {
|
||||||
|
/* Test was aborted early; assume it failed */
|
||||||
|
SDLTest_LogError((char *)SDLTest_FinalResultFormat, "Test", testCase->name, "Failed (Aborted)");
|
||||||
|
} else {
|
||||||
|
SDLTest_LogAssertSummary();
|
||||||
|
}
|
||||||
|
|
||||||
return testResult;
|
return testResult;
|
||||||
}
|
}
|
||||||
|
@ -290,7 +318,7 @@ void SDLTest_LogTestSuiteSummary(SDLTest_TestSuiteReference *testSuites)
|
||||||
SDLTest_TestSuiteReference *testSuite;
|
SDLTest_TestSuiteReference *testSuite;
|
||||||
SDLTest_TestCaseReference *testCase;
|
SDLTest_TestCaseReference *testCase;
|
||||||
|
|
||||||
// Loop over all suites
|
/* Loop over all suites */
|
||||||
suiteCounter = 0;
|
suiteCounter = 0;
|
||||||
while(&testSuites[suiteCounter]) {
|
while(&testSuites[suiteCounter]) {
|
||||||
testSuite=&testSuites[suiteCounter];
|
testSuite=&testSuites[suiteCounter];
|
||||||
|
@ -298,7 +326,7 @@ void SDLTest_LogTestSuiteSummary(SDLTest_TestSuiteReference *testSuites)
|
||||||
SDLTest_Log("Test Suite %i - %s\n", suiteCounter,
|
SDLTest_Log("Test Suite %i - %s\n", suiteCounter,
|
||||||
(testSuite->name) ? testSuite->name : SDLTest_InvalidNameFormat);
|
(testSuite->name) ? testSuite->name : SDLTest_InvalidNameFormat);
|
||||||
|
|
||||||
// Loop over all test cases
|
/* Loop over all test cases */
|
||||||
testCounter = 0;
|
testCounter = 0;
|
||||||
while(testSuite->testCases[testCounter])
|
while(testSuite->testCases[testCounter])
|
||||||
{
|
{
|
||||||
|
@ -365,12 +393,12 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
Uint32 countSum = 0;
|
Uint32 countSum = 0;
|
||||||
char *logFormat = (char *)SDLTest_LogSummaryFormat;
|
char *logFormat = (char *)SDLTest_LogSummaryFormat;
|
||||||
|
|
||||||
// Sanitize test iterations
|
/* Sanitize test iterations */
|
||||||
if (testIterations < 1) {
|
if (testIterations < 1) {
|
||||||
testIterations = 1;
|
testIterations = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate run see if we don't have one already
|
/* Generate run see if we don't have one already */
|
||||||
if (userRunSeed == NULL || SDL_strlen(userRunSeed) == 0) {
|
if (userRunSeed == NULL || SDL_strlen(userRunSeed) == 0) {
|
||||||
runSeed = SDLTest_GenerateRunSeed(16);
|
runSeed = SDLTest_GenerateRunSeed(16);
|
||||||
if (runSeed == NULL) {
|
if (runSeed == NULL) {
|
||||||
|
@ -382,18 +410,18 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Reset per-run counters
|
/* Reset per-run counters */
|
||||||
totalTestFailedCount = 0;
|
totalTestFailedCount = 0;
|
||||||
totalTestPassedCount = 0;
|
totalTestPassedCount = 0;
|
||||||
totalTestSkippedCount = 0;
|
totalTestSkippedCount = 0;
|
||||||
|
|
||||||
// Take time - run start
|
/* Take time - run start */
|
||||||
runStartSeconds = GetClock();
|
runStartSeconds = GetClock();
|
||||||
|
|
||||||
// Log run with fuzzer parameters
|
/* Log run with fuzzer parameters */
|
||||||
SDLTest_Log("::::: Test Run /w seed '%s' started\n", runSeed);
|
SDLTest_Log("::::: Test Run /w seed '%s' started\n", runSeed);
|
||||||
|
|
||||||
// Initialize filtering
|
/* Initialize filtering */
|
||||||
if (filter != NULL && SDL_strlen(filter) > 0) {
|
if (filter != NULL && SDL_strlen(filter) > 0) {
|
||||||
/* Loop over all suites to check if we have a filter match */
|
/* Loop over all suites to check if we have a filter match */
|
||||||
suiteCounter = 0;
|
suiteCounter = 0;
|
||||||
|
@ -433,36 +461,36 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop over all suites
|
/* Loop over all suites */
|
||||||
suiteCounter = 0;
|
suiteCounter = 0;
|
||||||
while(testSuites[suiteCounter]) {
|
while(testSuites[suiteCounter]) {
|
||||||
testSuite=(SDLTest_TestSuiteReference *)testSuites[suiteCounter];
|
testSuite=(SDLTest_TestSuiteReference *)testSuites[suiteCounter];
|
||||||
currentSuiteName = (char *)((testSuite->name) ? testSuite->name : SDLTest_InvalidNameFormat);
|
currentSuiteName = (char *)((testSuite->name) ? testSuite->name : SDLTest_InvalidNameFormat);
|
||||||
suiteCounter++;
|
suiteCounter++;
|
||||||
|
|
||||||
// Filter suite if flag set and we have a name
|
/* Filter suite if flag set and we have a name */
|
||||||
if (suiteFilter == 1 && suiteFilterName != NULL && testSuite->name != NULL &&
|
if (suiteFilter == 1 && suiteFilterName != NULL && testSuite->name != NULL &&
|
||||||
SDL_strcmp(suiteFilterName, testSuite->name) != 0) {
|
SDL_strcmp(suiteFilterName, testSuite->name) != 0) {
|
||||||
// Skip suite
|
/* Skip suite */
|
||||||
SDLTest_Log("===== Test Suite %i: '%s' skipped\n",
|
SDLTest_Log("===== Test Suite %i: '%s' skipped\n",
|
||||||
suiteCounter,
|
suiteCounter,
|
||||||
currentSuiteName);
|
currentSuiteName);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Reset per-suite counters
|
/* Reset per-suite counters */
|
||||||
testFailedCount = 0;
|
testFailedCount = 0;
|
||||||
testPassedCount = 0;
|
testPassedCount = 0;
|
||||||
testSkippedCount = 0;
|
testSkippedCount = 0;
|
||||||
|
|
||||||
// Take time - suite start
|
/* Take time - suite start */
|
||||||
suiteStartSeconds = GetClock();
|
suiteStartSeconds = GetClock();
|
||||||
|
|
||||||
// Log suite started
|
/* Log suite started */
|
||||||
SDLTest_Log("===== Test Suite %i: '%s' started\n",
|
SDLTest_Log("===== Test Suite %i: '%s' started\n",
|
||||||
suiteCounter,
|
suiteCounter,
|
||||||
currentSuiteName);
|
currentSuiteName);
|
||||||
|
|
||||||
// Loop over all test cases
|
/* Loop over all test cases */
|
||||||
testCounter = 0;
|
testCounter = 0;
|
||||||
while(testSuite->testCases[testCounter])
|
while(testSuite->testCases[testCounter])
|
||||||
{
|
{
|
||||||
|
@ -470,25 +498,25 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
currentTestName = (char *)((testCase->name) ? testCase->name : SDLTest_InvalidNameFormat);
|
currentTestName = (char *)((testCase->name) ? testCase->name : SDLTest_InvalidNameFormat);
|
||||||
testCounter++;
|
testCounter++;
|
||||||
|
|
||||||
// Filter tests if flag set and we have a name
|
/* Filter tests if flag set and we have a name */
|
||||||
if (testFilter == 1 && testFilterName != NULL && testCase->name != NULL &&
|
if (testFilter == 1 && testFilterName != NULL && testCase->name != NULL &&
|
||||||
SDL_strcmp(testFilterName, testCase->name) != 0) {
|
SDL_strcmp(testFilterName, testCase->name) != 0) {
|
||||||
// Skip test
|
/* Skip test */
|
||||||
SDLTest_Log("===== Test Case %i.%i: '%s' skipped\n",
|
SDLTest_Log("===== Test Case %i.%i: '%s' skipped\n",
|
||||||
suiteCounter,
|
suiteCounter,
|
||||||
testCounter,
|
testCounter,
|
||||||
currentTestName);
|
currentTestName);
|
||||||
} else {
|
} else {
|
||||||
// Override 'disabled' flag if we specified a test filter (i.e. force run for debugging)
|
/* Override 'disabled' flag if we specified a test filter (i.e. force run for debugging) */
|
||||||
if (testFilter == 1 && !testCase->enabled) {
|
if (testFilter == 1 && !testCase->enabled) {
|
||||||
SDLTest_Log("Force run of disabled test since test filter was set");
|
SDLTest_Log("Force run of disabled test since test filter was set");
|
||||||
testCase->enabled = 1;
|
testCase->enabled = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take time - test start
|
/* Take time - test start */
|
||||||
testStartSeconds = GetClock();
|
testStartSeconds = GetClock();
|
||||||
|
|
||||||
// Log test started
|
/* Log test started */
|
||||||
SDLTest_Log("----- Test Case %i.%i: '%s' started",
|
SDLTest_Log("----- Test Case %i.%i: '%s' started",
|
||||||
suiteCounter,
|
suiteCounter,
|
||||||
testCounter,
|
testCounter,
|
||||||
|
@ -498,7 +526,7 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
(testCase->description) ? testCase->description : SDLTest_InvalidNameFormat);
|
(testCase->description) ? testCase->description : SDLTest_InvalidNameFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop over all iterations
|
/* Loop over all iterations */
|
||||||
iterationCounter = 0;
|
iterationCounter = 0;
|
||||||
while(iterationCounter < testIterations)
|
while(iterationCounter < testIterations)
|
||||||
{
|
{
|
||||||
|
@ -525,21 +553,21 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take time - test end
|
/* Take time - test end */
|
||||||
testEndSeconds = GetClock();
|
testEndSeconds = GetClock();
|
||||||
runtime = testEndSeconds - testStartSeconds;
|
runtime = testEndSeconds - testStartSeconds;
|
||||||
if (runtime < 0.0f) runtime = 0.0f;
|
if (runtime < 0.0f) runtime = 0.0f;
|
||||||
|
|
||||||
if (testIterations > 1) {
|
if (testIterations > 1) {
|
||||||
// Log test runtime
|
/* Log test runtime */
|
||||||
SDLTest_Log("Runtime of %i iterations: %.1f sec", testIterations, runtime);
|
SDLTest_Log("Runtime of %i iterations: %.1f sec", testIterations, runtime);
|
||||||
SDLTest_Log("Average Test runtime: %.5f sec", runtime / (float)testIterations);
|
SDLTest_Log("Average Test runtime: %.5f sec", runtime / (float)testIterations);
|
||||||
} else {
|
} else {
|
||||||
// Log test runtime
|
/* Log test runtime */
|
||||||
SDLTest_Log("Total Test runtime: %.1f sec", runtime);
|
SDLTest_Log("Total Test runtime: %.1f sec", runtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log final test result
|
/* Log final test result */
|
||||||
switch (testResult) {
|
switch (testResult) {
|
||||||
case TEST_RESULT_PASSED:
|
case TEST_RESULT_PASSED:
|
||||||
SDLTest_Log((char *)SDLTest_FinalResultFormat, "Test", currentTestName, "Passed");
|
SDLTest_Log((char *)SDLTest_FinalResultFormat, "Test", currentTestName, "Passed");
|
||||||
|
@ -555,15 +583,15 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take time - suite end
|
/* Take time - suite end */
|
||||||
suiteEndSeconds = GetClock();
|
suiteEndSeconds = GetClock();
|
||||||
runtime = suiteEndSeconds - suiteStartSeconds;
|
runtime = suiteEndSeconds - suiteStartSeconds;
|
||||||
if (runtime < 0.0f) runtime = 0.0f;
|
if (runtime < 0.0f) runtime = 0.0f;
|
||||||
|
|
||||||
// Log suite runtime
|
/* Log suite runtime */
|
||||||
SDLTest_Log("Total Suite runtime: %.1f sec", runtime);
|
SDLTest_Log("Total Suite runtime: %.1f sec", runtime);
|
||||||
|
|
||||||
// Log summary and final Suite result
|
/* Log summary and final Suite result */
|
||||||
countSum = testPassedCount + testFailedCount + testSkippedCount;
|
countSum = testPassedCount + testFailedCount + testSkippedCount;
|
||||||
if (testFailedCount == 0)
|
if (testFailedCount == 0)
|
||||||
{
|
{
|
||||||
|
@ -579,15 +607,15 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take time - run end
|
/* Take time - run end */
|
||||||
runEndSeconds = GetClock();
|
runEndSeconds = GetClock();
|
||||||
runtime = runEndSeconds - runStartSeconds;
|
runtime = runEndSeconds - runStartSeconds;
|
||||||
if (runtime < 0.0f) runtime = 0.0f;
|
if (runtime < 0.0f) runtime = 0.0f;
|
||||||
|
|
||||||
// Log total runtime
|
/* Log total runtime */
|
||||||
SDLTest_Log("Total Run runtime: %.1f sec", runtime);
|
SDLTest_Log("Total Run runtime: %.1f sec", runtime);
|
||||||
|
|
||||||
// Log summary and final run result
|
/* Log summary and final run result */
|
||||||
countSum = totalTestPassedCount + totalTestFailedCount + totalTestSkippedCount;
|
countSum = totalTestPassedCount + totalTestFailedCount + totalTestSkippedCount;
|
||||||
if (totalTestFailedCount == 0)
|
if (totalTestFailedCount == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,13 +11,16 @@
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Tests SDL_Init() and SDL_Quit()
|
* \brief Tests SDL_Init() and SDL_Quit() of Joystick and Haptic subsystems
|
||||||
* \sa
|
* \sa
|
||||||
* http://wiki.libsdl.org/moin.cgi/SDL_Init
|
* http://wiki.libsdl.org/moin.cgi/SDL_Init
|
||||||
* http://wiki.libsdl.org/moin.cgi/SDL_Quit
|
* http://wiki.libsdl.org/moin.cgi/SDL_Quit
|
||||||
*/
|
*/
|
||||||
static int main_testInitQuit (void *arg)
|
static int main_testInitQuitJoystickHaptic (void *arg)
|
||||||
{
|
{
|
||||||
|
#if defined SDL_JOYSTICK_DISABLED || defined SDL_HAPTIC_DISABLED
|
||||||
|
return TEST_SKIPPED;
|
||||||
|
#else
|
||||||
int enabled_subsystems;
|
int enabled_subsystems;
|
||||||
int initialized_subsystems = SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC;
|
int initialized_subsystems = SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC;
|
||||||
|
|
||||||
|
@ -32,6 +35,7 @@ static int main_testInitQuit (void *arg)
|
||||||
SDLTest_AssertCheck( enabled_subsystems == 0, "SDL_Quit should shut down everything (%i)", enabled_subsystems );
|
SDLTest_AssertCheck( enabled_subsystems == 0, "SDL_Quit should shut down everything (%i)", enabled_subsystems );
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -42,6 +46,9 @@ static int main_testInitQuit (void *arg)
|
||||||
*/
|
*/
|
||||||
static int main_testInitQuitSubSystem (void *arg)
|
static int main_testInitQuitSubSystem (void *arg)
|
||||||
{
|
{
|
||||||
|
#if defined SDL_JOYSTICK_DISABLED || defined SDL_HAPTIC_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
|
||||||
|
return TEST_SKIPPED;
|
||||||
|
#else
|
||||||
int i;
|
int i;
|
||||||
int subsystems[] = { SDL_INIT_JOYSTICK, SDL_INIT_HAPTIC, SDL_INIT_GAMECONTROLLER };
|
int subsystems[] = { SDL_INIT_JOYSTICK, SDL_INIT_HAPTIC, SDL_INIT_GAMECONTROLLER };
|
||||||
|
|
||||||
|
@ -61,11 +68,15 @@ static int main_testInitQuitSubSystem (void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
const int joy_and_controller = SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER;
|
const int joy_and_controller = SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER;
|
||||||
static int main_testImpliedJoystickInit (void *arg)
|
static int main_testImpliedJoystickInit (void *arg)
|
||||||
{
|
{
|
||||||
|
#if defined SDL_JOYSTICK_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
|
||||||
|
return TEST_SKIPPED;
|
||||||
|
#else
|
||||||
int initialized_system;
|
int initialized_system;
|
||||||
|
|
||||||
// First initialize the controller
|
// First initialize the controller
|
||||||
|
@ -82,11 +93,15 @@ static int main_testImpliedJoystickInit (void *arg)
|
||||||
initialized_system = SDL_WasInit(joy_and_controller);
|
initialized_system = SDL_WasInit(joy_and_controller);
|
||||||
SDLTest_AssertCheck( (initialized_system & joy_and_controller) == 0, "SDL_WasInit() should be false for joystick & controller (%x)", initialized_system );
|
SDLTest_AssertCheck( (initialized_system & joy_and_controller) == 0, "SDL_WasInit() should be false for joystick & controller (%x)", initialized_system );
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int main_testImpliedJoystickQuit (void *arg)
|
static int main_testImpliedJoystickQuit (void *arg)
|
||||||
{
|
{
|
||||||
|
#if defined SDL_JOYSTICK_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
|
||||||
|
return TEST_SKIPPED;
|
||||||
|
#else
|
||||||
int initialized_system;
|
int initialized_system;
|
||||||
|
|
||||||
// First initialize the controller and the joystick (explicitly)
|
// First initialize the controller and the joystick (explicitly)
|
||||||
|
@ -106,11 +121,12 @@ static int main_testImpliedJoystickQuit (void *arg)
|
||||||
|
|
||||||
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
|
||||||
|
|
||||||
return TEST_COMPLETED;
|
return TEST_COMPLETED;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference mainTest1 =
|
static const SDLTest_TestCaseReference mainTest1 =
|
||||||
{ (SDLTest_TestCaseFp)main_testInitQuit, "main_testInitQuit", "Tests SDL_Init/Quit", TEST_ENABLED};
|
{ (SDLTest_TestCaseFp)main_testInitQuitJoystickHaptic, "main_testInitQuitJoystickHaptic", "Tests SDL_Init/Quit of Joystick and Haptic subsystem", TEST_ENABLED};
|
||||||
|
|
||||||
static const SDLTest_TestCaseReference mainTest2 =
|
static const SDLTest_TestCaseReference mainTest2 =
|
||||||
{ (SDLTest_TestCaseFp)main_testInitQuitSubSystem, "main_testInitQuitSubSystem", "Tests SDL_InitSubSystem/QuitSubSystem", TEST_ENABLED};
|
{ (SDLTest_TestCaseFp)main_testInitQuitSubSystem, "main_testInitQuitSubSystem", "Tests SDL_InitSubSystem/QuitSubSystem", TEST_ENABLED};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue