Added existing common.c/.h functions to test lib; minor assert refactoring
This commit is contained in:
parent
de32627287
commit
84aaf1fed9
8 changed files with 1491 additions and 20 deletions
|
@ -153,6 +153,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\include\SDL_test.h" />
|
<ClInclude Include="..\..\include\SDL_test.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_assert.h" />
|
<ClInclude Include="..\..\include\SDL_test_assert.h" />
|
||||||
|
<ClInclude Include="..\..\include\SDL_test_common.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_crc32.h" />
|
<ClInclude Include="..\..\include\SDL_test_crc32.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_font.h" />
|
<ClInclude Include="..\..\include\SDL_test_font.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
||||||
|
@ -163,6 +164,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_assert.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_assert.c" />
|
||||||
|
<ClCompile Include="..\..\src\test\SDL_test_common.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_crc32.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_crc32.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_font.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_font.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
||||||
|
|
|
@ -157,6 +157,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\..\include\SDL_test.h" />
|
<ClInclude Include="..\..\include\SDL_test.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_assert.h" />
|
<ClInclude Include="..\..\include\SDL_test_assert.h" />
|
||||||
|
<ClInclude Include="..\..\include\SDL_test_common.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_crc32.h" />
|
<ClInclude Include="..\..\include\SDL_test_crc32.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_font.h" />
|
<ClInclude Include="..\..\include\SDL_test_font.h" />
|
||||||
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
||||||
|
@ -167,6 +168,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_assert.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_assert.c" />
|
||||||
|
<ClCompile Include="..\..\src\test\SDL_test_common.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_crc32.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_crc32.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_font.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_font.c" />
|
||||||
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#define _SDL_test_h
|
#define _SDL_test_h
|
||||||
|
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
|
#include "SDL_test_common.h"
|
||||||
#include "SDL_test_font.h"
|
#include "SDL_test_font.h"
|
||||||
#include "SDL_test_random.h"
|
#include "SDL_test_random.h"
|
||||||
#include "SDL_test_fuzzer.h"
|
#include "SDL_test_fuzzer.h"
|
||||||
|
|
|
@ -54,12 +54,6 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define ASSERT_PASS 1
|
#define ASSERT_PASS 1
|
||||||
|
|
||||||
/*! \brief counts the failed asserts */
|
|
||||||
static Uint32 SDLTest_AssertsFailed = 0;
|
|
||||||
|
|
||||||
/*! \brief counts the passed asserts */
|
|
||||||
static Uint32 SDLTest_AssertsPassed = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Assert that logs and break execution flow on failures.
|
* \brief Assert that logs and break execution flow on failures.
|
||||||
*
|
*
|
||||||
|
@ -85,10 +79,17 @@ void SDLTest_ResetAssertSummary();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
|
* \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
void SDLTest_LogAssertSummary();
|
void SDLTest_LogAssertSummary();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Converts the current assert summary state to a test result.
|
||||||
|
*
|
||||||
|
* \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
|
||||||
|
*/
|
||||||
|
int SDLTest_AssertSummaryToTestResult();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
}
|
}
|
||||||
|
|
182
include/SDL_test_common.h
Normal file
182
include/SDL_test_common.h
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
/*
|
||||||
|
Simple DirectMedia Layer
|
||||||
|
Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software
|
||||||
|
in a product, an acknowledgment in the product documentation would be
|
||||||
|
appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file SDL_test_common.h
|
||||||
|
*
|
||||||
|
* Include file for SDL test framework.
|
||||||
|
*
|
||||||
|
* This code is a part of the SDL2_test library, not the main SDL library.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Ported from original test\common.h file. */
|
||||||
|
|
||||||
|
#ifndef _SDL_test_common_h
|
||||||
|
#define _SDL_test_common_h
|
||||||
|
|
||||||
|
#include "SDL.h"
|
||||||
|
|
||||||
|
#ifdef __NDS__
|
||||||
|
#define DEFAULT_WINDOW_WIDTH 256
|
||||||
|
#define DEFAULT_WINDOW_HEIGHT (2*192)
|
||||||
|
#else
|
||||||
|
#define DEFAULT_WINDOW_WIDTH 640
|
||||||
|
#define DEFAULT_WINDOW_HEIGHT 480
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VERBOSE_VIDEO 0x00000001
|
||||||
|
#define VERBOSE_MODES 0x00000002
|
||||||
|
#define VERBOSE_RENDER 0x00000004
|
||||||
|
#define VERBOSE_EVENT 0x00000008
|
||||||
|
#define VERBOSE_AUDIO 0x00000010
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
/* SDL init flags */
|
||||||
|
char **argv;
|
||||||
|
Uint32 flags;
|
||||||
|
Uint32 verbose;
|
||||||
|
|
||||||
|
/* Video info */
|
||||||
|
const char *videodriver;
|
||||||
|
int display;
|
||||||
|
const char *window_title;
|
||||||
|
const char *window_icon;
|
||||||
|
Uint32 window_flags;
|
||||||
|
int window_x;
|
||||||
|
int window_y;
|
||||||
|
int window_w;
|
||||||
|
int window_h;
|
||||||
|
int depth;
|
||||||
|
int refresh_rate;
|
||||||
|
int num_windows;
|
||||||
|
SDL_Window **windows;
|
||||||
|
|
||||||
|
/* Renderer info */
|
||||||
|
const char *renderdriver;
|
||||||
|
Uint32 render_flags;
|
||||||
|
SDL_bool skip_renderer;
|
||||||
|
SDL_Renderer **renderers;
|
||||||
|
|
||||||
|
/* Audio info */
|
||||||
|
const char *audiodriver;
|
||||||
|
SDL_AudioSpec audiospec;
|
||||||
|
|
||||||
|
/* GL settings */
|
||||||
|
int gl_red_size;
|
||||||
|
int gl_green_size;
|
||||||
|
int gl_blue_size;
|
||||||
|
int gl_alpha_size;
|
||||||
|
int gl_buffer_size;
|
||||||
|
int gl_depth_size;
|
||||||
|
int gl_stencil_size;
|
||||||
|
int gl_double_buffer;
|
||||||
|
int gl_accum_red_size;
|
||||||
|
int gl_accum_green_size;
|
||||||
|
int gl_accum_blue_size;
|
||||||
|
int gl_accum_alpha_size;
|
||||||
|
int gl_stereo;
|
||||||
|
int gl_multisamplebuffers;
|
||||||
|
int gl_multisamplesamples;
|
||||||
|
int gl_retained_backing;
|
||||||
|
int gl_accelerated;
|
||||||
|
int gl_major_version;
|
||||||
|
int gl_minor_version;
|
||||||
|
} SDLTest_CommonState;
|
||||||
|
|
||||||
|
#include "begin_code.h"
|
||||||
|
/* Set up for C function definitions, even when using C++ */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
extern "C" {
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Function prototypes */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Parse command line parameters and create common state.
|
||||||
|
*
|
||||||
|
* \param argv Array of command line parameters
|
||||||
|
* \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
|
||||||
|
*
|
||||||
|
* \returns Returns a newly allocated common state object.
|
||||||
|
*/
|
||||||
|
SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Process one common argument.
|
||||||
|
*
|
||||||
|
* \param state The common state describing the test window to create.
|
||||||
|
* \param index The index of the argument to process in argv[].
|
||||||
|
*
|
||||||
|
* \returns The number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
|
||||||
|
*/
|
||||||
|
int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Returns common usage information
|
||||||
|
*
|
||||||
|
* \param state The common state describing the test window to create.
|
||||||
|
*
|
||||||
|
* \returns String with usage information
|
||||||
|
*/
|
||||||
|
const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Open test window.
|
||||||
|
*
|
||||||
|
* \param state The common state describing the test window to create.
|
||||||
|
*
|
||||||
|
* \returns True if initialization succeeded, false otherwise
|
||||||
|
*/
|
||||||
|
SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Common event handler for test windows.
|
||||||
|
*
|
||||||
|
* \param state The common state used to create test window.
|
||||||
|
* \param event The event to handle.
|
||||||
|
* \param done Flag indicating we are done.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Close test window.
|
||||||
|
*
|
||||||
|
* \param state The common state used to create test window.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void SDLTest_CommonQuit(SDLTest_CommonState * state);
|
||||||
|
|
||||||
|
|
||||||
|
/* Ends C function definitions when using C++ */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
}
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
#endif
|
||||||
|
#include "close_code.h"
|
||||||
|
|
||||||
|
#endif /* _SDL_test_common_h */
|
||||||
|
|
||||||
|
/* vi: set ts=4 sw=4 expandtab: */
|
|
@ -35,6 +35,12 @@ const char *SDLTest_AssertCheckFmt = "Assert '%s': %s";
|
||||||
/* Assert summary message format */
|
/* Assert summary message format */
|
||||||
const char *SDLTest_AssertSummaryFmt = "Assert Summary: Total=%d Passed=%d Failed=%d";
|
const char *SDLTest_AssertSummaryFmt = "Assert Summary: Total=%d Passed=%d Failed=%d";
|
||||||
|
|
||||||
|
/*! \brief counts the failed asserts */
|
||||||
|
static Uint32 SDLTest_AssertsFailed = 0;
|
||||||
|
|
||||||
|
/*! \brief counts the passed asserts */
|
||||||
|
static Uint32 SDLTest_AssertsPassed = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assert that logs and break execution flow on failures (i.e. for harness errors).
|
* Assert that logs and break execution flow on failures (i.e. for harness errors).
|
||||||
*/
|
*/
|
||||||
|
@ -89,3 +95,19 @@ void SDLTest_LogAssertSummary()
|
||||||
SDLTest_LogError(fmt, totalAsserts, SDLTest_AssertsPassed, SDLTest_AssertsFailed);
|
SDLTest_LogError(fmt, totalAsserts, SDLTest_AssertsPassed, SDLTest_AssertsFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Converts the current assert state into a test result
|
||||||
|
*/
|
||||||
|
int SDLTest_AssertSummaryToTestResult()
|
||||||
|
{
|
||||||
|
if (SDLTest_AssertsFailed > 0) {
|
||||||
|
return TEST_RESULT_FAILED;
|
||||||
|
} else {
|
||||||
|
if (SDLTest_AssertsPassed > 0) {
|
||||||
|
return TEST_RESULT_PASSED;
|
||||||
|
} else {
|
||||||
|
return TEST_RESULT_NO_ASSERT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
1261
src/test/SDL_test_common.c
Normal file
1261
src/test/SDL_test_common.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -218,6 +218,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 testResult = 0;
|
||||||
|
|
||||||
if (testSuite==NULL || testCase==NULL || testSuite->name==NULL || testCase->name==NULL)
|
if (testSuite==NULL || testCase==NULL || testSuite->name==NULL || testCase->name==NULL)
|
||||||
{
|
{
|
||||||
|
@ -243,7 +244,7 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
||||||
// Maybe run suite initalizer function
|
// Maybe run suite initalizer function
|
||||||
if (testSuite->testSetUp) {
|
if (testSuite->testSetUp) {
|
||||||
testSuite->testSetUp(0x0);
|
testSuite->testSetUp(0x0);
|
||||||
if (SDLTest_AssertsFailed > 0) {
|
if (SDLTest_AssertSummaryToTestResult() == TEST_RESULT_FAILED) {
|
||||||
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testSuite->name, "Failed");
|
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testSuite->name, "Failed");
|
||||||
return TEST_RESULT_SETUP_FAILURE;
|
return TEST_RESULT_SETUP_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -251,8 +252,9 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
||||||
|
|
||||||
// Run test case function
|
// Run test case function
|
||||||
testCase->testCase(0x0);
|
testCase->testCase(0x0);
|
||||||
|
testResult = SDLTest_AssertSummaryToTestResult();
|
||||||
|
|
||||||
// Maybe run suite cleanup function
|
// Maybe run suite cleanup function (ignore failed asserts)
|
||||||
if (testSuite->testTearDown) {
|
if (testSuite->testTearDown) {
|
||||||
testSuite->testTearDown(0x0);
|
testSuite->testTearDown(0x0);
|
||||||
}
|
}
|
||||||
|
@ -266,19 +268,17 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
||||||
SDLTest_Log("Fuzzer invocations: %d", SDLTest_GetFuzzerInvocationCount());
|
SDLTest_Log("Fuzzer invocations: %d", SDLTest_GetFuzzerInvocationCount());
|
||||||
SDLTest_LogAssertSummary();
|
SDLTest_LogAssertSummary();
|
||||||
|
|
||||||
// Analyze assert count to determine test case result
|
// Analyze assert count to determine final test case result
|
||||||
if (SDLTest_AssertsFailed > 0) {
|
switch (testResult) {
|
||||||
|
case TEST_RESULT_PASSED:
|
||||||
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testCase->name, "Failed");
|
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testCase->name, "Failed");
|
||||||
return TEST_RESULT_FAILED;
|
case TEST_RESULT_FAILED:
|
||||||
} else {
|
|
||||||
if (SDLTest_AssertsPassed > 0) {
|
|
||||||
SDLTest_Log((char *)SDLTest_TestCheckFmt, testCase->name, "Passed");
|
SDLTest_Log((char *)SDLTest_TestCheckFmt, testCase->name, "Passed");
|
||||||
return TEST_RESULT_PASSED;
|
case TEST_RESULT_NO_ASSERT:
|
||||||
} else {
|
|
||||||
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testCase->name, "No Asserts");
|
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testCase->name, "No Asserts");
|
||||||
return TEST_RESULT_NO_ASSERT;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return testResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prints summary of all suites/tests contained in the given reference */
|
/* Prints summary of all suites/tests contained in the given reference */
|
||||||
|
@ -329,7 +329,7 @@ SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites, char *userRunSeed, Uin
|
||||||
int iterationCounter;
|
int iterationCounter;
|
||||||
SDLTest_TestSuiteReference *testSuite;
|
SDLTest_TestSuiteReference *testSuite;
|
||||||
SDLTest_TestCaseReference *testCase;
|
SDLTest_TestCaseReference *testCase;
|
||||||
char *runSeed;
|
char *runSeed = NULL;
|
||||||
Uint64 execKey;
|
Uint64 execKey;
|
||||||
Uint32 runStartTicks;
|
Uint32 runStartTicks;
|
||||||
time_t runStartTimestamp;
|
time_t runStartTimestamp;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue