test/testautomation_main.c
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:09 -0800
changeset 11730 ac6c607e065c
parent 10189 4844b48eb17b
permissions -rw-r--r--
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
     1 /**
     2  * Automated SDL subsystems management test.
     3  *
     4  * Written by J�rgen Tjern� "jorgenpt"
     5  *
     6  * Released under Public Domain.
     7  */
     8 
     9 #include "SDL.h"
    10 #include "SDL_test.h"
    11 
    12 
    13 /* !
    14  * \brief Tests SDL_Init() and SDL_Quit() of Joystick and Haptic subsystems
    15  * \sa
    16  * http://wiki.libsdl.org/moin.cgi/SDL_Init
    17  * http://wiki.libsdl.org/moin.cgi/SDL_Quit
    18  */
    19 static int main_testInitQuitJoystickHaptic (void *arg)
    20 {
    21 #if defined SDL_JOYSTICK_DISABLED || defined SDL_HAPTIC_DISABLED
    22     return TEST_SKIPPED;
    23 #else
    24     int enabled_subsystems;
    25     int initialized_subsystems = SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC;
    26 
    27     SDLTest_AssertCheck( SDL_Init(initialized_subsystems) == 0, "SDL_Init multiple systems." );
    28 
    29     enabled_subsystems = SDL_WasInit(initialized_subsystems);
    30     SDLTest_AssertCheck( enabled_subsystems == initialized_subsystems, "SDL_WasInit(SDL_INIT_EVERYTHING) contains all systems (%i)", enabled_subsystems );
    31 
    32     SDL_Quit();
    33 
    34     enabled_subsystems = SDL_WasInit(initialized_subsystems);
    35     SDLTest_AssertCheck( enabled_subsystems == 0, "SDL_Quit should shut down everything (%i)", enabled_subsystems );
    36 
    37     return TEST_COMPLETED;
    38 #endif
    39 }
    40 
    41 /* !
    42  * \brief Tests SDL_InitSubSystem() and SDL_QuitSubSystem()
    43  * \sa
    44  * http://wiki.libsdl.org/moin.cgi/SDL_Init
    45  * http://wiki.libsdl.org/moin.cgi/SDL_Quit
    46  */
    47 static int main_testInitQuitSubSystem (void *arg)
    48 {
    49 #if defined SDL_JOYSTICK_DISABLED || defined SDL_HAPTIC_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
    50     return TEST_SKIPPED;
    51 #else
    52     int i;
    53     int subsystems[] = { SDL_INIT_JOYSTICK, SDL_INIT_HAPTIC, SDL_INIT_GAMECONTROLLER };
    54 
    55     for (i = 0; i < SDL_arraysize(subsystems); ++i) {
    56         int initialized_system;
    57         int subsystem = subsystems[i];
    58 
    59         SDLTest_AssertCheck( (SDL_WasInit(subsystem) & subsystem) == 0, "SDL_WasInit(%x) before init should be false", subsystem );
    60         SDLTest_AssertCheck( SDL_InitSubSystem(subsystem) == 0, "SDL_InitSubSystem(%x)", subsystem );
    61 
    62         initialized_system = SDL_WasInit(subsystem);
    63         SDLTest_AssertCheck( (initialized_system & subsystem) != 0, "SDL_WasInit(%x) should be true (%x)", subsystem, initialized_system );
    64 
    65         SDL_QuitSubSystem(subsystem);
    66 
    67         SDLTest_AssertCheck( (SDL_WasInit(subsystem) & subsystem) == 0, "SDL_WasInit(%x) after shutdown should be false", subsystem );
    68     }
    69 
    70     return TEST_COMPLETED;
    71 #endif
    72 }
    73 
    74 const int joy_and_controller = SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER;
    75 static int main_testImpliedJoystickInit (void *arg)
    76 {
    77 #if defined SDL_JOYSTICK_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
    78     return TEST_SKIPPED;
    79 #else
    80     int initialized_system;
    81 
    82     /* First initialize the controller */
    83     SDLTest_AssertCheck( (SDL_WasInit(joy_and_controller) & joy_and_controller) == 0, "SDL_WasInit() before init should be false for joystick & controller" );
    84     SDLTest_AssertCheck( SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER) == 0, "SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER)" );
    85 
    86     /* Then make sure this implicitly initialized the joystick subsystem */
    87     initialized_system = SDL_WasInit(joy_and_controller);
    88     SDLTest_AssertCheck( (initialized_system & joy_and_controller) == joy_and_controller, "SDL_WasInit() should be true for joystick & controller (%x)", initialized_system );
    89 
    90     /* Then quit the controller, and make sure that implicitly also quits the */
    91     /* joystick subsystem */
    92     SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER);
    93     initialized_system = SDL_WasInit(joy_and_controller);
    94     SDLTest_AssertCheck( (initialized_system & joy_and_controller) == 0, "SDL_WasInit() should be false for joystick & controller (%x)", initialized_system );
    95 
    96     return TEST_COMPLETED;
    97 #endif
    98 }
    99 
   100 static int main_testImpliedJoystickQuit (void *arg)
   101 {
   102 #if defined SDL_JOYSTICK_DISABLED || defined SDL_GAMECONTROLLER_DISABLED
   103     return TEST_SKIPPED;
   104 #else
   105     int initialized_system;
   106 
   107     /* First initialize the controller and the joystick (explicitly) */
   108     SDLTest_AssertCheck( (SDL_WasInit(joy_and_controller) & joy_and_controller) == 0, "SDL_WasInit() before init should be false for joystick & controller" );
   109     SDLTest_AssertCheck( SDL_InitSubSystem(SDL_INIT_JOYSTICK) == 0, "SDL_InitSubSystem(SDL_INIT_JOYSTICK)" );
   110     SDLTest_AssertCheck( SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER) == 0, "SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER)" );
   111 
   112     /* Then make sure they're both initialized properly */
   113     initialized_system = SDL_WasInit(joy_and_controller);
   114     SDLTest_AssertCheck( (initialized_system & joy_and_controller) == joy_and_controller, "SDL_WasInit() should be true for joystick & controller (%x)", initialized_system );
   115 
   116     /* Then quit the controller, and make sure that it does NOT quit the */
   117     /* explicitly initialized joystick subsystem. */
   118     SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER);
   119     initialized_system = SDL_WasInit(joy_and_controller);
   120     SDLTest_AssertCheck( (initialized_system & joy_and_controller) == SDL_INIT_JOYSTICK, "SDL_WasInit() should be false for joystick & controller (%x)", initialized_system );
   121 
   122     SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
   123 
   124     return TEST_COMPLETED;
   125 #endif
   126 }
   127 
   128 static const SDLTest_TestCaseReference mainTest1 =
   129         { (SDLTest_TestCaseFp)main_testInitQuitJoystickHaptic, "main_testInitQuitJoystickHaptic", "Tests SDL_Init/Quit of Joystick and Haptic subsystem", TEST_ENABLED};
   130 
   131 static const SDLTest_TestCaseReference mainTest2 =
   132         { (SDLTest_TestCaseFp)main_testInitQuitSubSystem, "main_testInitQuitSubSystem", "Tests SDL_InitSubSystem/QuitSubSystem", TEST_ENABLED};
   133 
   134 static const SDLTest_TestCaseReference mainTest3 =
   135         { (SDLTest_TestCaseFp)main_testImpliedJoystickInit, "main_testImpliedJoystickInit", "Tests that init for gamecontroller properly implies joystick", TEST_ENABLED};
   136 
   137 static const SDLTest_TestCaseReference mainTest4 =
   138         { (SDLTest_TestCaseFp)main_testImpliedJoystickQuit, "main_testImpliedJoystickQuit", "Tests that quit for gamecontroller doesn't quit joystick if you inited it explicitly", TEST_ENABLED};
   139 
   140 /* Sequence of Main test cases */
   141 static const SDLTest_TestCaseReference *mainTests[] =  {
   142     &mainTest1,
   143     &mainTest2,
   144     &mainTest3,
   145     &mainTest4,
   146     NULL
   147 };
   148 
   149 /* Main test suite (global) */
   150 SDLTest_TestSuiteReference mainTestSuite = {
   151     "Main",
   152     NULL,
   153     mainTests,
   154     NULL
   155 };
   156 
   157 /* vi: set ts=4 sw=4 expandtab: */