test/testautomation_video.c
author Andreas Schiffler <aschiffler@ferzkopp.net>
Sun, 03 Mar 2013 17:22:51 -0800
changeset 6956 afdc35fa58e9
parent 6936 76d9c31e823d
child 6984 ae9c4b12f3e2
permissions -rw-r--r--
Fix behavior of SDL_GetWindowPosition for invalid input; add test cases to video suite
aschiffler@6800
     1
/**
aschiffler@6800
     2
 * Video test suite
aschiffler@6800
     3
 */
aschiffler@6800
     4
aschiffler@6800
     5
#include <stdio.h>
aschiffler@6800
     6
aschiffler@6956
     7
/* Visual Studio 2008 doesn't have stdint.h */
aschiffler@6956
     8
#if defined(_MSC_VER) && _MSC_VER <= 1500
aschiffler@6956
     9
#define UINT8_MAX   ~(Uint8)0
aschiffler@6956
    10
#define UINT16_MAX  ~(Uint16)0
aschiffler@6956
    11
#define UINT32_MAX  ~(Uint32)0
aschiffler@6956
    12
#define UINT64_MAX  ~(Uint64)0
aschiffler@6956
    13
#else
aschiffler@6956
    14
#include <stdint.h>
aschiffler@6956
    15
#endif
aschiffler@6956
    16
aschiffler@6800
    17
#include "SDL.h"
aschiffler@6800
    18
#include "SDL_test.h"
aschiffler@6800
    19
aschiffler@6921
    20
/* Private helpers */
aschiffler@6921
    21
aschiffler@6921
    22
/* 
aschiffler@6921
    23
 * Create a test window
aschiffler@6921
    24
 */
aschiffler@6921
    25
SDL_Window *_createVideoSuiteTestWindow(const char *title)
aschiffler@6921
    26
{
aschiffler@6921
    27
  SDL_Window* window;
aschiffler@6921
    28
  int x, y, w, h;
aschiffler@6921
    29
  SDL_WindowFlags flags;
aschiffler@6921
    30
aschiffler@6921
    31
  /* Standard window */
aschiffler@6921
    32
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6921
    33
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6921
    34
  w = SDLTest_RandomIntegerInRange(320, 1024);
aschiffler@6921
    35
  h = SDLTest_RandomIntegerInRange(320, 768);
aschiffler@6921
    36
  flags = SDL_WINDOW_SHOWN;
aschiffler@6921
    37
  
aschiffler@6921
    38
  window = SDL_CreateWindow(title, x, y, w, h, flags);
aschiffler@6921
    39
  SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
aschiffler@6921
    40
  SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6921
    41
aschiffler@6921
    42
  return window;
aschiffler@6921
    43
}
aschiffler@6921
    44
aschiffler@6921
    45
/*
aschiffler@6921
    46
 * Destroy test window  
aschiffler@6921
    47
 */
aschiffler@6921
    48
void _destroyVideoSuiteTestWindow(SDL_Window *window)
aschiffler@6921
    49
{
aschiffler@6921
    50
  if (window != NULL) {  
aschiffler@6921
    51
     SDL_DestroyWindow(window);
aschiffler@6921
    52
     window = NULL;
aschiffler@6921
    53
     SDLTest_AssertPass("Call to SDL_DestroyWindow");
aschiffler@6921
    54
  }
aschiffler@6921
    55
}
aschiffler@6921
    56
aschiffler@6800
    57
/* Test case functions */
aschiffler@6800
    58
aschiffler@6800
    59
/**
aschiffler@6800
    60
 * @brief Enable and disable screensaver while checking state
aschiffler@6800
    61
 */
aschiffler@6800
    62
int
aschiffler@6800
    63
video_enableDisableScreensaver(void *arg)
aschiffler@6800
    64
{
aschiffler@6800
    65
	SDL_bool initialResult;
aschiffler@6800
    66
	SDL_bool result;
aschiffler@6800
    67
aschiffler@6800
    68
	/* Get current state and proceed according to current state */
aschiffler@6800
    69
	initialResult = SDL_IsScreenSaverEnabled();
aschiffler@6800
    70
	SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");	
aschiffler@6800
    71
	if (initialResult == SDL_TRUE) {
aschiffler@6800
    72
	
aschiffler@6800
    73
	  /* Currently enabled: disable first, then enable again */
aschiffler@6800
    74
	  
aschiffler@6800
    75
	  /* Disable screensaver and check */	
aschiffler@6800
    76
	  SDL_DisableScreenSaver();
aschiffler@6800
    77
	  SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");	
aschiffler@6800
    78
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    79
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    80
	  SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);
aschiffler@6800
    81
	
aschiffler@6800
    82
	  /* Enable screensaver and check */	
aschiffler@6800
    83
	  SDL_EnableScreenSaver();
aschiffler@6800
    84
	  SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
aschiffler@6800
    85
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    86
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    87
	  SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
aschiffler@6800
    88
aschiffler@6800
    89
	} else {
aschiffler@6800
    90
aschiffler@6800
    91
	  /* Currently disabled: enable first, then disable again */
aschiffler@6800
    92
	  
aschiffler@6800
    93
	  /* Enable screensaver and check */	
aschiffler@6800
    94
	  SDL_EnableScreenSaver();
aschiffler@6800
    95
	  SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
aschiffler@6800
    96
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    97
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    98
	  SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
aschiffler@6800
    99
aschiffler@6800
   100
	  /* Disable screensaver and check */	
aschiffler@6800
   101
	  SDL_DisableScreenSaver();
aschiffler@6800
   102
	  SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");	
aschiffler@6800
   103
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
   104
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
   105
	  SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);	
aschiffler@6800
   106
	}	
aschiffler@6800
   107
	
aschiffler@6800
   108
	return TEST_COMPLETED;
aschiffler@6800
   109
}
aschiffler@6800
   110
aschiffler@6891
   111
/**
aschiffler@6891
   112
 * @brief Tests the functionality of the SDL_CreateWindow function using different positions
aschiffler@6891
   113
 */
aschiffler@6891
   114
int
aschiffler@6891
   115
video_createWindowVariousPositions(void *arg)
aschiffler@6891
   116
{
aschiffler@6891
   117
  SDL_Window* window;
aschiffler@6891
   118
  const char* title = "video_createWindowVariousPositions Test Window";
aschiffler@6891
   119
  int x, y, w, h;
aschiffler@6891
   120
  int xVariation, yVariation;
aschiffler@6891
   121
  
aschiffler@6891
   122
  for (xVariation = 0; xVariation < 6; xVariation++) {
aschiffler@6891
   123
   for (yVariation = 0; yVariation < 6; yVariation++) {
aschiffler@6891
   124
    switch(xVariation) {
aschiffler@6891
   125
     case 0:
aschiffler@6891
   126
      /* Zero X Position */  
aschiffler@6891
   127
      x = 0;
aschiffler@6891
   128
      break;
aschiffler@6891
   129
     case 1:
aschiffler@6891
   130
      /* Random X position inside screen */  
aschiffler@6891
   131
      x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   132
      break;
aschiffler@6891
   133
     case 2:
aschiffler@6891
   134
      /* Random X position outside screen (positive) */  
aschiffler@6891
   135
      x = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6891
   136
      break;
aschiffler@6891
   137
     case 3:
aschiffler@6891
   138
      /* Random X position outside screen (negative) */  
aschiffler@6891
   139
      x = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6891
   140
      break;
aschiffler@6891
   141
     case 4:
aschiffler@6891
   142
      /* Centered X position */  
aschiffler@6891
   143
      x = SDL_WINDOWPOS_CENTERED;
aschiffler@6891
   144
      break;
aschiffler@6891
   145
     case 5:
aschiffler@6891
   146
      /* Undefined X position */  
aschiffler@6891
   147
      x = SDL_WINDOWPOS_UNDEFINED;
aschiffler@6891
   148
      break;
aschiffler@6891
   149
    }
aschiffler@6891
   150
aschiffler@6891
   151
    switch(yVariation) {
aschiffler@6891
   152
     case 0:
aschiffler@6891
   153
      /* Zero X Position */  
aschiffler@6891
   154
      y = 0;
aschiffler@6891
   155
      break;
aschiffler@6891
   156
     case 1:
aschiffler@6891
   157
      /* Random X position inside screen */  
aschiffler@6891
   158
      y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   159
      break;
aschiffler@6891
   160
     case 2:
aschiffler@6891
   161
      /* Random X position outside screen (positive) */  
aschiffler@6891
   162
      y = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6891
   163
      break;
aschiffler@6891
   164
     case 3:
aschiffler@6891
   165
      /* Random Y position outside screen (negative) */  
aschiffler@6891
   166
      y = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6891
   167
      break;
aschiffler@6891
   168
     case 4:
aschiffler@6891
   169
      /* Centered Y position */  
aschiffler@6891
   170
      y = SDL_WINDOWPOS_CENTERED;
aschiffler@6891
   171
      break;
aschiffler@6891
   172
     case 5:
aschiffler@6891
   173
      /* Undefined Y position */  
aschiffler@6891
   174
      y = SDL_WINDOWPOS_UNDEFINED;
aschiffler@6891
   175
      break;
aschiffler@6891
   176
    }
aschiffler@6891
   177
     
aschiffler@6891
   178
    w = SDLTest_RandomIntegerInRange(32, 96);
aschiffler@6891
   179
    h = SDLTest_RandomIntegerInRange(32, 96);
aschiffler@6891
   180
    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
aschiffler@6891
   181
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
aschiffler@6891
   182
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6921
   183
aschiffler@6921
   184
    /* Clean up */    
aschiffler@6921
   185
    _destroyVideoSuiteTestWindow(window);
aschiffler@6891
   186
   }
aschiffler@6891
   187
  } 
aschiffler@6891
   188
aschiffler@6891
   189
  return TEST_COMPLETED;
aschiffler@6891
   190
}
aschiffler@6891
   191
aschiffler@6891
   192
/**
aschiffler@6891
   193
 * @brief Tests the functionality of the SDL_CreateWindow function using different sizes
aschiffler@6891
   194
 */
aschiffler@6891
   195
int
aschiffler@6891
   196
video_createWindowVariousSizes(void *arg)
aschiffler@6891
   197
{
aschiffler@6891
   198
  SDL_Window* window;
aschiffler@6891
   199
  const char* title = "video_createWindowVariousSizes Test Window";
aschiffler@6891
   200
  int x, y, w, h;
aschiffler@6891
   201
  int wVariation, hVariation;
aschiffler@6891
   202
  
aschiffler@6891
   203
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   204
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   205
  for (wVariation = 0; wVariation < 3; wVariation++) {
aschiffler@6891
   206
   for (hVariation = 0; hVariation < 3; hVariation++) {
aschiffler@6891
   207
    switch(wVariation) {
aschiffler@6891
   208
     case 0:
aschiffler@6891
   209
      /* Width of 1 */  
aschiffler@6891
   210
      w = 1;
aschiffler@6891
   211
      break;
aschiffler@6891
   212
     case 1:
aschiffler@6891
   213
      /* Random "normal" width */  
aschiffler@6891
   214
      w = SDLTest_RandomIntegerInRange(320, 1920);
aschiffler@6891
   215
      break;
aschiffler@6891
   216
     case 2:
aschiffler@6891
   217
      /* Random "large" width */  
aschiffler@6891
   218
      w = SDLTest_RandomIntegerInRange(2048, 4095);
aschiffler@6891
   219
      break;
aschiffler@6891
   220
    }
aschiffler@6891
   221
aschiffler@6891
   222
    switch(hVariation) {
aschiffler@6891
   223
     case 0:
aschiffler@6891
   224
      /* Height of 1 */  
aschiffler@6891
   225
      h = 1;
aschiffler@6891
   226
      break;
aschiffler@6891
   227
     case 1:
aschiffler@6891
   228
      /* Random "normal" height */  
aschiffler@6891
   229
      h = SDLTest_RandomIntegerInRange(320, 1080);
aschiffler@6891
   230
      break;
aschiffler@6891
   231
     case 2:
aschiffler@6891
   232
      /* Random "large" height */  
aschiffler@6891
   233
      h = SDLTest_RandomIntegerInRange(2048, 4095);
aschiffler@6891
   234
      break;
aschiffler@6891
   235
     }
aschiffler@6891
   236
     
aschiffler@6891
   237
    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
aschiffler@6891
   238
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
aschiffler@6891
   239
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6921
   240
aschiffler@6921
   241
    /* Clean up */    
aschiffler@6921
   242
    _destroyVideoSuiteTestWindow(window);
aschiffler@6891
   243
   }
aschiffler@6891
   244
  }  
aschiffler@6891
   245
aschiffler@6891
   246
  return TEST_COMPLETED;
aschiffler@6891
   247
}
aschiffler@6891
   248
aschiffler@6891
   249
/**
aschiffler@6891
   250
 * @brief Tests the functionality of the SDL_CreateWindow function using different flags
aschiffler@6891
   251
 */
aschiffler@6891
   252
int
aschiffler@6891
   253
video_createWindowVariousFlags(void *arg)
aschiffler@6891
   254
{
aschiffler@6891
   255
  SDL_Window* window;
aschiffler@6891
   256
  const char* title = "video_createWindowVariousFlags Test Window";
aschiffler@6891
   257
  int x, y, w, h;
aschiffler@6891
   258
  int fVariation;
aschiffler@6891
   259
  SDL_WindowFlags flags;
aschiffler@6891
   260
  
aschiffler@6891
   261
  /* Standard window */
aschiffler@6891
   262
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   263
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   264
  w = SDLTest_RandomIntegerInRange(320, 1024);
aschiffler@6891
   265
  h = SDLTest_RandomIntegerInRange(320, 768);
aschiffler@6891
   266
aschiffler@6891
   267
  for (fVariation = 0; fVariation < 13; fVariation++) {
aschiffler@6891
   268
    switch(fVariation) {
aschiffler@6891
   269
     case 0:
aschiffler@6891
   270
      flags = SDL_WINDOW_FULLSCREEN;
aschiffler@6891
   271
      /* Skip - blanks screen; comment out next line to run test */
aschiffler@6891
   272
      continue;   
aschiffler@6891
   273
      break;
aschiffler@6891
   274
     case 1:
aschiffler@6891
   275
      flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
aschiffler@6891
   276
      /* Skip - blanks screen; comment out next line to run test */
aschiffler@6891
   277
      continue;  
aschiffler@6891
   278
      break;
aschiffler@6891
   279
     case 2:
aschiffler@6891
   280
      flags = SDL_WINDOW_OPENGL;
aschiffler@6891
   281
      break;  
aschiffler@6891
   282
     case 3:
aschiffler@6891
   283
      flags = SDL_WINDOW_SHOWN;
aschiffler@6891
   284
      break;   
aschiffler@6891
   285
     case 4:    
aschiffler@6891
   286
      flags = SDL_WINDOW_HIDDEN;
aschiffler@6891
   287
      break;     
aschiffler@6891
   288
     case 5:
aschiffler@6891
   289
      flags = SDL_WINDOW_BORDERLESS;
aschiffler@6891
   290
      break;       
aschiffler@6891
   291
     case 6:
aschiffler@6891
   292
      flags = SDL_WINDOW_RESIZABLE;
aschiffler@6891
   293
      break;         
aschiffler@6891
   294
     case 7:
aschiffler@6891
   295
      flags = SDL_WINDOW_MINIMIZED;
aschiffler@6891
   296
      break;           
aschiffler@6891
   297
     case 8:
aschiffler@6891
   298
      flags = SDL_WINDOW_MAXIMIZED;
aschiffler@6891
   299
      break;
aschiffler@6891
   300
     case 9: 
aschiffler@6891
   301
      flags = SDL_WINDOW_INPUT_GRABBED;
aschiffler@6891
   302
      break;
aschiffler@6891
   303
     case 10:              
aschiffler@6891
   304
      flags = SDL_WINDOW_INPUT_FOCUS;
aschiffler@6891
   305
      break;                 
aschiffler@6891
   306
     case 11:                      
aschiffler@6891
   307
      flags = SDL_WINDOW_MOUSE_FOCUS;
aschiffler@6891
   308
      break;
aschiffler@6891
   309
     case 12: 
aschiffler@6891
   310
      flags = SDL_WINDOW_FOREIGN;
aschiffler@6891
   311
      break;
aschiffler@6891
   312
    }
aschiffler@6891
   313
       
aschiffler@6891
   314
    window = SDL_CreateWindow(title, x, y, w, h, flags);
aschiffler@6891
   315
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
aschiffler@6891
   316
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6921
   317
aschiffler@6921
   318
aschiffler@6921
   319
    /* Clean up */    
aschiffler@6921
   320
    _destroyVideoSuiteTestWindow(window);  
aschiffler@6891
   321
  }
aschiffler@6891
   322
aschiffler@6891
   323
  return TEST_COMPLETED;
aschiffler@6891
   324
}
aschiffler@6891
   325
aschiffler@6921
   326
aschiffler@6891
   327
/**
aschiffler@6891
   328
 * @brief Tests the functionality of the SDL_GetWindowFlags function
aschiffler@6891
   329
 */
aschiffler@6891
   330
int
aschiffler@6891
   331
video_getWindowFlags(void *arg)
aschiffler@6891
   332
{
aschiffler@6891
   333
  SDL_Window* window;
aschiffler@6891
   334
  const char* title = "video_getWindowFlags Test Window";
aschiffler@6891
   335
  SDL_WindowFlags flags;
aschiffler@6891
   336
  Uint32 actualFlags;
aschiffler@6891
   337
  
aschiffler@6921
   338
  /* Reliable flag set always set in test window */
aschiffler@6891
   339
  flags = SDL_WINDOW_SHOWN;
aschiffler@6891
   340
  
aschiffler@6921
   341
  /* Call against new test window */ 
aschiffler@6921
   342
  window = _createVideoSuiteTestWindow(title);
aschiffler@6891
   343
  if (window != NULL) {
aschiffler@6891
   344
      actualFlags = SDL_GetWindowFlags(window);
aschiffler@6891
   345
      SDLTest_AssertPass("Call to SDL_GetWindowFlags");
aschiffler@6891
   346
      SDLTest_AssertCheck((flags & actualFlags) == flags, "Verify returned value has flags %d set, got: %d", flags, actualFlags);
aschiffler@6891
   347
  }
aschiffler@6891
   348
aschiffler@6921
   349
  /* Clean up */    
aschiffler@6921
   350
  _destroyVideoSuiteTestWindow(window);
aschiffler@6921
   351
  
aschiffler@6921
   352
  return TEST_COMPLETED;
aschiffler@6921
   353
}
aschiffler@6921
   354
aschiffler@6921
   355
/**
aschiffler@6921
   356
 * @brief Tests the functionality of the SDL_GetNumDisplayModes function
aschiffler@6921
   357
 */
aschiffler@6921
   358
int
aschiffler@6921
   359
video_getNumDisplayModes(void *arg)
aschiffler@6921
   360
{
aschiffler@6921
   361
  int result;
aschiffler@6921
   362
  int displayNum;
aschiffler@6921
   363
  int i;
aschiffler@6921
   364
aschiffler@6921
   365
  /* Get number of displays */
aschiffler@6921
   366
  displayNum = SDL_GetNumVideoDisplays();
aschiffler@6921
   367
  SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
aschiffler@6921
   368
aschiffler@6921
   369
  /* Make call for each display */  
aschiffler@6921
   370
  for (i=0; i<displayNum; i++) {
aschiffler@6921
   371
    result = SDL_GetNumDisplayModes(i);
aschiffler@6921
   372
    SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d)", i);
aschiffler@6921
   373
    SDLTest_AssertCheck(result >= 1, "Validate returned value from function; expected: >=1; got: %d", result);
aschiffler@6921
   374
  }
aschiffler@6921
   375
aschiffler@6921
   376
  return TEST_COMPLETED;
aschiffler@6921
   377
}
aschiffler@6921
   378
aschiffler@6921
   379
/**
aschiffler@6921
   380
 * @brief Tests negative call to SDL_GetNumDisplayModes function
aschiffler@6921
   381
 */
aschiffler@6921
   382
int
aschiffler@6921
   383
video_getNumDisplayModesNegative(void *arg)
aschiffler@6921
   384
{
aschiffler@6921
   385
  int result;
aschiffler@6921
   386
  int displayNum;
aschiffler@6921
   387
  int displayIndex;
aschiffler@6921
   388
aschiffler@6921
   389
  /* Get number of displays */
aschiffler@6921
   390
  displayNum = SDL_GetNumVideoDisplays();
aschiffler@6921
   391
  SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
aschiffler@6921
   392
aschiffler@6921
   393
  /* Invalid boundary values */
aschiffler@6921
   394
  displayIndex =  SDLTest_RandomSint32BoundaryValue(0, displayNum, SDL_FALSE);
aschiffler@6921
   395
  result = SDL_GetNumDisplayModes(displayIndex);
aschiffler@6921
   396
  SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/boundary)", displayIndex);
aschiffler@6921
   397
  SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);  
aschiffler@6921
   398
  
aschiffler@6921
   399
  /* Large (out-of-bounds) display index */
aschiffler@6921
   400
  displayIndex = SDLTest_RandomIntegerInRange(-2000, -1000);
aschiffler@6921
   401
  result = SDL_GetNumDisplayModes(displayIndex);
aschiffler@6921
   402
  SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/large negative)", displayIndex);
aschiffler@6921
   403
  SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);  
aschiffler@6921
   404
aschiffler@6921
   405
  displayIndex = SDLTest_RandomIntegerInRange(1000, 2000);
aschiffler@6921
   406
  result = SDL_GetNumDisplayModes(displayIndex);
aschiffler@6921
   407
  SDLTest_AssertPass("Call to SDL_GetNumDisplayModes(%d=out-of-bounds/large positive)", displayIndex);
aschiffler@6921
   408
  SDLTest_AssertCheck(result < 0, "Validate returned value from function; expected: <0; got: %d", result);  
aschiffler@6921
   409
aschiffler@6921
   410
  return TEST_COMPLETED;
aschiffler@6921
   411
}
aschiffler@6921
   412
aschiffler@6921
   413
/**
aschiffler@6921
   414
 * @brief Tests the functionality of the SDL_GetClosestDisplayMode function against current resolution
aschiffler@6921
   415
 */
aschiffler@6921
   416
int
aschiffler@6921
   417
video_getClosestDisplayModeCurrentResolution(void *arg)
aschiffler@6921
   418
{
aschiffler@6921
   419
  int result;
aschiffler@6921
   420
  SDL_DisplayMode current; 
aschiffler@6921
   421
  SDL_DisplayMode target; 
aschiffler@6921
   422
  SDL_DisplayMode closest;
aschiffler@6921
   423
  SDL_DisplayMode* dResult;
aschiffler@6921
   424
  int displayNum;
aschiffler@6921
   425
  int i;
aschiffler@6921
   426
  int variation;
aschiffler@6921
   427
aschiffler@6921
   428
  /* Get number of displays */
aschiffler@6921
   429
  displayNum = SDL_GetNumVideoDisplays();
aschiffler@6921
   430
  SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
aschiffler@6921
   431
aschiffler@6921
   432
  /* Make calls for each display */  
aschiffler@6921
   433
  for (i=0; i<displayNum; i++) {
aschiffler@6921
   434
    SDLTest_Log("Testing against display: %d", i);
aschiffler@6921
   435
  
aschiffler@6921
   436
    /* Get first display mode to get a sane resolution; this should always work */
aschiffler@6921
   437
    result = SDL_GetDisplayMode(i, 0, &current);
aschiffler@6921
   438
    SDLTest_AssertPass("Call to SDL_GetDisplayMode");
aschiffler@6921
   439
    SDLTest_AssertCheck(result == 0, "Verify return value, expected: 0, got: %d", result);
aschiffler@6921
   440
    if (result != 0) {
aschiffler@6921
   441
      return TEST_ABORTED;
aschiffler@6921
   442
    }
aschiffler@6921
   443
       
aschiffler@6921
   444
    /* Set the desired resolution equals to current resolution */
aschiffler@6921
   445
    target.w = current.w;
aschiffler@6921
   446
    target.h = current.h;    
aschiffler@6921
   447
    for (variation = 0; variation < 8; variation ++) {
aschiffler@6921
   448
      /* Vary constraints on other query parameters */
aschiffler@6921
   449
      target.format = (variation & 1) ? current.format : 0;
aschiffler@6921
   450
      target.refresh_rate = (variation & 2) ? current.refresh_rate : 0;
aschiffler@6921
   451
      target.driverdata = (variation & 4) ? current.driverdata : 0;
aschiffler@6921
   452
          
aschiffler@6921
   453
      /* Make call */
aschiffler@6921
   454
      dResult = SDL_GetClosestDisplayMode(i, &target, &closest);
aschiffler@6921
   455
      SDLTest_AssertPass("Call to SDL_GetClosestDisplayMode(target=current/variation%d)", variation);
aschiffler@6921
   456
      SDLTest_AssertCheck(dResult != NULL, "Verify returned value is not NULL");
aschiffler@6921
   457
    
aschiffler@6921
   458
      /* Check that one gets the current resolution back again */
aschiffler@6921
   459
      SDLTest_AssertCheck(closest.w == current.w, "Verify returned width matches current width; expected: %d, got: %d", current.w, closest.w);
aschiffler@6921
   460
      SDLTest_AssertCheck(closest.h == current.h, "Verify returned height matches current height; expected: %d, got: %d", current.h, closest.h);
aschiffler@6921
   461
      SDLTest_AssertCheck(closest.w == dResult->w, "Verify return value matches assigned value; expected: %d, got: %d", closest.w, dResult->w);
aschiffler@6921
   462
      SDLTest_AssertCheck(closest.h == dResult->h, "Verify return value matches assigned value; expected: %d, got: %d", closest.h, dResult->h);
aschiffler@6921
   463
    }
aschiffler@6921
   464
  }
aschiffler@6921
   465
aschiffler@6921
   466
  return TEST_COMPLETED;
aschiffler@6921
   467
}
aschiffler@6921
   468
aschiffler@6921
   469
/**
aschiffler@6921
   470
 * @brief Tests the functionality of the SDL_GetClosestDisplayMode function against random resolution
aschiffler@6921
   471
 */
aschiffler@6921
   472
int
aschiffler@6921
   473
video_getClosestDisplayModeRandomResolution(void *arg)
aschiffler@6921
   474
{
aschiffler@6921
   475
  SDL_DisplayMode target; 
aschiffler@6921
   476
  SDL_DisplayMode closest;
aschiffler@6921
   477
  SDL_DisplayMode* dResult;
aschiffler@6921
   478
  int displayNum;
aschiffler@6921
   479
  int i;
aschiffler@6921
   480
  int variation;
aschiffler@6921
   481
aschiffler@6921
   482
  /* Get number of displays */
aschiffler@6921
   483
  displayNum = SDL_GetNumVideoDisplays();
aschiffler@6921
   484
  SDLTest_AssertPass("Call to SDL_GetNumVideoDisplays");
aschiffler@6921
   485
aschiffler@6921
   486
  /* Make calls for each display */  
aschiffler@6921
   487
  for (i=0; i<displayNum; i++) {
aschiffler@6921
   488
    SDLTest_Log("Testing against display: %d", i);
aschiffler@6921
   489
         
aschiffler@6921
   490
    for (variation = 0; variation < 16; variation ++) {
aschiffler@6921
   491
    
aschiffler@6921
   492
      /* Set random constraints */
aschiffler@6921
   493
      target.w = (variation & 1) ? SDLTest_RandomIntegerInRange(1, 4096) : 0;
aschiffler@6921
   494
      target.h = (variation & 2) ? SDLTest_RandomIntegerInRange(1, 4096) : 0;    
aschiffler@6921
   495
      target.format = (variation & 4) ? SDLTest_RandomIntegerInRange(1, 10) : 0;
aschiffler@6921
   496
      target.refresh_rate = (variation & 8) ? SDLTest_RandomIntegerInRange(25, 120) : 0;
aschiffler@6921
   497
      target.driverdata = 0;
aschiffler@6921
   498
          
aschiffler@6921
   499
      /* Make call; may or may not find anything, so don't validate any further */
aschiffler@6921
   500
      dResult = SDL_GetClosestDisplayMode(i, &target, &closest);
aschiffler@6921
   501
      SDLTest_AssertPass("Call to SDL_GetClosestDisplayMode(target=random/variation%d)", variation);      
aschiffler@6921
   502
    }
aschiffler@6921
   503
  }
aschiffler@6921
   504
aschiffler@6921
   505
  return TEST_COMPLETED;
aschiffler@6921
   506
}
aschiffler@6921
   507
aschiffler@6921
   508
/**
aschiffler@6921
   509
 * @brief Tests call to SDL_GetWindowBrightness
aschiffler@6936
   510
 *
aschiffler@6936
   511
* @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowBrightness
aschiffler@6921
   512
 */
aschiffler@6921
   513
int
aschiffler@6921
   514
video_getWindowBrightness(void *arg)
aschiffler@6921
   515
{
aschiffler@6921
   516
  SDL_Window* window;
aschiffler@6921
   517
  const char* title = "video_getWindowBrightness Test Window";
aschiffler@6921
   518
  float result;
aschiffler@6921
   519
aschiffler@6921
   520
  /* Call against new test window */ 
aschiffler@6921
   521
  window = _createVideoSuiteTestWindow(title);
aschiffler@6921
   522
  if (window != NULL) {
aschiffler@6921
   523
      result = SDL_GetWindowBrightness(window);
aschiffler@6921
   524
      SDLTest_AssertPass("Call to SDL_GetWindowBrightness");
aschiffler@6921
   525
      SDLTest_AssertCheck(result >= 0.0 && result <= 1.0, "Validate range of result value; expected: [0.0, 1.0], got: %f", result);
aschiffler@6921
   526
  }
aschiffler@6921
   527
aschiffler@6921
   528
  /* Clean up */    
aschiffler@6921
   529
  _destroyVideoSuiteTestWindow(window);
aschiffler@6921
   530
  
aschiffler@6891
   531
  return TEST_COMPLETED;
aschiffler@6891
   532
}
aschiffler@6891
   533
aschiffler@6936
   534
/**
aschiffler@6936
   535
 * @brief Tests call to SDL_GetWindowBrightness with invalid input
aschiffler@6936
   536
 *
aschiffler@6936
   537
* @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowBrightness
aschiffler@6936
   538
 */
aschiffler@6936
   539
int
aschiffler@6936
   540
video_getWindowBrightnessNegative(void *arg)
aschiffler@6936
   541
{
aschiffler@6936
   542
  const char *invalidWindowError = "Invalid window";
aschiffler@6936
   543
  char *lastError;
aschiffler@6936
   544
  const char* title = "video_getWindowBrightnessNegative Test Window";
aschiffler@6936
   545
  float result;
aschiffler@6936
   546
aschiffler@6936
   547
  /* Call against invalid window */ 
aschiffler@6936
   548
  result = SDL_GetWindowBrightness(NULL);
aschiffler@6936
   549
  SDLTest_AssertPass("Call to SDL_GetWindowBrightness(window=NULL)");
aschiffler@6936
   550
  SDLTest_AssertCheck(result == 1.0, "Validate result value; expected: 1.0, got: %f", result);
aschiffler@6936
   551
  lastError = (char *)SDL_GetError();
aschiffler@6936
   552
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6936
   553
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6936
   554
  if (lastError != NULL) {
aschiffler@6936
   555
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6936
   556
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6936
   557
         invalidWindowError,
aschiffler@6936
   558
         lastError);
aschiffler@6936
   559
  }
aschiffler@6936
   560
aschiffler@6936
   561
  return TEST_COMPLETED;
aschiffler@6936
   562
}
aschiffler@6936
   563
aschiffler@6936
   564
/**
aschiffler@6936
   565
 * @brief Tests call to SDL_GetWindowDisplayMode
aschiffler@6936
   566
 *
aschiffler@6936
   567
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowDisplayMode
aschiffler@6936
   568
 */
aschiffler@6936
   569
int
aschiffler@6936
   570
video_getWindowDisplayMode(void *arg)
aschiffler@6936
   571
{
aschiffler@6936
   572
  SDL_Window* window;
aschiffler@6936
   573
  const char* title = "video_getWindowDisplayMode Test Window";
aschiffler@6936
   574
  SDL_DisplayMode mode;
aschiffler@6936
   575
  int result;
aschiffler@6936
   576
aschiffler@6936
   577
  /* Invalidate part of the mode content so we can check values later */
aschiffler@6936
   578
  mode.w = -1;
aschiffler@6936
   579
  mode.h = -1;
aschiffler@6936
   580
  mode.refresh_rate = -1;
aschiffler@6936
   581
aschiffler@6936
   582
  /* Call against new test window */ 
aschiffler@6936
   583
  window = _createVideoSuiteTestWindow(title);
aschiffler@6936
   584
  if (window != NULL) {
aschiffler@6936
   585
      result = SDL_GetWindowDisplayMode(window, &mode);
aschiffler@6936
   586
      SDLTest_AssertPass("Call to SDL_GetWindowDisplayMode");
aschiffler@6936
   587
      SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   588
      SDLTest_AssertCheck(mode.w > 0, "Validate mode.w content; expected: >0, got: %d", mode.w);
aschiffler@6936
   589
      SDLTest_AssertCheck(mode.h > 0, "Validate mode.h content; expected: >0, got: %d", mode.h);
aschiffler@6936
   590
      SDLTest_AssertCheck(mode.refresh_rate > 0, "Validate mode.refresh_rate content; expected: >0, got: %d", mode.refresh_rate);
aschiffler@6936
   591
  }
aschiffler@6936
   592
aschiffler@6936
   593
  /* Clean up */    
aschiffler@6936
   594
  _destroyVideoSuiteTestWindow(window);
aschiffler@6936
   595
  
aschiffler@6936
   596
  return TEST_COMPLETED;
aschiffler@6936
   597
}
aschiffler@6936
   598
aschiffler@6936
   599
/**
aschiffler@6936
   600
 * @brief Tests call to SDL_GetWindowDisplayMode with invalid input
aschiffler@6936
   601
 *
aschiffler@6936
   602
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowDisplayMode
aschiffler@6936
   603
 */
aschiffler@6936
   604
int
aschiffler@6936
   605
video_getWindowDisplayModeNegative(void *arg)
aschiffler@6936
   606
{
aschiffler@6936
   607
  const char *expectedError = "Parameter 'mode' is invalid";
aschiffler@6936
   608
  const char *invalidWindowError = "Invalid window";
aschiffler@6936
   609
  char *lastError;
aschiffler@6936
   610
  SDL_Window* window;
aschiffler@6936
   611
  const char* title = "video_getWindowDisplayModeNegative Test Window";
aschiffler@6936
   612
  SDL_DisplayMode mode;
aschiffler@6936
   613
  int result;
aschiffler@6936
   614
aschiffler@6936
   615
  /* Call against new test window */ 
aschiffler@6936
   616
  window = _createVideoSuiteTestWindow(title);
aschiffler@6936
   617
  if (window != NULL) {
aschiffler@6936
   618
      result = SDL_GetWindowDisplayMode(window, NULL);
aschiffler@6936
   619
      SDLTest_AssertPass("Call to SDL_GetWindowDisplayMode(...,mode=NULL)");
aschiffler@6936
   620
      SDLTest_AssertCheck(result == -1, "Validate result value; expected: -1, got: %d", result);
aschiffler@6936
   621
      lastError = (char *)SDL_GetError();
aschiffler@6936
   622
      SDLTest_AssertPass("SDL_GetError()");
aschiffler@6936
   623
      SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6936
   624
      if (lastError != NULL) {
aschiffler@6936
   625
      	SDLTest_AssertCheck(SDL_strcmp(lastError, expectedError) == 0,
aschiffler@6936
   626
             "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6936
   627
             expectedError,
aschiffler@6936
   628
             lastError);
aschiffler@6936
   629
      }
aschiffler@6936
   630
  }
aschiffler@6936
   631
aschiffler@6936
   632
  /* Clean up */    
aschiffler@6936
   633
  _destroyVideoSuiteTestWindow(window);
aschiffler@6936
   634
  
aschiffler@6936
   635
  /* Call against invalid window */
aschiffler@6936
   636
  result = SDL_GetWindowDisplayMode(NULL, &mode);
aschiffler@6936
   637
  SDLTest_AssertPass("Call to SDL_GetWindowDisplayMode(window=NULL,...)");
aschiffler@6936
   638
  SDLTest_AssertCheck(result == -1, "Validate result value; expected: -1, got: %d", result);
aschiffler@6936
   639
  lastError = (char *)SDL_GetError();
aschiffler@6936
   640
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6936
   641
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6936
   642
  if (lastError != NULL) {
aschiffler@6936
   643
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6936
   644
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6936
   645
         invalidWindowError,
aschiffler@6936
   646
         lastError);
aschiffler@6936
   647
  }
aschiffler@6936
   648
  
aschiffler@6936
   649
  return TEST_COMPLETED;
aschiffler@6936
   650
}
aschiffler@6936
   651
aschiffler@6936
   652
/**
aschiffler@6936
   653
 * @brief Tests call to SDL_GetWindowGammaRamp
aschiffler@6936
   654
 *
aschiffler@6936
   655
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowGammaRamp
aschiffler@6936
   656
 */
aschiffler@6936
   657
int
aschiffler@6936
   658
video_getWindowGammaRamp(void *arg)
aschiffler@6936
   659
{
aschiffler@6936
   660
  SDL_Window* window;
aschiffler@6936
   661
  const char* title = "video_getWindowGammaRamp Test Window";
aschiffler@6936
   662
  Uint16 red[256];
aschiffler@6936
   663
  Uint16 green[256];
aschiffler@6936
   664
  Uint16 blue[256];
aschiffler@6936
   665
  int result;
aschiffler@6936
   666
aschiffler@6936
   667
  /* Call against new test window */ 
aschiffler@6936
   668
  window = _createVideoSuiteTestWindow(title);
aschiffler@6956
   669
  if (window == NULL) return TEST_ABORTED;
aschiffler@6956
   670
  
aschiffler@6956
   671
  /* Retrieve no channel */
aschiffler@6956
   672
  result = SDL_GetWindowGammaRamp(window, NULL, NULL, NULL);
aschiffler@6956
   673
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(all NULL)");
aschiffler@6956
   674
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   675
aschiffler@6956
   676
  /* Retrieve single channel */
aschiffler@6956
   677
  result = SDL_GetWindowGammaRamp(window, red, NULL, NULL);
aschiffler@6956
   678
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(r)");
aschiffler@6956
   679
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   680
aschiffler@6956
   681
  result = SDL_GetWindowGammaRamp(window, NULL, green, NULL);
aschiffler@6956
   682
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(g)");
aschiffler@6956
   683
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   684
aschiffler@6956
   685
  result = SDL_GetWindowGammaRamp(window, NULL, NULL, blue);
aschiffler@6956
   686
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(b)");
aschiffler@6956
   687
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   688
aschiffler@6956
   689
  /* Retrieve two channels */
aschiffler@6956
   690
  result = SDL_GetWindowGammaRamp(window, red, green, NULL);
aschiffler@6956
   691
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(r, g)");
aschiffler@6956
   692
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   693
aschiffler@6956
   694
  result = SDL_GetWindowGammaRamp(window, NULL, green, blue);
aschiffler@6956
   695
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(g,b)");
aschiffler@6956
   696
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   697
aschiffler@6956
   698
  result = SDL_GetWindowGammaRamp(window, red, NULL, blue);
aschiffler@6956
   699
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(r,b)");
aschiffler@6956
   700
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   701
aschiffler@6956
   702
  /* Retrieve all channels */
aschiffler@6956
   703
  result = SDL_GetWindowGammaRamp(window, red, green, blue);
aschiffler@6956
   704
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(r,g,b)");
aschiffler@6956
   705
  SDLTest_AssertCheck(result == 0, "Validate result value; expected: 0, got: %d", result);
aschiffler@6936
   706
aschiffler@6936
   707
  /* Clean up */    
aschiffler@6936
   708
  _destroyVideoSuiteTestWindow(window);
aschiffler@6936
   709
  
aschiffler@6936
   710
  return TEST_COMPLETED;
aschiffler@6936
   711
}
aschiffler@6936
   712
aschiffler@6936
   713
/**
aschiffler@6936
   714
 * @brief Tests call to SDL_GetWindowGammaRamp with invalid input
aschiffler@6936
   715
 *
aschiffler@6936
   716
* @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowGammaRamp
aschiffler@6936
   717
 */
aschiffler@6936
   718
int
aschiffler@6936
   719
video_getWindowGammaRampNegative(void *arg)
aschiffler@6936
   720
{
aschiffler@6936
   721
  const char *invalidWindowError = "Invalid window";
aschiffler@6936
   722
  char *lastError;
aschiffler@6936
   723
  const char* title = "video_getWindowGammaRampNegative Test Window";
aschiffler@6936
   724
  Uint16 red[256];
aschiffler@6936
   725
  Uint16 green[256];
aschiffler@6936
   726
  Uint16 blue[256];
aschiffler@6936
   727
  int result;
aschiffler@6936
   728
aschiffler@6936
   729
  /* Call against invalid window */ 
aschiffler@6936
   730
  result = SDL_GetWindowGammaRamp(NULL, red, green, blue);
aschiffler@6936
   731
  SDLTest_AssertPass("Call to SDL_GetWindowGammaRamp(window=NULL,r,g,b)");
aschiffler@6936
   732
  SDLTest_AssertCheck(result == -1, "Validate result value; expected: -1, got: %f", result);
aschiffler@6936
   733
  lastError = (char *)SDL_GetError();
aschiffler@6936
   734
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6936
   735
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6936
   736
  if (lastError != NULL) {
aschiffler@6936
   737
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6936
   738
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6936
   739
         invalidWindowError,
aschiffler@6936
   740
         lastError);
aschiffler@6936
   741
  }
aschiffler@6936
   742
aschiffler@6936
   743
  return TEST_COMPLETED;
aschiffler@6936
   744
}
aschiffler@6936
   745
aschiffler@6956
   746
/* Helper for setting and checking the window grab state */
aschiffler@6956
   747
void 
aschiffler@6956
   748
_setAndCheckWindowGrabState(SDL_Window* window, SDL_bool desiredState)
aschiffler@6956
   749
{
aschiffler@6956
   750
  SDL_bool currentState;
aschiffler@6956
   751
  
aschiffler@6956
   752
  /* Set state */
aschiffler@6956
   753
  SDL_SetWindowGrab(window, desiredState);
aschiffler@6956
   754
  SDLTest_AssertPass("Call to SDL_SetWindowGrab(%s)", (desiredState == SDL_FALSE) ? "SDL_FALSE" : "SDL_TRUE");
aschiffler@6956
   755
aschiffler@6956
   756
  /* Get and check state */
aschiffler@6956
   757
  currentState = SDL_GetWindowGrab(window);
aschiffler@6956
   758
  SDLTest_AssertPass("Call to SDL_GetWindowGrab()");
aschiffler@6956
   759
  SDLTest_AssertCheck(
aschiffler@6956
   760
      currentState == desiredState, 
aschiffler@6956
   761
      "Validate returned state; expected: %s, got: %s", 
aschiffler@6956
   762
      (desiredState == SDL_FALSE) ? "SDL_FALSE" : "SDL_TRUE",
aschiffler@6956
   763
      (currentState == SDL_FALSE) ? "SDL_FALSE" : "SDL_TRUE");
aschiffler@6956
   764
}
aschiffler@6956
   765
aschiffler@6956
   766
/**
aschiffler@6956
   767
 * @brief Tests call to SDL_GetWindowGrab and SDL_SetWindowGrab
aschiffler@6956
   768
 *
aschiffler@6956
   769
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowGrab
aschiffler@6956
   770
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_SetWindowGrab
aschiffler@6956
   771
 */
aschiffler@6956
   772
int
aschiffler@6956
   773
