diff options
author | Andreas Schiffler <aschiffler@ferzkopp.net> | 2013-02-08 07:14:50 -0800 |
---|---|---|
committer | Andreas Schiffler <aschiffler@ferzkopp.net> | 2013-02-08 07:14:50 -0800 |
commit | cd682b904b5d3d2778b341e36f0c4adfc92f8336 (patch) | |
tree | 1b525397b212648a6ff83d0d83010dcabee1e5e8 /test | |
parent | 9a9f81d65626d5efe10c203a676f6ee3879ab52a (diff) | |
download | sdl-cd682b904b5d3d2778b341e36f0c4adfc92f8336.tar.gz |
Add SDL_test test suite; add fuzzer test cases; fix fuzzer bug; fix compiler warnings
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.in | 1 | ||||
-rw-r--r-- | test/testautomation_audio.c | 6 | ||||
-rw-r--r-- | test/testautomation_sdltest.c | 138 | ||||
-rw-r--r-- | test/testautomation_suites.h | 2 |
4 files changed, 144 insertions, 3 deletions
diff --git a/test/Makefile.in b/test/Makefile.in index 07f11d140..5ebdd5e22 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -80,6 +80,7 @@ testautomation$(EXE): $(srcdir)/testautomation.c \ $(srcdir)/testautomation_keyboard.c \ $(srcdir)/testautomation_video.c \ $(srcdir)/testautomation_syswm.c \ + $(srcdir)/testautomation_sdltest.c \ $(srcdir)/testautomation_mouse.c \ $(srcdir)/testautomation_timer.c $(CC) -o $@ $^ $(CFLAGS) -lSDL2_test $(LIBS) diff --git a/test/testautomation_audio.c b/test/testautomation_audio.c index 725c7d66c..c28486ff3 100644 --- a/test/testautomation_audio.c +++ b/test/testautomation_audio.c @@ -612,7 +612,7 @@ int audio_convertAudio() */ int audio_openCloseAudioDeviceConnected() { - int result; + int result = -1; int i; int count; char *device; @@ -641,7 +641,7 @@ int audio_openCloseAudioDeviceConnected() /* Open device */ id = SDL_OpenAudioDevice((const char *)device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device); - SDLTest_AssertCheck(id > 1, "Validate device ID; expected: >=2, got: %i", id); + SDLTest_AssertCheck(id > 1, "Validate device ID; expected: >1, got: %i", id); if (id > 1) { /* TODO: enable test code when function is available in SDL2 */ @@ -650,8 +650,8 @@ int audio_openCloseAudioDeviceConnected() /* Get connected status */ result = SDL_AudioDeviceConnected(id); SDLTest_AssertPass("Call to SDL_AudioDeviceConnected()"); - SDLTest_AssertCheck(result == 1, "Verify returned value; expected: 0; got: %i", result); #endif + SDLTest_AssertCheck(result == 1, "Verify returned value; expected: 1; got: %i", result); /* Close device again */ SDL_CloseAudioDevice(id); diff --git a/test/testautomation_sdltest.c b/test/testautomation_sdltest.c new file mode 100644 index 000000000..4e8db3b1d --- /dev/null +++ b/test/testautomation_sdltest.c @@ -0,0 +1,138 @@ +/** + * SDL_test test suite + */ + +#include <stdio.h> +#include <limits.h> +#include <float.h> + +#include "SDL.h" +#include "SDL_test.h" + +/* Test case functions */ + +/** + * @brief Calls to SDLTest_GetFuzzerInvocationCount() + */ +int +sdltest_getFuzzerInvocationCount(void *arg) +{ + Uint8 result; + int fuzzerCount1, fuzzerCount2; + + fuzzerCount1 = SDLTest_GetFuzzerInvocationCount(); + SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()"); + SDLTest_AssertCheck(fuzzerCount1 >= 0, "Verify returned value, expected: >=0, got: %d", fuzzerCount1); + + result = SDLTest_RandomUint8(); + SDLTest_AssertPass("Call to SDLTest_RandomUint8(), returned %d", result); + + fuzzerCount2 = SDLTest_GetFuzzerInvocationCount(); + SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()"); + SDLTest_AssertCheck(fuzzerCount2 > fuzzerCount1, "Verify returned value, expected: >%d, got: %d", fuzzerCount1, fuzzerCount2); + + return TEST_COMPLETED; +} + + +/** + * @brief Calls to random number generators + */ +int +sdltest_randomNumber(void *arg) +{ + Sint64 result; + Uint64 uresult; + double dresult; + Uint64 umax; + Sint64 min, max; + + result = (Sint64)SDLTest_RandomUint8(); + umax = (1 << 8) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomUint8"); + SDLTest_AssertCheck(result >= 0 && result <= umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result); + + result = (Sint64)SDLTest_RandomSint8(); + min = 1 - (1 << 7); + max = (1 << 7) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomSint8"); + SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result); + + result = (Sint64)SDLTest_RandomUint16(); + umax = (1 << 16) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomUint16"); + SDLTest_AssertCheck(result >= 0 && result <= umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result); + + result = (Sint64)SDLTest_RandomSint16(); + min = 1 - (1 << 15); + max = (1 << 15) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomSint16"); + SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result); + + result = (Sint64)SDLTest_RandomUint32(); + umax = ((Uint64)1 << 32) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomUint32"); + SDLTest_AssertCheck(result >= 0 && result <= umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result); + + result = (Sint64)SDLTest_RandomSint32(); + min = 1 - ((Sint64)1 << 31); + max = ((Sint64)1 << 31) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomSint32"); + SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result); + + result = (Sint64)SDLTest_RandomUint32(); + umax = ((Uint64)1 << 32) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomUint32"); + SDLTest_AssertCheck(result >= 0 && result <= umax, "Verify result value, expected: [0,%llu], got: %lld", umax, result); + + result = (Sint64)SDLTest_RandomSint32(); + min = 1 - ((Sint64)1 << 31); + max = ((Sint64)1 << 31) - 1; + SDLTest_AssertPass("Call to SDLTest_RandomSint32"); + SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%lld,%lld], got: %lld", min, max, result); + + uresult = SDLTest_RandomUint64(); + SDLTest_AssertPass("Call to SDLTest_RandomUint64"); + + result = SDLTest_RandomSint64(); + SDLTest_AssertPass("Call to SDLTest_RandomSint64"); + + dresult = (double)SDLTest_RandomUnitFloat(); + SDLTest_AssertPass("Call to SDLTest_RandomUnitFloat"); + SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult); + + dresult = (double)SDLTest_RandomFloat(); + SDLTest_AssertPass("Call to SDLTest_RandomFloat"); + SDLTest_AssertCheck(dresult >= (double)(-FLT_MAX) && dresult <= (double)FLT_MAX, "Verify result value, expected: [%e,%e], got: %e", (double)(-FLT_MAX), (double)FLT_MAX, dresult); + + dresult = (double)SDLTest_RandomUnitDouble(); + SDLTest_AssertPass("Call to SDLTest_RandomUnitDouble"); + SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult); + + dresult = SDLTest_RandomDouble(); + SDLTest_AssertPass("Call to SDLTest_RandomDouble"); + + return TEST_COMPLETED; +} + +/* ================= Test References ================== */ + +/* SDL_test test cases */ +static const SDLTest_TestCaseReference sdltestTest1 = + { (SDLTest_TestCaseFp)sdltest_getFuzzerInvocationCount, "sdltest_getFuzzerInvocationCount", "Call to sdltest_GetFuzzerInvocationCount", TEST_ENABLED }; + +static const SDLTest_TestCaseReference sdltestTest2 = + { (SDLTest_TestCaseFp)sdltest_randomNumber, "sdltest_randomNumber", "Calls to random number generators", TEST_ENABLED }; + +/* Sequence of SDL_test test cases */ +static const SDLTest_TestCaseReference *sdltestTests[] = { + &sdltestTest1, &sdltestTest2, NULL +}; + +/* SDL_test test suite (global) */ +SDLTest_TestSuiteReference sdltestTestSuite = { + "SDLtest", + NULL, + sdltestTests, + NULL +}; diff --git a/test/testautomation_suites.h b/test/testautomation_suites.h index cea10d40b..c8c33a29f 100644 --- a/test/testautomation_suites.h +++ b/test/testautomation_suites.h @@ -19,6 +19,7 @@ extern SDLTest_TestSuiteReference renderTestSuite; extern SDLTest_TestSuiteReference rwopsTestSuite; extern SDLTest_TestSuiteReference surfaceTestSuite; extern SDLTest_TestSuiteReference syswmTestSuite; +extern SDLTest_TestSuiteReference sdltestTestSuite; extern SDLTest_TestSuiteReference videoTestSuite; extern SDLTest_TestSuiteReference mouseTestSuite; extern SDLTest_TestSuiteReference timerTestSuite; @@ -35,6 +36,7 @@ SDLTest_TestSuiteReference *testSuites[] = { &rwopsTestSuite, &surfaceTestSuite, &syswmTestSuite, + &sdltestTestSuite, &videoTestSuite, &mouseTestSuite, &timerTestSuite, |