test/testautomation_main.c
author Philipp Wiesemann <philipp.wiesemann@arcor.de>
Sun, 28 Dec 2014 22:00:24 +0100
changeset 9301 7377a9a3aed6
parent 7678 286c42d7c5ed
child 10189 4844b48eb17b
permissions -rw-r--r--
Renamed README-emscripten.txt to README-emscripten.md.
     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 Platform test cases */
   141 static const SDLTest_TestCaseReference *mainTests[] =  {
   142     &mainTest1,
   143     &mainTest2,
   144     &mainTest3,
   145     &mainTest4,
   146     NULL
   147 };
   148 
   149 /* Platform 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: */