video_getSetWindowGrab(void *arg)
aschiffler@6956
   774
{
aschiffler@6956
   775
  const char *invalidWindowError = "Invalid window";
aschiffler@6956
   776
  char *lastError;
aschiffler@6956
   777
  const char* title = "video_getSetWindowGrab Test Window";
aschiffler@6956
   778
  SDL_Window* window;
aschiffler@6956
   779
  SDL_bool originalState, dummyState, currentState, desiredState;
aschiffler@6956
   780
aschiffler@6956
   781
  /* Call against new test window */ 
aschiffler@6956
   782
  window = _createVideoSuiteTestWindow(title);
aschiffler@6956
   783
  if (window == NULL) return TEST_ABORTED;
aschiffler@6956
   784
aschiffler@6956
   785
  /* Get state */  
aschiffler@6956
   786
  originalState = SDL_GetWindowGrab(window);
aschiffler@6956
   787
  SDLTest_AssertPass("Call to SDL_GetWindowGrab()");
aschiffler@6956
   788
aschiffler@6956
   789
  /* F */
aschiffler@6956
   790
  _setAndCheckWindowGrabState(window, SDL_FALSE);
aschiffler@6956
   791
aschiffler@6956
   792
  /* F --> F */
aschiffler@6956
   793
  _setAndCheckWindowGrabState(window, SDL_FALSE);
aschiffler@6956
   794
  
aschiffler@6956
   795
  /* F --> T */
aschiffler@6956
   796
  _setAndCheckWindowGrabState(window, SDL_TRUE);
aschiffler@6956
   797
aschiffler@6956
   798
  /* T --> T */
aschiffler@6956
   799
  _setAndCheckWindowGrabState(window, SDL_TRUE);
aschiffler@6956
   800
aschiffler@6956
   801
  /* T --> F */
aschiffler@6956
   802
  _setAndCheckWindowGrabState(window, SDL_FALSE);
aschiffler@6956
   803
  
aschiffler@6956
   804
  /* Negative tests */
aschiffler@6956
   805
  dummyState = SDL_GetWindowGrab(NULL);
aschiffler@6956
   806
  SDLTest_AssertPass("Call to SDL_GetWindowGrab(window=NULL)");
aschiffler@6956
   807
  lastError = (char *)SDL_GetError();
aschiffler@6956
   808
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
   809
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
   810
  if (lastError != NULL) {
aschiffler@6956
   811
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
   812
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
   813
         invalidWindowError,
aschiffler@6956
   814
         lastError);
aschiffler@6956
   815
  }
aschiffler@6956
   816
aschiffler@6956
   817
  SDL_SetWindowGrab(NULL, SDL_FALSE);
aschiffler@6956
   818
  SDLTest_AssertPass("Call to SDL_SetWindowGrab(window=NULL,SDL_FALSE)");
aschiffler@6956
   819
  lastError = (char *)SDL_GetError();
aschiffler@6956
   820
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
   821
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
   822
  if (lastError != NULL) {
aschiffler@6956
   823
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
   824
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
   825
         invalidWindowError,
aschiffler@6956
   826
         lastError);
aschiffler@6956
   827
  }
aschiffler@6956
   828
aschiffler@6956
   829
  SDL_SetWindowGrab(NULL, SDL_TRUE);
aschiffler@6956
   830
  SDLTest_AssertPass("Call to SDL_SetWindowGrab(window=NULL,SDL_FALSE)");
aschiffler@6956
   831
  lastError = (char *)SDL_GetError();
aschiffler@6956
   832
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
   833
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
   834
  if (lastError != NULL) {
aschiffler@6956
   835
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
   836
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
   837
         invalidWindowError,
aschiffler@6956
   838
         lastError);
aschiffler@6956
   839
  }
aschiffler@6956
   840
  
aschiffler@6956
   841
  /* State should still be F */
aschiffler@6956
   842
  desiredState = SDL_FALSE;
aschiffler@6956
   843
  currentState = SDL_GetWindowGrab(window);
aschiffler@6956
   844
  SDLTest_AssertPass("Call to SDL_GetWindowGrab()");
aschiffler@6956
   845
  SDLTest_AssertCheck(
aschiffler@6956
   846
      currentState == desiredState, 
aschiffler@6956
   847
      "Validate returned state; expected: %s, got: %s", 
aschiffler@6956
   848
      (desiredState == SDL_FALSE) ? "SDL_FALSE" : "SDL_TRUE",
aschiffler@6956
   849
      (currentState == SDL_FALSE) ? "SDL_FALSE" : "SDL_TRUE");
aschiffler@6956
   850
    
aschiffler@6956
   851
  /* Restore state */  
aschiffler@6956
   852
  _setAndCheckWindowGrabState(window, originalState);
aschiffler@6956
   853
aschiffler@6956
   854
  /* Clean up */    
aschiffler@6956
   855
  _destroyVideoSuiteTestWindow(window);
aschiffler@6956
   856
aschiffler@6956
   857
  return TEST_COMPLETED;
aschiffler@6956
   858
}
aschiffler@6956
   859
aschiffler@6956
   860
/**
aschiffler@6956
   861
 * @brief Tests call to SDL_GetWindowID and SDL_GetWindowFromID
aschiffler@6956
   862
 *
aschiffler@6956
   863
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowID
aschiffler@6956
   864
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_SetWindowFromID
aschiffler@6956
   865
 */
aschiffler@6956
   866
int
aschiffler@6956
   867
video_getWindowId(void *arg)
aschiffler@6956
   868
{
aschiffler@6956
   869
  const char *invalidWindowError = "Invalid window";
aschiffler@6956
   870
  char *lastError;
aschiffler@6956
   871
  const char* title = "video_getWindowId Test Window";
aschiffler@6956
   872
  SDL_Window* window;
aschiffler@6956
   873
  SDL_Window* result;
aschiffler@6956
   874
  Uint32 id, randomId;
aschiffler@6956
   875
aschiffler@6956
   876
  /* Call against new test window */ 
aschiffler@6956
   877
  window = _createVideoSuiteTestWindow(title);
aschiffler@6956
   878
  if (window == NULL) return TEST_ABORTED;
aschiffler@6956
   879
aschiffler@6956
   880
  /* Get ID */
aschiffler@6956
   881
  id = SDL_GetWindowID(window);
aschiffler@6956
   882
  SDLTest_AssertPass("Call to SDL_GetWindowID()");
aschiffler@6956
   883
aschiffler@6956
   884
  /* Get window from ID */
aschiffler@6956
   885
  result = SDL_GetWindowFromID(id);
aschiffler@6956
   886
  SDLTest_AssertPass("Call to SDL_GetWindowID(%d)", id);
aschiffler@6956
   887
  SDLTest_AssertCheck(result == window, "Verify result matches window pointer");
aschiffler@6956
   888
aschiffler@6956
   889
  /* Get window from random large ID, no result check */
aschiffler@6956
   890
  randomId = SDLTest_RandomIntegerInRange(UINT8_MAX,UINT16_MAX);
aschiffler@6956
   891
  result = SDL_GetWindowFromID(randomId);
aschiffler@6956
   892
  SDLTest_AssertPass("Call to SDL_GetWindowID(%d/random_large)", randomId);
aschiffler@6956
   893
aschiffler@6956
   894
  /* Get window from 0 and Uint32 max ID, no result check */
aschiffler@6956
   895
  result = SDL_GetWindowFromID(0);
aschiffler@6956
   896
  SDLTest_AssertPass("Call to SDL_GetWindowID(0)");
aschiffler@6956
   897
  result = SDL_GetWindowFromID(UINT32_MAX);
aschiffler@6956
   898
  SDLTest_AssertPass("Call to SDL_GetWindowID(UINT32_MAX)");
aschiffler@6956
   899
aschiffler@6956
   900
  /* Clean up */    
aschiffler@6956
   901
  _destroyVideoSuiteTestWindow(window);
aschiffler@6956
   902
    
aschiffler@6956
   903
  /* Get window from ID for closed window*/
aschiffler@6956
   904
  result = SDL_GetWindowFromID(id);
aschiffler@6956
   905
  SDLTest_AssertPass("Call to SDL_GetWindowID(%d/closed_window)", id);
aschiffler@6956
   906
  SDLTest_AssertCheck(result == NULL, "Verify result is NULL");
aschiffler@6956
   907
aschiffler@6956
   908
  /* Negative test */
aschiffler@6956
   909
  id = SDL_GetWindowID(NULL);
aschiffler@6956
   910
  SDLTest_AssertPass("Call to SDL_GetWindowID(window=NULL)");
aschiffler@6956
   911
  lastError = (char *)SDL_GetError();
aschiffler@6956
   912
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
   913
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
   914
  if (lastError != NULL) {
aschiffler@6956
   915
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
   916
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
   917
         invalidWindowError,
aschiffler@6956
   918
         lastError);
aschiffler@6956
   919
  }
aschiffler@6956
   920
aschiffler@6956
   921
  return TEST_COMPLETED;
aschiffler@6956
   922
}
aschiffler@6956
   923
aschiffler@6956
   924
/**
aschiffler@6956
   925
 * @brief Tests call to SDL_GetWindowPixelFormat
aschiffler@6956
   926
 *
aschiffler@6956
   927
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowPixelFormat
aschiffler@6956
   928
 */
aschiffler@6956
   929
int
aschiffler@6956
   930
video_getWindowPixelFormat(void *arg)
aschiffler@6956
   931
{
aschiffler@6956
   932
  const char *invalidWindowError = "Invalid window";
aschiffler@6956
   933
  char *lastError;
aschiffler@6956
   934
  const char* title = "video_getWindowPixelFormat Test Window";
aschiffler@6956
   935
  SDL_Window* window;
aschiffler@6956
   936
  Uint32 format;
aschiffler@6956
   937
aschiffler@6956
   938
  /* Call against new test window */ 
aschiffler@6956
   939
  window = _createVideoSuiteTestWindow(title);
aschiffler@6956
   940
  if (window == NULL) return TEST_ABORTED;
aschiffler@6956
   941
aschiffler@6956
   942
  /* Get format */
aschiffler@6956
   943
  format = SDL_GetWindowPixelFormat(window);
aschiffler@6956
   944
  SDLTest_AssertPass("Call to SDL_GetWindowPixelFormat()");
aschiffler@6956
   945
  SDLTest_AssertCheck(format != SDL_PIXELFORMAT_UNKNOWN, "Verify that returned format is valid; expected: != %d, got: %d", SDL_PIXELFORMAT_UNKNOWN, format);
aschiffler@6956
   946
   
aschiffler@6956
   947
  /* Clean up */    
aschiffler@6956
   948
  _destroyVideoSuiteTestWindow(window);
aschiffler@6956
   949
    
aschiffler@6956
   950
  /* Negative test */
aschiffler@6956
   951
  format = SDL_GetWindowPixelFormat(NULL);
aschiffler@6956
   952
  SDLTest_AssertPass("Call to SDL_GetWindowPixelFormat(window=NULL)");
aschiffler@6956
   953
  lastError = (char *)SDL_GetError();
aschiffler@6956
   954
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
   955
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
   956
  if (lastError != NULL) {
aschiffler@6956
   957
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
   958
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
   959
         invalidWindowError,
aschiffler@6956
   960
         lastError);
aschiffler@6956
   961
  }
