testplatform replaces testtypes, testendian, and testcpuinfo
authorSam Lantinga <slouken@libsdl.org>
Fri, 24 Feb 2006 06:49:31 +0000
changeset 1421 638da75f9ab8
parent 1420 2405517b5eab
child 1422 d2ee8da60262
testplatform replaces testtypes, testendian, and testcpuinfo
test/Makefile.in
test/testcpuinfo.c
test/testendian.c
test/testplatform.c
test/testtypes.c
--- a/test/Makefile.in	Thu Feb 23 21:51:10 2006 +0000
+++ b/test/Makefile.in	Fri Feb 24 06:49:31 2006 +0000
@@ -7,7 +7,7 @@
 CFLAGS  = @CFLAGS@
 LIBS	= @LIBS@
 
-TARGETS = checkkeys$(EXE) graywin$(EXE) loopwave$(EXE) testalpha$(EXE) testbitmap$(EXE) testblitspeed$(EXE) testcdrom$(EXE) testcpuinfo$(EXE) testdyngl$(EXE) testendian$(EXE) testerror$(EXE) testgamma$(EXE) testgl$(EXE) testhread$(EXE) testjoystick$(EXE) testkeys$(EXE) testlock$(EXE) testoverlay2$(EXE) testoverlay$(EXE) testpalette$(EXE) testsem$(EXE) testsprite$(EXE) testtimer$(EXE) testtypes$(EXE) testver$(EXE) testvidinfo$(EXE) testwin$(EXE) testwm$(EXE) threadwin$(EXE) torturethread$(EXE)
+TARGETS = checkkeys$(EXE) graywin$(EXE) loopwave$(EXE) testalpha$(EXE) testbitmap$(EXE) testblitspeed$(EXE) testcdrom$(EXE) testdyngl$(EXE) testerror$(EXE) testgamma$(EXE) testgl$(EXE) testhread$(EXE) testjoystick$(EXE) testkeys$(EXE) testlock$(EXE) testoverlay2$(EXE) testoverlay$(EXE) testpalette$(EXE) testplatform$(EXE) testsem$(EXE) testsprite$(EXE) testtimer$(EXE) testver$(EXE) testvidinfo$(EXE) testwin$(EXE) testwm$(EXE) threadwin$(EXE) torturethread$(EXE)
 
 all: $(TARGETS)
 
@@ -32,15 +32,9 @@
 testcdrom$(EXE): $(srcdir)/testcdrom.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
-testcpuinfo$(EXE): $(srcdir)/testcpuinfo.c
-	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
-
 testdyngl$(EXE): $(srcdir)/testdyngl.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
-testendian$(EXE): $(srcdir)/testendian.c
-	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
-
 testerror$(EXE): $(srcdir)/testerror.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
@@ -71,6 +65,9 @@
 testpalette$(EXE): $(srcdir)/testpalette.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS) @MATHLIB@
 
+testplatform$(EXE): $(srcdir)/testplatform.c
+	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
+
 testsem$(EXE): $(srcdir)/testsem.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
@@ -80,9 +77,6 @@
 testtimer$(EXE): $(srcdir)/testtimer.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
-testtypes$(EXE): $(srcdir)/testtypes.c
-	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
-
 testver$(EXE): $(srcdir)/testver.c
 	$(CC) -o $@ $? $(CFLAGS) $(LIBS)
 
