test/testplatform.c
author Sam Lantinga <slouken@libsdl.org>
Tue, 19 Apr 2011 11:41:45 -0700
changeset 5542 882871b2db1a
parent 5535 96594ac5fd1a
child 5638 198383360618
permissions -rw-r--r--
Added test of the assertion reporting system
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     1
/*
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     2
  Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     3
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     4
  This software is provided 'as-is', without any express or implied
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     5
  warranty.  In no event will the authors be held liable for any damages
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     6
  arising from the use of this software.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     7
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     8
  Permission is granted to anyone to use this software for any purpose,
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
     9
  including commercial applications, and to alter it and redistribute it
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
    10
  freely.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5512
diff changeset
    11
*/
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    12
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    13
#include <stdio.h>
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    14
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    15
#include "SDL.h"
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    16
#include "SDL_endian.h"
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    17
#include "SDL_cpuinfo.h"
3663
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
    18
#include "SDL_assert.h"
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    19
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    20
/*
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    21
 * Watcom C flags these as Warning 201: "Unreachable code" if you just
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    22
 *  compare them directly, so we push it through a function to keep the
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    23
 *  compiler quiet.  --ryan.
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    24
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    25
static int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    26
badsize(size_t sizeoftype, size_t hardcodetype)
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    27
{
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    28
    return sizeoftype != hardcodetype;
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    29
}
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    30
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    31
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    32
TestTypes(SDL_bool verbose)
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    33
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    34
    int error = 0;
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    35
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    36
    if (badsize(sizeof(Uint8), 1)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    37
        if (verbose)
3687
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    38
            printf("sizeof(Uint8) != 1, instead = %u\n",
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    39
                   (unsigned int)sizeof(Uint8));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    40
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    41
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    42
    if (badsize(sizeof(Uint16), 2)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    43
        if (verbose)
3687
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    44
            printf("sizeof(Uint16) != 2, instead = %u\n",
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    45
                   (unsigned int)sizeof(Uint16));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    46
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    47
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    48
    if (badsize(sizeof(Uint32), 4)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    49
        if (verbose)
3687
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    50
            printf("sizeof(Uint32) != 4, instead = %u\n",
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    51
                   (unsigned int)sizeof(Uint32));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    52
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    53
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    54
    if (badsize(sizeof(Uint64), 8)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    55
        if (verbose)
3687
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    56
            printf("sizeof(Uint64) != 8, instead = %u\n",
8e5186a99af4 Fixed compile warning on 64-bit Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents: 3684
diff changeset
    57
                   (unsigned int)sizeof(Uint64));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    58
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    59
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    60
    if (verbose && !error)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    61
        printf("All data types are the expected size.\n");
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    62
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    63
    return (error ? 1 : 0);
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    64
}
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    65
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    66
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    67
TestEndian(SDL_bool verbose)
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    68
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    69
    int error = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    70
    Uint16 value = 0x1234;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    71
    int real_byteorder;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    72
    Uint16 value16 = 0xCDAB;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    73
    Uint16 swapped16 = 0xABCD;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    74
    Uint32 value32 = 0xEFBEADDE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    75
    Uint32 swapped32 = 0xDEADBEEF;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    76
    Uint64 value64, swapped64;
5512
56ab281d7d3e SDL 1.3 requires a 64-bit type for the platform.
Sam Lantinga <slouken@libsdl.org>
parents: 5389
diff changeset
    77
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    78
    value64 = 0xEFBEADDE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    79
    value64 <<= 32;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    80
    value64 |= 0xCDAB3412;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    81
    swapped64 = 0x1234ABCD;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    82
    swapped64 <<= 32;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    83
    swapped64 |= 0xDEADBEEF;
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    84
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    85
    if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    86
        printf("Detected a %s endian machine.\n",
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    87
               (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    88
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    89
    if ((*((char *) &value) >> 4) == 0x1) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    90
        real_byteorder = SDL_BIG_ENDIAN;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    91
    } else {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    92
        real_byteorder = SDL_LIL_ENDIAN;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    93
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    94
    if (real_byteorder != SDL_BYTEORDER) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    95
        if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    96
            printf("Actually a %s endian machine!\n",
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    97
                   (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    98
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
    99
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   100
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   101
    if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   102
        printf("Value 16 = 0x%X, swapped = 0x%X\n", value16,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   103
               SDL_Swap16(value16));
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   104
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   105
    if (SDL_Swap16(value16) != swapped16) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   106
        if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   107
            printf("16 bit value swapped incorrectly!\n");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   108
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   109
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   110
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   111
    if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   112
        printf("Value 32 = 0x%X, swapped = 0x%X\n", value32,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   113
               SDL_Swap32(value32));
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   114
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   115
    if (SDL_Swap32(value32) != swapped32) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   116
        if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   117
            printf("32 bit value swapped incorrectly!\n");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   118
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   119
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   120
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   121
    if (verbose) {
1615
d5298e8f22b3 Ugh, more 64-bit cleanup
Sam Lantinga <slouken@libsdl.org>
parents: 1424
diff changeset
   122
#ifdef _MSC_VER
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   123
        printf("Value 64 = 0x%I64X, swapped = 0x%I64X\n", value64,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   124
               SDL_Swap64(value64));
1615
d5298e8f22b3 Ugh, more 64-bit cleanup
Sam Lantinga <slouken@libsdl.org>
parents: 1424
diff changeset
   125
#else
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   126
        printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   127
               SDL_Swap64(value64));
1615
d5298e8f22b3 Ugh, more 64-bit cleanup
Sam Lantinga <slouken@libsdl.org>
parents: 1424
diff changeset
   128
#endif
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   129
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   130
    if (SDL_Swap64(value64) != swapped64) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   131
        if (verbose) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   132
            printf("64 bit value swapped incorrectly!\n");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   133
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   134
        ++error;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   135
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   136
    return (error ? 1 : 0);
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   137
}
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   138
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   139
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   140
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   141
TestCPUInfo(SDL_bool verbose)
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   142
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   143
    if (verbose) {
3579
3427271a2d75 Added SDL_GetCPUCount() to see how many cores are available.
Sam Lantinga <slouken@libsdl.org>
parents: 3319
diff changeset
   144
        printf("CPU count: %d\n", SDL_GetCPUCount());
5389
24903690f48a Re-added the 3DNow! and AltiVec instruction support.
Sam Lantinga <slouken@libsdl.org>
parents: 5263
diff changeset
   145
        printf("CPU cache line size: %d\n", SDL_GetCPUCacheLineSize());
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   146
        printf("RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected");
5389
24903690f48a Re-added the 3DNow! and AltiVec instruction support.
Sam Lantinga <slouken@libsdl.org>
parents: 5263
diff changeset
   147
        printf("AltiVec %s\n", SDL_HasAltiVec()? "detected" : "not detected");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   148
        printf("MMX %s\n", SDL_HasMMX()? "detected" : "not detected");
5389
24903690f48a Re-added the 3DNow! and AltiVec instruction support.
Sam Lantinga <slouken@libsdl.org>
parents: 5263
diff changeset
   149
        printf("3DNow! %s\n", SDL_Has3DNow()? "detected" : "not detected");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   150
        printf("SSE %s\n", SDL_HasSSE()? "detected" : "not detected");
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   151
        printf("SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected");
5259
6a65c1fc07af Updated CPU detection code for SSE3 and SSE4 and removed obsolete 3DNow! and Altivec support.
Sam Lantinga <slouken@libsdl.org>
parents: 5122
diff changeset
   152
        printf("SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected");
5263
e1122f31fec5 Fixed SSE4 detection, and split it into SSE 4.1 and 4.2
Sam Lantinga <slouken@libsdl.org>
parents: 5259
diff changeset
   153
        printf("SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected");
e1122f31fec5 Fixed SSE4 detection, and split it into SSE 4.1 and 4.2
Sam Lantinga <slouken@libsdl.org>
parents: 5259
diff changeset
   154
        printf("SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   155
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   156
    return (0);
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   157
}
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   158
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   159
int
3663
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   160
TestAssertions(SDL_bool verbose)
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   161
{
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   162
    SDL_assert(1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   163
    SDL_assert_release(1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   164
    SDL_assert_paranoid(1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   165
    SDL_assert(0 || 1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   166
    SDL_assert_release(0 || 1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   167
    SDL_assert_paranoid(0 || 1);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   168
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   169
#if 0   /* enable this to test assertion failures. */
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   170
    SDL_assert_release(1 == 2);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   171
    SDL_assert_release(5 < 4);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   172
    SDL_assert_release(0 && "This is a test");
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   173
#endif
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   174
5542
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   175
    {
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   176
        const SDL_assert_data *item = SDL_GetAssertionReport();
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   177
        while (item) {
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   178
            printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\n",
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   179
                item->condition, item->function, item->filename,
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   180
                item->linenum, item->trigger_count,
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   181
                item->always_ignore ? "yes" : "no");
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   182
            item = item->next;
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   183
        }
882871b2db1a Added test of the assertion reporting system
Sam Lantinga <slouken@libsdl.org>
parents: 5535
diff changeset
   184
    }
3663
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   185
    return (0);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   186
}
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   187
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   188
int
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   189
main(int argc, char *argv[])
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   190
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   191
    SDL_bool verbose = SDL_TRUE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   192
    int status = 0;
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   193
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   194
    if (argv[1] && (SDL_strcmp(argv[1], "-q") == 0)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   195
        verbose = SDL_FALSE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   196
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   197
    if (verbose) {
3319
63d4517fc4ac Fixed bug #777
Sam Lantinga <slouken@libsdl.org>
parents: 3312
diff changeset
   198
        printf("This system is running %s\n", SDL_GetPlatform());
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   199
    }
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   200
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   201
    status += TestTypes(verbose);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   202
    status += TestEndian(verbose);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   203
    status += TestCPUInfo(verbose);
3663
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   204
    status += TestAssertions(verbose);
bc50cd16bb07 Moved the assertion tests to testplatform
Sam Lantinga <slouken@libsdl.org>
parents: 3579
diff changeset
   205
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1621
diff changeset
   206
    return status;
1421
638da75f9ab8 testplatform replaces testtypes, testendian, and testcpuinfo
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   207
}