aschiffler@6956
   962
aschiffler@6956
   963
  return TEST_COMPLETED;
aschiffler@6956
   964
}
aschiffler@6956
   965
aschiffler@6956
   966
/**
aschiffler@6956
   967
 * @brief Tests call to SDL_GetWindowPosition and SDL_SetWindowPosition
aschiffler@6956
   968
 *
aschiffler@6956
   969
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_GetWindowPosition
aschiffler@6956
   970
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_SetWindowPosition
aschiffler@6956
   971
 */
aschiffler@6956
   972
int
aschiffler@6956
   973
video_getSetWindowPosition(void *arg)
aschiffler@6956
   974
{
aschiffler@6956
   975
  const char *invalidWindowError = "Invalid window";
aschiffler@6956
   976
  char *lastError;
aschiffler@6956
   977
  const char* title = "video_getSetWindowPosition Test Window";
aschiffler@6956
   978
  SDL_Window* window;
aschiffler@6956
   979
  int xVariation, yVariation;
aschiffler@6956
   980
  int referenceX, referenceY;
aschiffler@6956
   981
  int currentX, currentY;
aschiffler@6956
   982
  int desiredX, desiredY;
aschiffler@6956
   983
aschiffler@6956
   984
  /* Call against new test window */ 
aschiffler@6956
   985
  window = _createVideoSuiteTestWindow(title);
aschiffler@6956
   986
  if (window == NULL) return TEST_ABORTED;
aschiffler@6956
   987
  
aschiffler@6956
   988
  for (xVariation = 0; xVariation < 4; xVariation++) {
aschiffler@6956
   989
   for (yVariation = 0; yVariation < 4; yVariation++) {
aschiffler@6956
   990
    switch(xVariation) {
aschiffler@6956
   991
     case 0:
aschiffler@6956
   992
      /* Zero X Position */  
aschiffler@6956
   993
      desiredX = 0;
aschiffler@6956
   994
      break;
aschiffler@6956
   995
     case 1:
aschiffler@6956
   996
      /* Random X position inside screen */  
aschiffler@6956
   997
      desiredX = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6956
   998
      break;
aschiffler@6956
   999
     case 2:
aschiffler@6956
  1000
      /* Random X position outside screen (positive) */  
aschiffler@6956
  1001
      desiredX = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6956
  1002
      break;
aschiffler@6956
  1003
     case 3:
aschiffler@6956
  1004
      /* Random X position outside screen (negative) */  
aschiffler@6956
  1005
      desiredX = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6956
  1006
      break;
aschiffler@6956
  1007
    }
aschiffler@6956
  1008
aschiffler@6956
  1009
    switch(yVariation) {
aschiffler@6956
  1010
     case 0:
aschiffler@6956
  1011
      /* Zero X Position */  
aschiffler@6956
  1012
      desiredY = 0;
aschiffler@6956
  1013
      break;
aschiffler@6956
  1014
     case 1:
aschiffler@6956
  1015
      /* Random X position inside screen */  
aschiffler@6956
  1016
      desiredY = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6956
  1017
      break;
aschiffler@6956
  1018
     case 2:
aschiffler@6956
  1019
      /* Random X position outside screen (positive) */  
aschiffler@6956
  1020
      desiredY = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6956
  1021
      break;
aschiffler@6956
  1022
     case 3:
aschiffler@6956
  1023
      /* Random Y position outside screen (negative) */  
aschiffler@6956
  1024
      desiredY = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6956
  1025
      break;
aschiffler@6956
  1026
    }
aschiffler@6956
  1027
aschiffler@6956
  1028
    /* Set position */
aschiffler@6956
  1029
    SDL_SetWindowPosition(window, desiredX, desiredY);
aschiffler@6956
  1030
    SDLTest_AssertPass("Call to SDL_SetWindowPosition(...,%d,%d)", desiredX, desiredY);
aschiffler@6956
  1031
   
aschiffler@6956
  1032
    /* Get position */
aschiffler@6956
  1033
    currentX = desiredX + 1;
aschiffler@6956
  1034
    currentY = desiredY + 1;
aschiffler@6956
  1035
    SDL_GetWindowPosition(window, &currentX, &currentY);
aschiffler@6956
  1036
    SDLTest_AssertPass("Call to SDL_GetWindowPosition()");
aschiffler@6956
  1037
    SDLTest_AssertCheck(desiredX == currentX, "Verify returned X position; expected: %d, got: %d", desiredX, currentX);
aschiffler@6956
  1038
    SDLTest_AssertCheck(desiredY == currentY, "Verify returned Y position; expected: %d, got: %d", desiredY, currentY);
aschiffler@6956
  1039
aschiffler@6956
  1040
    /* Get position X */
aschiffler@6956
  1041
    currentX = desiredX + 1;    
aschiffler@6956
  1042
    SDL_GetWindowPosition(window, &currentX, NULL);
aschiffler@6956
  1043
    SDLTest_AssertPass("Call to SDL_GetWindowPosition(&y=NULL)");
aschiffler@6956
  1044
    SDLTest_AssertCheck(desiredX == currentX, "Verify returned X position; expected: %d, got: %d", desiredX, currentX);
aschiffler@6956
  1045
aschiffler@6956
  1046
    /* Get position Y */
aschiffler@6956
  1047
    currentY = desiredY + 1;
aschiffler@6956
  1048
    SDL_GetWindowPosition(window, NULL, &currentY);
aschiffler@6956
  1049
    SDLTest_AssertPass("Call to SDL_GetWindowPosition(&x=NULL)");
aschiffler@6956
  1050
    SDLTest_AssertCheck(desiredY == currentY, "Verify returned Y position; expected: %d, got: %d", desiredY, currentY);
aschiffler@6956
  1051
   }
aschiffler@6956
  1052
  }
aschiffler@6956
  1053
aschiffler@6956
  1054
  /* Dummy call with both pointers NULL */
aschiffler@6956
  1055
  SDL_GetWindowPosition(window, NULL, NULL);
aschiffler@6956
  1056
  SDLTest_AssertPass("Call to SDL_GetWindowPosition(&x=NULL,&y=NULL)");
aschiffler@6956
  1057
   
aschiffler@6956
  1058
  /* Clean up */    
aschiffler@6956
  1059
  _destroyVideoSuiteTestWindow(window);
aschiffler@6956
  1060
    
aschiffler@6956
  1061
  /* Set some 'magic' value for later check that nothing was changed */
aschiffler@6956
  1062
  referenceX = SDLTest_RandomSint32();
aschiffler@6956
  1063
  referenceY = SDLTest_RandomSint32();
aschiffler@6956
  1064
  currentX = referenceX;
aschiffler@6956
  1065
  currentY = referenceY;
aschiffler@6956
  1066
  desiredX = SDLTest_RandomSint32();
aschiffler@6956
  1067
  desiredY = SDLTest_RandomSint32();
aschiffler@6956
  1068
  
aschiffler@6956
  1069
  /* Negative tests */
aschiffler@6956
  1070
  SDL_GetWindowPosition(NULL, &currentX, &currentY);
aschiffler@6956
  1071
  SDLTest_AssertPass("Call to SDL_GetWindowPosition(window=NULL)");
aschiffler@6956
  1072
  SDLTest_AssertCheck(
aschiffler@6956
  1073
  	currentX == referenceX && currentY == referenceY, 
aschiffler@6956
  1074
  	"Verify that content of X and Y pointers has not been modified; expected: %d,%d; got: %d,%d",
aschiffler@6956
  1075
  	referenceX, referenceY,
aschiffler@6956
  1076
  	currentX, currentY);
aschiffler@6956
  1077
  lastError = (char *)SDL_GetError();
aschiffler@6956
  1078
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
  1079
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
  1080
  if (lastError != NULL) {
aschiffler@6956
  1081
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
  1082
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
  1083
         invalidWindowError,
aschiffler@6956
  1084
         lastError);
aschiffler@6956
  1085
  }
aschiffler@6956
  1086
aschiffler@6956
  1087
  SDL_GetWindowPosition(NULL, NULL, NULL);
aschiffler@6956
  1088
  SDLTest_AssertPass("Call to SDL_GetWindowPosition(NULL, NULL, NULL)");
aschiffler@6956
  1089
  lastError = (char *)SDL_GetError();
