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>
|
||||
<ClInclude Include="..\..\include\SDL_test.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_font.h" />
|
||||
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
||||
|
@ -163,6 +164,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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_font.c" />
|
||||
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
||||
|
|
|
@ -157,6 +157,7 @@
|
|||
<ItemGroup>
|
||||
<ClInclude Include="..\..\include\SDL_test.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_font.h" />
|
||||
<ClInclude Include="..\..\include\SDL_test_fuzzer.h" />
|
||||
|
@ -167,6 +168,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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_font.c" />
|
||||
<ClCompile Include="..\..\src\test\SDL_test_fuzzer.c" />
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#define _SDL_test_h
|
||||
|
||||
#include "SDL.h"
|
||||
#include "SDL_test_common.h"
|
||||
#include "SDL_test_font.h"
|
||||
#include "SDL_test_random.h"
|
||||
#include "SDL_test_fuzzer.h"
|
||||
|
|
|
@ -54,12 +54,6 @@ extern "C" {
|
|||
*/
|
||||
#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.
|
||||
*
|
||||
|
@ -85,10 +79,17 @@ void SDLTest_ResetAssertSummary();
|
|||
|
||||
/**
|
||||
* \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
|
||||
*
|
||||
*/
|
||||
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
|
||||
/* *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 */
|
||||
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).
|
||||
*/
|
||||
|
@ -89,3 +95,19 @@ void SDLTest_LogAssertSummary()
|
|||
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)
|
||||
{
|
||||
SDL_TimerID timer = 0;
|
||||
int testResult = 0;
|
||||
|
||||
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
|
||||
if (testSuite->testSetUp) {
|
||||
testSuite->testSetUp(0x0);
|
||||
if (SDLTest_AssertsFailed > 0) {
|
||||
if (SDLTest_AssertSummaryToTestResult() == TEST_RESULT_FAILED) {
|
||||
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testSuite->name, "Failed");
|
||||
return TEST_RESULT_SETUP_FAILURE;
|
||||
}
|
||||
|
@ -251,8 +252,9 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
|||
|
||||
// Run test case function
|
||||
testCase->testCase(0x0);
|
||||
testResult = SDLTest_AssertSummaryToTestResult();
|
||||
|
||||
// Maybe run suite cleanup function
|
||||
// Maybe run suite cleanup function (ignore failed asserts)
|
||||
if (testSuite->testTearDown) {
|
||||
testSuite->testTearDown(0x0);
|
||||
}
|
||||
|
@ -266,19 +268,17 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, SDLTest_TestCaseReference
|
|||
SDLTest_Log("Fuzzer invocations: %d", SDLTest_GetFuzzerInvocationCount());
|
||||
SDLTest_LogAssertSummary();
|
||||
|
||||
// Analyze assert count to determine test case result
|
||||
if (SDLTest_AssertsFailed > 0) {
|
||||
// Analyze assert count to determine final test case result
|
||||
switch (testResult) {
|
||||
case TEST_RESULT_PASSED:
|
||||
SDLTest_LogError((char *)SDLTest_TestCheckFmt, testCase->name, "Failed");
|
||||
return TEST_RESULT_FAILED;
|
||||
} else {
|
||||
if (SDLTest_AssertsPassed > 0) {
|
||||
case TEST_RESULT_FAILED:
|
||||
SDLTest_Log((char *)SDLTest_TestCheckFmt, testCase->name, "Passed");
|
||||
return TEST_RESULT_PASSED;
|
||||
} else {
|
||||
case TEST_RESULT_NO_ASSERT:
|
||||
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 */
|
||||
|
@ -329,7 +329,7 @@ SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites, char *userRunSeed, Uin
|
|||
int iterationCounter;
|
||||
SDLTest_TestSuiteReference *testSuite;
|
||||
SDLTest_TestCaseReference *testCase;
|
||||
char *runSeed;
|
||||
char *runSeed = NULL;
|
||||
Uint64 execKey;
|
||||
Uint32 runStartTicks;
|
||||
time_t runStartTimestamp;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue