testplatform.c File Reference
`#include <stdio.h>`
`#include "SDL.h"`
Include dependency graph for testplatform.c:

Go to the source code of this file.

## Functions

static int | badsize (size_t sizeoftype, size_t hardcodetype)
int | TestTypes (SDL_bool verbose)
int | TestEndian (SDL_bool verbose)
int | TestCPUInfo (SDL_bool verbose)
int | TestAssertions (SDL_bool verbose)
int | main (int argc, char *argv[])

## Function Documentation

static int badsize | ( | size_t | sizeoftype,
|  | size_t | hardcodetype
| ) |  |

static

Definition at line 23 of file testplatform.c.

Referenced by TestTypes().

{
return sizeoftype != hardcodetype;
}

int main | ( | int | argc,
|  | char * | argv[]
| ) |  |

Definition at line 183 of file testplatform.c.

References SDL_FALSE, SDL_GetPlatform, SDL_Log, SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, SDL_LogSetPriority, SDL_strcmp, SDL_TRUE, TestAssertions(), TestCPUInfo(), TestEndian(), and TestTypes().

{
SDL_bool verbose = SDL_TRUE;
int status = 0;
/* Enable standard application logging */
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
if (argv[1] && (SDL_strcmp(argv[1], "-q") == 0)) {
verbose = SDL_FALSE;
}
if (verbose) {
SDL_Log("This system is running %s\n", SDL_GetPlatform());
}
status += TestTypes(verbose);
status += TestEndian(verbose);
status += TestCPUInfo(verbose);
status += TestAssertions(verbose);
return status;
}
TestAssertions
int TestAssertions(SDL_bool verbose)
Definition: testplatform.c:154
TestEndian
int TestEndian(SDL_bool verbose)
Definition: testplatform.c:64
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:126
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
SDL_GetPlatform
#define SDL_GetPlatform
Definition: SDL_dynapi_overrides.h:297
SDL_LOG_PRIORITY_INFO
Definition: SDL_log.h:106
SDL_TRUE
Definition: SDL_stdinc.h:129
SDL_LogSetPriority
#define SDL_LogSetPriority
Definition: SDL_dynapi_overrides.h:242
SDL_FALSE
Definition: SDL_stdinc.h:128
SDL_strcmp
#define SDL_strcmp
Definition: SDL_dynapi_overrides.h:423
TestCPUInfo
int TestCPUInfo(SDL_bool verbose)
Definition: testplatform.c:133
TestTypes
int TestTypes(SDL_bool verbose)
Definition: testplatform.c:29
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66

int TestAssertions | ( | SDL_bool | verbose | ) |

Definition at line 154 of file testplatform.c.

References SDL_AssertData::always_ignore, SDL_AssertData::condition, SDL_AssertData::filename, SDL_AssertData::function, SDL_AssertData::linenum, SDL_AssertData::next, SDL_assert, SDL_assert_paranoid, SDL_assert_release, SDL_GetAssertionReport, SDL_Log, and SDL_AssertData::trigger_count.

Referenced by main().

{
SDL_assert(1);
SDL_assert_release(1);
SDL_assert_paranoid(1);
SDL_assert(0 || 1);
SDL_assert_release(0 || 1);
SDL_assert_paranoid(0 || 1);
#if 0 /* enable this to test assertion failures. */
SDL_assert_release(1 == 2);
SDL_assert_release(5 < 4);
SDL_assert_release(0 && "This is a test");
#endif
{
const SDL_AssertData *item = SDL_GetAssertionReport();
while (item) {
SDL_Log("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
item->condition, item->function, item->filename,
item->linenum, item->trigger_count,
item->always_ignore ? "yes" : "no");
item = item->next;
}
}
return (0);
}
SDL_AssertData::next
const struct SDL_AssertData * next
Definition: SDL_assert.h:117
SDL_AssertData::filename
const char * filename
Definition: SDL_assert.h:114
SDL_AssertData::function
const char * function
Definition: SDL_assert.h:116
SDL_GetAssertionReport
#define SDL_GetAssertionReport
Definition: SDL_dynapi_overrides.h:67
SDL_AssertData::trigger_count
unsigned int trigger_count
Definition: SDL_assert.h:112
SDL_AssertData::condition
const char * condition
Definition: SDL_assert.h:113
SDL_assert_paranoid
#define SDL_assert_paranoid(condition)
Definition: SDL_assert.h:169
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
SDL_AssertData::always_ignore
int always_ignore
Definition: SDL_assert.h:111
SDL_AssertData::linenum
int linenum
Definition: SDL_assert.h:115
SDL_assert
#define SDL_assert(condition)
Definition: SDL_assert.h:167
SDL_assert_release
#define SDL_assert_release(condition)
Definition: SDL_assert.h:168
SDL_AssertData
Definition: SDL_assert.h:109

