summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Schiffler <aschiffler@ferzkopp.net>2013-02-08 07:14:50 -0800
committerAndreas Schiffler <aschiffler@ferzkopp.net>2013-02-08 07:14:50 -0800
commitcd682b904b5d3d2778b341e36f0c4adfc92f8336 (patch)
tree1b525397b212648a6ff83d0d83010dcabee1e5e8 /test
parent9a9f81d65626d5efe10c203a676f6ee3879ab52a (diff)
downloadsdl-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.in1
-rw-r--r--test/testautomation_audio.c6
-rw-r--r--test/testautomation_sdltest.c138
-rw-r--r--test/testautomation_suites.h2
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,