--- a/test/testcpuinfo.c	Thu Feb 23 21:51:10 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-
-/* Test program to check SDL's CPU feature detection */
-
-#include <stdio.h>
-
-#include "SDL.h"
-#include "SDL_cpuinfo.h"
-
-int main(int argc, char *argv[])
-{
-	printf("RDTSC %s\n", SDL_HasRDTSC() ? "detected" : "not detected");
-	printf("MMX %s\n", SDL_HasMMX() ? "detected" : "not detected");
-	printf("MMX Ext %s\n", SDL_HasMMXExt() ? "detected" : "not detected");
-	printf("3DNow %s\n", SDL_Has3DNow() ? "detected" : "not detected");
-	printf("3DNow Ext %s\n", SDL_Has3DNowExt() ? "detected" : "not detected");
-	printf("SSE %s\n", SDL_HasSSE() ? "detected" : "not detected");
-	printf("SSE2 %s\n", SDL_HasSSE2() ? "detected" : "not detected");
-	printf("AltiVec %s\n", SDL_HasAltiVec() ? "detected" : "not detected");
-	return(0);
-}
--- a/test/testendian.c	Thu Feb 23 21:51:10 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-
-/* Test program to check SDL's CPU endian detection and byte swapping routines */
-
-#include <stdio.h>
-
-#include "SDL.h"
-#include "SDL_endian.h"
-
-int main(int argc, char *argv[])
-{
-	Uint16 value16 = 0xCDAB;
-	Uint32 value32 = 0xEFBEADDE;
-#if defined(__GNUC__) && defined(SDL_HAS_64BIT_TYPE)
-	Uint64 value64 = 0xEFBEADDECDAB3412LL;
-#endif
-
-	printf("This system is running %s\n",
-#if __AIX__
-			"AIX"
-#elif __AMIGA__
-			"AmigaOS"
-#elif __BEOS__
-			"BeOS"
-#elif __BSDI__
-			"BSDI"
-#elif __DREAMCAST__
-			"Dreamcast"
-#elif __FREEBSD__
-			"FreeBSD"
-#elif __HPUX__
-			"HP-UX"
-#elif __IRIX__
-			"Irix"
-#elif __LINUX__
-			"Linux"
-#elif __MACOS__
-			"MacOS Classic"
-#elif __MACOSX__
-			"MacOS X"
-#elif __NETBSD__
-			"NetBSD"
-#elif __OPENBSD__
-			"OpenBSD"
-#elif __OS2__
-			"OS/2"
-#elif __OSF__
-			"OSF/1"
-#elif __QNXNTO__
-			"QNX Neutrino"
-#elif __RISCOS__
-			"RISC OS"
-#elif __SOLARIS__
-			"Solaris"
-#elif __WIN32__
-#ifdef _WIN32_WCE
-			"Windows CE"
-#else
-			"Windows"
-#endif
-#else
-			"an unknown operating system!"
-#endif
-			);
-
-	printf("This is a %s endian machine.\n",
-		(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
-	printf("Value 16 = 0x%X, swapped = 0x%X\n", value16, SDL_Swap16(value16));
-	printf("Value 32 = 0x%X, swapped = 0x%X\n", value32, SDL_Swap32(value32));
-#if defined(__GNUC__) && defined(SDL_HAS_64BIT_TYPE)
-	printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64, SDL_Swap64(value64));
-#endif
-	return(0);
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/testplatform.c	Fri Feb 24 06:49:31 2006 +0000
@@ -0,0 +1,205 @@
+
+#include <stdio.h>
+
+#include "SDL.h"
+#include "SDL_endian.h"
+#include "SDL_cpuinfo.h"
+
+/*
+ * Watcom C flags these as Warning 201: "Unreachable code" if you just
+ *  compare them directly, so we push it through a function to keep the
+ *  compiler quiet.  --ryan.
+ */
+static int badsize(size_t sizeoftype, size_t hardcodetype)
+{
+    return sizeoftype != hardcodetype;
+}
+
+int TestTypes(SDL_bool verbose)
+{
+	int error = 0;
+
+	if ( badsize(sizeof(Uint8), 1) ) {
+		if ( verbose )
+			printf("sizeof(Uint8) != 1, instead = %d\n",
+								sizeof(Uint8));
+		++error;
+	}
+	if ( badsize(sizeof(Uint16), 2) ) {
+		if ( verbose )
+			printf("sizeof(Uint16) != 2, instead = %d\n",
+								sizeof(Uint16));
+		++error;
+	}
+	if ( badsize(sizeof(Uint32), 4) ) {
+		if ( verbose )
+			printf("sizeof(Uint32) != 4, instead = %d\n",
+								sizeof(Uint32));
+		++error;
+	}
+#ifdef SDL_HAS_64BIT_TYPE
+	if ( badsize(sizeof(Uint64), 8) ) {
+		if ( verbose )
+			printf("sizeof(Uint64) != 8, instead = %d\n",
+								sizeof(Uint64));
+		++error;
+	}
+#else
+	if ( verbose ) {
+		printf("WARNING: No 64-bit datatype on this platform\n");
+	}
+#endif
+	if ( verbose && !error )
+		printf("All data types are the expected size.\n");
+
+	return( error ? 1 : 0 );
+}
+
+int TestEndian(SDL_bool verbose)
+{
+	int error = 0;
+	Uint16 value = 0x1234;
+	int real_byteorder;
+	Uint16 value16 = 0xCDAB;
+	Uint16 swapped16 = 0xABCD;
+	Uint32 value32 = 0xEFBEADDE;
+	Uint32 swapped32 = 0xDEADBEEF;
+#ifdef SDL_HAS_64BIT_TYPE
+	Uint64 value64, swapped64;
+	value64 = 0xEFBEADDE;
+	value64 <<= 32;
+	value64 |= 0xCDAB3412;
+	swapped64 = 0x1234ABCD;
+	swapped64 <<= 32;
+	swapped64 |= 0xDEADBEEF;
+#endif
+
+	if ( verbose ) {
+		printf("Detected a %s endian machine.\n",
+			(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
+	}
+	if ( *((char *)&value) == '1' ) {
+		real_byteorder = SDL_BIG_ENDIAN;
+	} else {
+		real_byteorder = SDL_LIL_ENDIAN;
+	}
+	if ( real_byteorder != SDL_BYTEORDER ) {
+		if ( verbose ) {
+			printf("Actually a %s endian machine!\n",
+				(real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big");
+		}
+		++error;
+	}
+	if ( verbose ) {
+		printf("Value 16 = 0x%X, swapped = 0x%X\n", value16, SDL_Swap16(value16));
+	}
+	if ( SDL_Swap16(value16) != swapped16 ) {
+		if ( verbose ) {
+			printf("16 bit value swapped incorrectly!\n");
+		}
+		++error;
+	}
+	if ( verbose ) {
+		printf("Value 32 = 0x%X, swapped = 0x%X\n", value32, SDL_Swap32(value32));
+	}
+	if ( SDL_Swap32(value32) != swapped32 ) {
+		if ( verbose ) {
+			printf("32 bit value swapped incorrectly!\n");
+		}
+		++error;
+	}
+#ifdef SDL_HAS_64BIT_TYPE
+	if ( verbose ) {
+		printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64, SDL_Swap64(value64));
+	}
+	if ( SDL_Swap64(value64) != swapped64 ) {
+		if ( verbose ) {
+			printf("64 bit value swapped incorrectly!\n");
+		}
+		++error;
+	}
+#endif
+	return( error ? 1 : 0 );
+}
+
+
+int TestCPUInfo(SDL_bool verbose)
+{
+	if ( verbose ) {
+		printf("RDTSC %s\n", SDL_HasRDTSC() ? "detected" : "not detected");
+		printf("MMX %s\n", SDL_HasMMX() ? "detected" : "not detected");
+		printf("MMX Ext %s\n", SDL_HasMMXExt() ? "detected" : "not detected");
+		printf("3DNow %s\n", SDL_Has3DNow() ? "detected" : "not detected");
+		printf("3DNow Ext %s\n", SDL_Has3DNowExt() ? "detected" : "not detected");
+		printf("SSE %s\n", SDL_HasSSE() ? "detected" : "not detected");
+		printf("SSE2 %s\n", SDL_HasSSE2() ? "detected" : "not detected");
+		printf("AltiVec %s\n", SDL_HasAltiVec() ? "detected" : "not detected");
+	}
+	return(0);
+}
+
+int main(int argc, char *argv[])
+{
+	SDL_bool verbose = SDL_TRUE;
+	int status = 0;
+
+	if ( argv[1] && (SDL_strcmp(argv[1], "-q") == 0) ) {
+		verbose = SDL_FALSE;
+	}
+	if ( verbose ) {
+		printf("This system is running %s\n",
+#if __AIX__
+			"AIX"
+#elif __AMIGA__
+			"AmigaOS"
+#elif __BEOS__
+			"BeOS"
+#elif __BSDI__
+			"BSDI"
+#elif __DREAMCAST__
+			"Dreamcast"
+#elif __FREEBSD__
+			"FreeBSD"
+#elif __HPUX__
+			"HP-UX"
+#elif __IRIX__
+			"Irix"
+#elif __LINUX__
+			"Linux"
+#elif __MINT__
+			"Atari MiNT"
+#elif __MACOS__
+			"MacOS Classic"
+#elif __MACOSX__
+			"MacOS X"
+#elif __NETBSD__
+			"NetBSD"
+#elif __OPENBSD__
+			"OpenBSD"
+#elif __OS2__
+			"OS/2"
+#elif __OSF__
+			"OSF/1"
+#elif __QNXNTO__
+			"QNX Neutrino"
+#elif __RISCOS__
+			"RISC OS"
+#elif __SOLARIS__
+			"Solaris"
+#elif __WIN32__
+#ifdef _WIN32_WCE
+			"Windows CE"
+#else
+			"Windows"
+#endif
+#else
+			"an unknown operating system! (see SDL_platform.h)"
+#endif
+		);
+	}
+
+	status += TestTypes(verbose);
+	status += TestEndian(verbose);
+	status += TestCPUInfo(verbose);
+	return status;
+}
--- a/test/testtypes.c	Thu Feb 23 21:51:10 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-
-#include <stdio.h>
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-
-/*
- * Watcom C flags these as Warning 201: "Unreachable code" if you just
- *  compare them directly, so we push it through a function to keep the
- *  compiler quiet.  --ryan.
- */
-static int badsize(size_t sizeoftype, size_t hardcodetype)
-{
-    return sizeoftype != hardcodetype;
-}
-
-int main(int argc, char *argv[])
-{
-	int error = 0;
-	int verbose = 1;
-
-	if ( argv[1] && (strcmp(argv[1], "-q") == 0) )
-		verbose = 0;
-
-	if ( badsize(sizeof(Uint8), 1) ) {
-		if ( verbose )
-			printf("sizeof(Uint8) != 1, instead = %d\n",
-								sizeof(Uint8));
-		++error;
-	}
-	if ( badsize(sizeof(Uint16), 2) ) {
-		if ( verbose )
-			printf("sizeof(Uint16) != 2, instead = %d\n",
-								sizeof(Uint16));
-		++error;
-	}
-	if ( badsize(sizeof(Uint32), 4) ) {
-		if ( verbose )
-			printf("sizeof(Uint32) != 4, instead = %d\n",
-								sizeof(Uint32));
-		++error;
-	}
-#ifdef SDL_HAS_64BIT_TYPE
-	if ( badsize(sizeof(Uint64), 8) ) {
-		if ( verbose )
-			printf("sizeof(Uint64) != 8, instead = %d\n",
-								sizeof(Uint64));
-		++error;
-	}
-#else
-	if ( verbose ) {
-		printf("WARNING: No 64-bit datatype on this platform\n");
-	}
-#endif
-	if ( verbose && ! error )
-		printf("All data types are the expected size.\n");
-
-	return( error ? 1 : 0 );
-}