int TestCPUInfo | ( | SDL_bool | verbose | ) |

Definition at line 133 of file testplatform.c.

References SDL_GetCPUCacheLineSize, SDL_GetCPUCount, SDL_GetSystemRAM, SDL_Has3DNow, SDL_HasAltiVec, SDL_HasAVX, SDL_HasMMX, SDL_HasRDTSC, SDL_HasSSE, SDL_HasSSE2, SDL_HasSSE3, SDL_HasSSE41, SDL_HasSSE42, and SDL_Log.

Referenced by main().

{
if (verbose) {
SDL_Log("CPU count: %d\n", SDL_GetCPUCount());
SDL_Log("CPU cache line size: %d\n", SDL_GetCPUCacheLineSize());
SDL_Log("RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected");
SDL_Log("AltiVec %s\n", SDL_HasAltiVec()? "detected" : "not detected");
SDL_Log("MMX %s\n", SDL_HasMMX()? "detected" : "not detected");
SDL_Log("3DNow! %s\n", SDL_Has3DNow()? "detected" : "not detected");
SDL_Log("SSE %s\n", SDL_HasSSE()? "detected" : "not detected");
SDL_Log("SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected");
SDL_Log("SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected");
SDL_Log("SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected");
SDL_Log("SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected");
SDL_Log("AVX %s\n", SDL_HasAVX()? "detected" : "not detected");
SDL_Log("System RAM %d MB\n", SDL_GetSystemRAM());
}
return (0);
}
SDL_HasAltiVec
#define SDL_HasAltiVec
Definition: SDL_dynapi_overrides.h:110
SDL_HasAVX
#define SDL_HasAVX
Definition: SDL_dynapi_overrides.h:575
SDL_Has3DNow
#define SDL_Has3DNow
Definition: SDL_dynapi_overrides.h:112
SDL_GetSystemRAM
#define SDL_GetSystemRAM
Definition: SDL_dynapi_overrides.h:118
SDL_HasSSE3
#define SDL_HasSSE3
Definition: SDL_dynapi_overrides.h:115
SDL_HasRDTSC
#define SDL_HasRDTSC
Definition: SDL_dynapi_overrides.h:109
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
SDL_HasSSE42
#define SDL_HasSSE42
Definition: SDL_dynapi_overrides.h:117
SDL_HasMMX
#define SDL_HasMMX
Definition: SDL_dynapi_overrides.h:111
SDL_GetCPUCacheLineSize
#define SDL_GetCPUCacheLineSize
Definition: SDL_dynapi_overrides.h:108
SDL_HasSSE41
#define SDL_HasSSE41
Definition: SDL_dynapi_overrides.h:116
SDL_GetCPUCount
#define SDL_GetCPUCount
Definition: SDL_dynapi_overrides.h:107
SDL_HasSSE2
#define SDL_HasSSE2
Definition: SDL_dynapi_overrides.h:114
SDL_HasSSE
#define SDL_HasSSE
Definition: SDL_dynapi_overrides.h:113

int TestEndian | ( | SDL_bool | verbose | ) |

Definition at line 64 of file testplatform.c.

References SDL_BIG_ENDIAN, SDL_BYTEORDER, SDL_LIL_ENDIAN, SDL_Log, SDL_PRIX64, SDL_Swap16(), SDL_Swap32(), and SDL_Swap64().

Referenced by main().