aschiffler@6956
  1090
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
  1091
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
  1092
  if (lastError != NULL) {
aschiffler@6956
  1093
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
  1094
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
  1095
         invalidWindowError,
aschiffler@6956
  1096
         lastError);
aschiffler@6956
  1097
  }
aschiffler@6956
  1098
aschiffler@6956
  1099
  SDL_SetWindowPosition(NULL, desiredX, desiredY);
aschiffler@6956
  1100
  SDLTest_AssertPass("Call to SDL_SetWindowPosition(window=NULL)");
aschiffler@6956
  1101
  lastError = (char *)SDL_GetError();
aschiffler@6956
  1102
  SDLTest_AssertPass("SDL_GetError()");
aschiffler@6956
  1103
  SDLTest_AssertCheck(lastError != NULL, "Verify error message is not NULL");
aschiffler@6956
  1104
  if (lastError != NULL) {
aschiffler@6956
  1105
      SDLTest_AssertCheck(SDL_strcmp(lastError, invalidWindowError) == 0,
aschiffler@6956
  1106
         "SDL_GetError(): expected message '%s', was message: '%s'",
aschiffler@6956
  1107
         invalidWindowError,
aschiffler@6956
  1108
         lastError);
aschiffler@6956
  1109
  }
aschiffler@6956
  1110
  
aschiffler@6956
  1111
  return TEST_COMPLETED;
aschiffler@6956
  1112
}
aschiffler@6956
  1113
aschiffler@6800
  1114
/* ================= Test References ================== */
aschiffler@6800
  1115
aschiffler@6800
  1116
/* Video test cases */
aschiffler@6800
  1117
static const SDLTest_TestCaseReference videoTest1 =
aschiffler@6800
  1118
		{ (SDLTest_TestCaseFp)video_enableDisableScreensaver, "video_enableDisableScreensaver",  "Enable and disable screenaver while checking state", TEST_ENABLED };
aschiffler@6800
  1119
aschiffler@6891
  1120
static const SDLTest_TestCaseReference videoTest2 =
aschiffler@6891
  1121
		{ (SDLTest_TestCaseFp)video_createWindowVariousPositions, "video_createWindowVariousPositions",  "Create windows at various locations", TEST_ENABLED };
aschiffler@6891
  1122
aschiffler@6891
  1123
static const SDLTest_TestCaseReference videoTest3 =
aschiffler@6891
  1124
		{ (SDLTest_TestCaseFp)video_createWindowVariousSizes, "video_createWindowVariousSizes",  "Create windows with various sizes", TEST_ENABLED };
aschiffler@6891
  1125
aschiffler@6891
  1126
static const SDLTest_TestCaseReference videoTest4 =
aschiffler@6891
  1127
		{ (SDLTest_TestCaseFp)video_createWindowVariousFlags, "video_createWindowVariousFlags",  "Create windows using various flags", TEST_ENABLED };
aschiffler@6891
  1128
aschiffler@6891
  1129
static const SDLTest_TestCaseReference videoTest5 =
aschiffler@6921
  1130
		{ (SDLTest_TestCaseFp)video_getWindowFlags, "video_getWindowFlags",  "Get window flags set during SDL_CreateWindow", TEST_ENABLED };
aschiffler@6921
  1131
aschiffler@6921
  1132
static const SDLTest_TestCaseReference videoTest6 =
aschiffler@6921
  1133
		{ (SDLTest_TestCaseFp)video_getNumDisplayModes, "video_getNumDisplayModes",  "Use SDL_GetNumDisplayModes function to get number of display modes", TEST_ENABLED };
aschiffler@6921
  1134
aschiffler@6921
  1135
static const SDLTest_TestCaseReference videoTest7 =
aschiffler@6921
  1136
		{ (SDLTest_TestCaseFp)video_getNumDisplayModesNegative, "video_getNumDisplayModesNegative",  "Negative tests for SDL_GetNumDisplayModes", TEST_ENABLED };
aschiffler@6921
  1137
aschiffler@6921
  1138
static const SDLTest_TestCaseReference videoTest8 =
aschiffler@6921
  1139
		{ (SDLTest_TestCaseFp)video_getClosestDisplayModeCurrentResolution, "video_getClosestDisplayModeCurrentResolution",  "Use function to get closes match to requested display mode for current resolution", TEST_ENABLED };
aschiffler@6921
  1140
aschiffler@6921
  1141
static const SDLTest_TestCaseReference videoTest9 =
aschiffler@6921
  1142
		{ (SDLTest_TestCaseFp)video_getClosestDisplayModeRandomResolution, "video_getClosestDisplayModeRandomResolution",  "Use function to get closes match to requested display mode for random resolution", TEST_ENABLED };
aschiffler@6921
  1143
aschiffler@6921
  1144
static const SDLTest_TestCaseReference videoTest10 =
aschiffler@6921
  1145
		{ (SDLTest_TestCaseFp)video_getWindowBrightness, "video_getWindowBrightness",  "Get window brightness", TEST_ENABLED };
aschiffler@6891
  1146
aschiffler@6936
  1147
static const SDLTest_TestCaseReference videoTest11 =
aschiffler@6936
  1148
		{ (SDLTest_TestCaseFp)video_getWindowBrightnessNegative, "video_getWindowBrightnessNegative",  "Get window brightness with invalid input", TEST_ENABLED };
aschiffler@6936
  1149
aschiffler@6936
  1150
static const SDLTest_TestCaseReference videoTest12 =
aschiffler@6936
  1151
		{ (SDLTest_TestCaseFp)video_getWindowDisplayMode, "video_getWindowDisplayMode",  "Get window display mode", TEST_ENABLED };
aschiffler@6936
  1152
aschiffler@6936
  1153
static const SDLTest_TestCaseReference videoTest13 =
aschiffler@6936
  1154
		{ (SDLTest_TestCaseFp)video_getWindowDisplayModeNegative, "video_getWindowDisplayModeNegative",  "Get window display mode with invalid input", TEST_ENABLED };
aschiffler@6936
  1155
aschiffler@6936
  1156
static const SDLTest_TestCaseReference videoTest14 =
aschiffler@6936
  1157
		{ (SDLTest_TestCaseFp)video_getWindowGammaRamp, "video_getWindowGammaRamp",  "Get window gamma ramp", TEST_ENABLED };
aschiffler@6936
  1158
aschiffler@6936
  1159
static const SDLTest_TestCaseReference videoTest15 =
aschiffler@6936
  1160
		{ (SDLTest_TestCaseFp)video_getWindowGammaRampNegative, "video_getWindowGammaRampNegative",  "Get window gamma ramp against invalid input", TEST_ENABLED };
aschiffler@6936
  1161
aschiffler@6956
  1162
static const SDLTest_TestCaseReference videoTest16 =
aschiffler@6956
  1163
		{ (SDLTest_TestCaseFp)video_getSetWindowGrab, "video_getSetWindowGrab",  "Checks SDL_GetWindowGrab and SDL_SetWindowGrab", TEST_ENABLED };
aschiffler@6956
  1164
aschiffler@6956
  1165
static const SDLTest_TestCaseReference videoTest17 =
aschiffler@6956
  1166
		{ (SDLTest_TestCaseFp)video_getWindowId, "video_getWindowId",  "Checks SDL_GetWindowID and SDL_GetWindowFromID", TEST_ENABLED };
aschiffler@6956
  1167
aschiffler@6956
  1168
static const SDLTest_TestCaseReference videoTest18 =
aschiffler@6956
  1169
		{ (SDLTest_TestCaseFp)video_getWindowPixelFormat, "video_getWindowPixelFormat",  "Checks SDL_GetWindowPixelFormat", TEST_ENABLED };
aschiffler@6956
  1170
aschiffler@6956
  1171
static const SDLTest_TestCaseReference videoTest19 =
aschiffler@6956
  1172
		{ (SDLTest_TestCaseFp)video_getSetWindowPosition, "video_getSetWindowPosition",  "Checks SDL_GetWindowPosition and SDL_SetWindowPosition", TEST_ENABLED };
aschiffler@6956
  1173
aschiffler@6800
  1174
/* Sequence of Video test cases */
aschiffler@6800
  1175
static const SDLTest_TestCaseReference *videoTests[] =  {
aschiffler@6921
  1176
	&videoTest1, &videoTest2, &videoTest3, &videoTest4, &videoTest5, &videoTest6, 
aschiffler@6936
  1177
	&videoTest7, &videoTest8, &videoTest9, &videoTest10, &videoTest11, &videoTest12, 
aschiffler@6956
  1178
	&videoTest13, &videoTest14, &videoTest15, &videoTest16, &videoTest17, 
aschiffler@6956
  1179
	&videoTest18, &videoTest19, NULL
aschiffler@6800
  1180
};
aschiffler@6800
  1181
aschiffler@6800
  1182
/* Video test suite (global) */
aschiffler@6800
  1183
SDLTest_TestSuiteReference videoTestSuite = {
aschiffler@6800
  1184
	"Video",
aschiffler@6800
  1185
	NULL,
aschiffler@6800
  1186
	videoTests,
aschiffler@6800
  1187
	NULL
aschiffler@6800
  1188
};