{
int error = 0;
Uint16 value = 0x1234;
int real_byteorder;
Uint16 value16 = 0xCDAB;
Uint16 swapped16 = 0xABCD;
Uint32 value32 = 0xEFBEADDE;
Uint32 swapped32 = 0xDEADBEEF;
Uint64 value64, swapped64;
value64 = 0xEFBEADDE;
value64 <<= 32;
value64 |= 0xCDAB3412;
swapped64 = 0x1234ABCD;
swapped64 <<= 32;
swapped64 |= 0xDEADBEEF;
if (verbose) {
SDL_Log("Detected a %s endian machine.\n",
(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
}
if ((*((char *) &value) >> 4) == 0x1) {
real_byteorder = SDL_BIG_ENDIAN;
} else {
real_byteorder = SDL_LIL_ENDIAN;
}
if (real_byteorder != SDL_BYTEORDER) {
if (verbose) {
SDL_Log("Actually a %s endian machine!\n",
(real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big");
}
++error;
}
if (verbose) {
SDL_Log("Value 16 = 0x%X, swapped = 0x%X\n", value16,
SDL_Swap16(value16));
}
if (SDL_Swap16(value16) != swapped16) {
if (verbose) {
SDL_Log("16 bit value swapped incorrectly!\n");
}
++error;
}
if (verbose) {
SDL_Log("Value 32 = 0x%X, swapped = 0x%X\n", value32,
SDL_Swap32(value32));
}
if (SDL_Swap32(value32) != swapped32) {
if (verbose) {
SDL_Log("32 bit value swapped incorrectly!\n");
}
++error;
}
if (verbose) {
SDL_Log("Value 64 = 0x%"SDL_PRIX64", swapped = 0x%"SDL_PRIX64"\n", value64,
SDL_Swap64(value64));
}
if (SDL_Swap64(value64) != swapped64) {
if (verbose) {
SDL_Log("64 bit value swapped incorrectly!\n");
}
++error;
}
return (error ? 1 : 0);
}
x1
GLuint GLfloat GLfloat GLfloat x1
Definition: SDL_opengl_glext.h:8583
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:155
SDL_LIL_ENDIAN
#define SDL_LIL_ENDIAN
Definition: SDL_endian.h:37
Uint64
uint64_t Uint64
An unsigned 64-bit integer type.
Definition: SDL_stdinc.h:164
SDL_Swap32
SDL_FORCE_INLINE Uint32 SDL_Swap32(Uint32 x)
Definition: SDL_endian.h:141
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
value
GLsizei const GLfloat * value
Definition: SDL_opengl_glext.h:698
SDL_Swap16
SDL_FORCE_INLINE Uint16 SDL_Swap16(Uint16 x)
Definition: SDL_endian.h:101
SDL_PRIX64
#define SDL_PRIX64
Definition: SDL_stdinc.h:208
SDL_BIG_ENDIAN
#define SDL_BIG_ENDIAN
Definition: SDL_endian.h:38
SDL_Swap64
SDL_FORCE_INLINE Uint64 SDL_Swap64(Uint64 x)
Definition: SDL_endian.h:175
Uint16
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:147
SDL_BYTEORDER
#define SDL_BYTEORDER
Definition: SDL_config_pandora.h:36

int TestTypes | ( | SDL_bool | verbose | ) |

Definition at line 29 of file testplatform.c.

References badsize(), and SDL_Log.

Referenced by main().

{
int error = 0;
if (badsize(sizeof(Uint8), 1)) {
if (verbose)
SDL_Log("sizeof(Uint8) != 1, instead = %u\n",
(unsigned int)sizeof(Uint8));
++error;
}
if (badsize(sizeof(Uint16), 2)) {
if (verbose)
SDL_Log("sizeof(Uint16) != 2, instead = %u\n",
(unsigned int)sizeof(Uint16));
++error;
}
if (badsize(sizeof(Uint32), 4)) {
if (verbose)
SDL_Log("sizeof(Uint32) != 4, instead = %u\n",
(unsigned int)sizeof(Uint32));
++error;
}
if (badsize(sizeof(Uint64), 8)) {
if (verbose)
SDL_Log("sizeof(Uint64) != 8, instead = %u\n",
(unsigned int)sizeof(Uint64));
++error;
}
if (verbose && !error)
SDL_Log("All data types are the expected size.\n");
return (error ? 1 : 0);
}
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:155
Uint64
uint64_t Uint64
An unsigned 64-bit integer type.
Definition: SDL_stdinc.h:164
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
badsize
static int badsize(size_t sizeoftype, size_t hardcodetype)
Definition: testplatform.c:23
Uint16
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:147