test/testautomation_video.c
author Andreas Schiffler <aschiffler@ferzkopp.net>
Sat, 16 Feb 2013 23:09:10 -0800
changeset 6891 177f29ae5279
parent 6800 26c6795ec1a4
child 6921 9a29af9de577
permissions -rw-r--r--
Add tests 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@6800
     7
#include "SDL.h"
aschiffler@6800
     8
#include "SDL_test.h"
aschiffler@6800
     9
aschiffler@6800
    10
/* Test case functions */
aschiffler@6800
    11
aschiffler@6800
    12
/**
aschiffler@6800
    13
 * @brief Enable and disable screensaver while checking state
aschiffler@6800
    14
 */
aschiffler@6800
    15
int
aschiffler@6800
    16
video_enableDisableScreensaver(void *arg)
aschiffler@6800
    17
{
aschiffler@6800
    18
	SDL_bool initialResult;
aschiffler@6800
    19
	SDL_bool result;
aschiffler@6800
    20
aschiffler@6800
    21
	/* Get current state and proceed according to current state */
aschiffler@6800
    22
	initialResult = SDL_IsScreenSaverEnabled();
aschiffler@6800
    23
	SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");	
aschiffler@6800
    24
	if (initialResult == SDL_TRUE) {
aschiffler@6800
    25
	
aschiffler@6800
    26
	  /* Currently enabled: disable first, then enable again */
aschiffler@6800
    27
	  
aschiffler@6800
    28
	  /* Disable screensaver and check */	
aschiffler@6800
    29
	  SDL_DisableScreenSaver();
aschiffler@6800
    30
	  SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");	
aschiffler@6800
    31
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    32
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    33
	  SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);
aschiffler@6800
    34
	
aschiffler@6800
    35
	  /* Enable screensaver and check */	
aschiffler@6800
    36
	  SDL_EnableScreenSaver();
aschiffler@6800
    37
	  SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
aschiffler@6800
    38
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    39
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    40
	  SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
aschiffler@6800
    41
aschiffler@6800
    42
	} else {
aschiffler@6800
    43
aschiffler@6800
    44
	  /* Currently disabled: enable first, then disable again */
aschiffler@6800
    45
	  
aschiffler@6800
    46
	  /* Enable screensaver and check */	
aschiffler@6800
    47
	  SDL_EnableScreenSaver();
aschiffler@6800
    48
	  SDLTest_AssertPass("Call to SDL_EnableScreenSaver()");
aschiffler@6800
    49
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    50
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    51
	  SDLTest_AssertCheck(result == SDL_TRUE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_TRUE, result);
aschiffler@6800
    52
aschiffler@6800
    53
	  /* Disable screensaver and check */	
aschiffler@6800
    54
	  SDL_DisableScreenSaver();
aschiffler@6800
    55
	  SDLTest_AssertPass("Call to SDL_DisableScreenSaver()");	
aschiffler@6800
    56
	  result = SDL_IsScreenSaverEnabled();
aschiffler@6800
    57
	  SDLTest_AssertPass("Call to SDL_IsScreenSaverEnabled()");
aschiffler@6800
    58
	  SDLTest_AssertCheck(result == SDL_FALSE, "Verify result from SDL_IsScreenSaverEnabled, expected: %i, got: %i", SDL_FALSE, result);	
aschiffler@6800
    59
	}	
aschiffler@6800
    60
	
aschiffler@6800
    61
	return TEST_COMPLETED;
aschiffler@6800
    62
}
aschiffler@6800
    63
aschiffler@6891
    64
/**
aschiffler@6891
    65
 * @brief Tests the functionality of the SDL_CreateWindow function using different positions
aschiffler@6891
    66
 */
aschiffler@6891
    67
int
aschiffler@6891
    68
video_createWindowVariousPositions(void *arg)
aschiffler@6891
    69
{
aschiffler@6891
    70
  SDL_Window* window;
aschiffler@6891
    71
  const char* title = "video_createWindowVariousPositions Test Window";
aschiffler@6891
    72
  int x, y, w, h;
aschiffler@6891
    73
  int xVariation, yVariation;
aschiffler@6891
    74
  
aschiffler@6891
    75
  for (xVariation = 0; xVariation < 6; xVariation++) {
aschiffler@6891
    76
   for (yVariation = 0; yVariation < 6; yVariation++) {
aschiffler@6891
    77
    switch(xVariation) {
aschiffler@6891
    78
     case 0:
aschiffler@6891
    79
      /* Zero X Position */  
aschiffler@6891
    80
      x = 0;
aschiffler@6891
    81
      break;
aschiffler@6891
    82
     case 1:
aschiffler@6891
    83
      /* Random X position inside screen */  
aschiffler@6891
    84
      x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
    85
      break;
aschiffler@6891
    86
     case 2:
aschiffler@6891
    87
      /* Random X position outside screen (positive) */  
aschiffler@6891
    88
      x = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6891
    89
      break;
aschiffler@6891
    90
     case 3:
aschiffler@6891
    91
      /* Random X position outside screen (negative) */  
aschiffler@6891
    92
      x = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6891
    93
      break;
aschiffler@6891
    94
     case 4:
aschiffler@6891
    95
      /* Centered X position */  
aschiffler@6891
    96
      x = SDL_WINDOWPOS_CENTERED;
aschiffler@6891
    97
      break;
aschiffler@6891
    98
     case 5:
aschiffler@6891
    99
      /* Undefined X position */  
aschiffler@6891
   100
      x = SDL_WINDOWPOS_UNDEFINED;
aschiffler@6891
   101
      break;
aschiffler@6891
   102
    }
aschiffler@6891
   103
aschiffler@6891
   104
    switch(yVariation) {
aschiffler@6891
   105
     case 0:
aschiffler@6891
   106
      /* Zero X Position */  
aschiffler@6891
   107
      y = 0;
aschiffler@6891
   108
      break;
aschiffler@6891
   109
     case 1:
aschiffler@6891
   110
      /* Random X position inside screen */  
aschiffler@6891
   111
      y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   112
      break;
aschiffler@6891
   113
     case 2:
aschiffler@6891
   114
      /* Random X position outside screen (positive) */  
aschiffler@6891
   115
      y = SDLTest_RandomIntegerInRange(10000, 11000);
aschiffler@6891
   116
      break;
aschiffler@6891
   117
     case 3:
aschiffler@6891
   118
      /* Random Y position outside screen (negative) */  
aschiffler@6891
   119
      y = SDLTest_RandomIntegerInRange(-1000, -100);
aschiffler@6891
   120
      break;
aschiffler@6891
   121
     case 4:
aschiffler@6891
   122
      /* Centered Y position */  
aschiffler@6891
   123
      y = SDL_WINDOWPOS_CENTERED;
aschiffler@6891
   124
      break;
aschiffler@6891
   125
     case 5:
aschiffler@6891
   126
      /* Undefined Y position */  
aschiffler@6891
   127
      y = SDL_WINDOWPOS_UNDEFINED;
aschiffler@6891
   128
      break;
aschiffler@6891
   129
    }
aschiffler@6891
   130
     
aschiffler@6891
   131
    w = SDLTest_RandomIntegerInRange(32, 96);
aschiffler@6891
   132
    h = SDLTest_RandomIntegerInRange(32, 96);
aschiffler@6891
   133
    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
aschiffler@6891
   134
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
aschiffler@6891
   135
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6891
   136
    if (window != NULL) {
aschiffler@6891
   137
      SDL_DestroyWindow(window);
aschiffler@6891
   138
      SDLTest_AssertPass("Call to SDL_DestroyWindow");
aschiffler@6891
   139
    }
aschiffler@6891
   140
   }
aschiffler@6891
   141
  } 
aschiffler@6891
   142
aschiffler@6891
   143
  return TEST_COMPLETED;
aschiffler@6891
   144
}
aschiffler@6891
   145
aschiffler@6891
   146
/**
aschiffler@6891
   147
 * @brief Tests the functionality of the SDL_CreateWindow function using different sizes
aschiffler@6891
   148
 */
aschiffler@6891
   149
int
aschiffler@6891
   150
video_createWindowVariousSizes(void *arg)
aschiffler@6891
   151
{
aschiffler@6891
   152
  SDL_Window* window;
aschiffler@6891
   153
  const char* title = "video_createWindowVariousSizes Test Window";
aschiffler@6891
   154
  int x, y, w, h;
aschiffler@6891
   155
  int wVariation, hVariation;
aschiffler@6891
   156
  
aschiffler@6891
   157
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   158
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   159
  for (wVariation = 0; wVariation < 3; wVariation++) {
aschiffler@6891
   160
   for (hVariation = 0; hVariation < 3; hVariation++) {
aschiffler@6891
   161
    switch(wVariation) {
aschiffler@6891
   162
     case 0:
aschiffler@6891
   163
      /* Width of 1 */  
aschiffler@6891
   164
      w = 1;
aschiffler@6891
   165
      break;
aschiffler@6891
   166
     case 1:
aschiffler@6891
   167
      /* Random "normal" width */  
aschiffler@6891
   168
      w = SDLTest_RandomIntegerInRange(320, 1920);
aschiffler@6891
   169
      break;
aschiffler@6891
   170
     case 2:
aschiffler@6891
   171
      /* Random "large" width */  
aschiffler@6891
   172
      w = SDLTest_RandomIntegerInRange(2048, 4095);
aschiffler@6891
   173
      break;
aschiffler@6891
   174
    }
aschiffler@6891
   175
aschiffler@6891
   176
    switch(hVariation) {
aschiffler@6891
   177
     case 0:
aschiffler@6891
   178
      /* Height of 1 */  
aschiffler@6891
   179
      h = 1;
aschiffler@6891
   180
      break;
aschiffler@6891
   181
     case 1:
aschiffler@6891
   182
      /* Random "normal" height */  
aschiffler@6891
   183
      h = SDLTest_RandomIntegerInRange(320, 1080);
aschiffler@6891
   184
      break;
aschiffler@6891
   185
     case 2:
aschiffler@6891
   186
      /* Random "large" height */  
aschiffler@6891
   187
      h = SDLTest_RandomIntegerInRange(2048, 4095);
aschiffler@6891
   188
      break;
aschiffler@6891
   189
     }
aschiffler@6891
   190
     
aschiffler@6891
   191
    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
aschiffler@6891
   192
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
aschiffler@6891
   193
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6891
   194
    if (window != NULL) {
aschiffler@6891
   195
      SDL_DestroyWindow(window);
aschiffler@6891
   196
      SDLTest_AssertPass("Call to SDL_DestroyWindow");
aschiffler@6891
   197
    }
aschiffler@6891
   198
   }
aschiffler@6891
   199
  }  
aschiffler@6891
   200
aschiffler@6891
   201
  return TEST_COMPLETED;
aschiffler@6891
   202
}
aschiffler@6891
   203
aschiffler@6891
   204
/**
aschiffler@6891
   205
 * @brief Tests the functionality of the SDL_CreateWindow function using different flags
aschiffler@6891
   206
 */
aschiffler@6891
   207
int
aschiffler@6891
   208
video_createWindowVariousFlags(void *arg)
aschiffler@6891
   209
{
aschiffler@6891
   210
  SDL_Window* window;
aschiffler@6891
   211
  const char* title = "video_createWindowVariousFlags Test Window";
aschiffler@6891
   212
  int x, y, w, h;
aschiffler@6891
   213
  int fVariation;
aschiffler@6891
   214
  SDL_WindowFlags flags;
aschiffler@6891
   215
  
aschiffler@6891
   216
  /* Standard window */
aschiffler@6891
   217
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   218
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   219
  w = SDLTest_RandomIntegerInRange(320, 1024);
aschiffler@6891
   220
  h = SDLTest_RandomIntegerInRange(320, 768);
aschiffler@6891
   221
aschiffler@6891
   222
  for (fVariation = 0; fVariation < 13; fVariation++) {
aschiffler@6891
   223
    switch(fVariation) {
aschiffler@6891
   224
     case 0:
aschiffler@6891
   225
      flags = SDL_WINDOW_FULLSCREEN;
aschiffler@6891
   226
      /* Skip - blanks screen; comment out next line to run test */
aschiffler@6891
   227
      continue;   
aschiffler@6891
   228
      break;
aschiffler@6891
   229
     case 1:
aschiffler@6891
   230
      flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
aschiffler@6891
   231
      /* Skip - blanks screen; comment out next line to run test */
aschiffler@6891
   232
      continue;  
aschiffler@6891
   233
      break;
aschiffler@6891
   234
     case 2:
aschiffler@6891
   235
      flags = SDL_WINDOW_OPENGL;
aschiffler@6891
   236
      break;  
aschiffler@6891
   237
     case 3:
aschiffler@6891
   238
      flags = SDL_WINDOW_SHOWN;
aschiffler@6891
   239
      break;   
aschiffler@6891
   240
     case 4:    
aschiffler@6891
   241
      flags = SDL_WINDOW_HIDDEN;
aschiffler@6891
   242
      break;     
aschiffler@6891
   243
     case 5:
aschiffler@6891
   244
      flags = SDL_WINDOW_BORDERLESS;
aschiffler@6891
   245
      break;       
aschiffler@6891
   246
     case 6:
aschiffler@6891
   247
      flags = SDL_WINDOW_RESIZABLE;
aschiffler@6891
   248
      break;         
aschiffler@6891
   249
     case 7:
aschiffler@6891
   250
      flags = SDL_WINDOW_MINIMIZED;
aschiffler@6891
   251
      break;           
aschiffler@6891
   252
     case 8:
aschiffler@6891
   253
      flags = SDL_WINDOW_MAXIMIZED;
aschiffler@6891
   254
      break;
aschiffler@6891
   255
     case 9: 
aschiffler@6891
   256
      flags = SDL_WINDOW_INPUT_GRABBED;
aschiffler@6891
   257
      break;
aschiffler@6891
   258
     case 10:              
aschiffler@6891
   259
      flags = SDL_WINDOW_INPUT_FOCUS;
aschiffler@6891
   260
      break;                 
aschiffler@6891
   261
     case 11:                      
aschiffler@6891
   262
      flags = SDL_WINDOW_MOUSE_FOCUS;
aschiffler@6891
   263
      break;
aschiffler@6891
   264
     case 12: 
aschiffler@6891
   265
      flags = SDL_WINDOW_FOREIGN;
aschiffler@6891
   266
      break;
aschiffler@6891
   267
    }
aschiffler@6891
   268
       
aschiffler@6891
   269
    window = SDL_CreateWindow(title, x, y, w, h, flags);
aschiffler@6891
   270
    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
aschiffler@6891
   271
    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6891
   272
    if (window != NULL) {
aschiffler@6891
   273
      SDL_DestroyWindow(window);
aschiffler@6891
   274
      SDLTest_AssertPass("Call to SDL_DestroyWindow");
aschiffler@6891
   275
    }   
aschiffler@6891
   276
  }
aschiffler@6891
   277
aschiffler@6891
   278
  return TEST_COMPLETED;
aschiffler@6891
   279
}
aschiffler@6891
   280
aschiffler@6891
   281
/**
aschiffler@6891
   282
 * @brief Tests the functionality of the SDL_GetWindowFlags function
aschiffler@6891
   283
 */
aschiffler@6891
   284
int
aschiffler@6891
   285
video_getWindowFlags(void *arg)
aschiffler@6891
   286
{
aschiffler@6891
   287
  SDL_Window* window;
aschiffler@6891
   288
  const char* title = "video_getWindowFlags Test Window";
aschiffler@6891
   289
  int x, y, w, h;
aschiffler@6891
   290
  SDL_WindowFlags flags;
aschiffler@6891
   291
  Uint32 actualFlags;
aschiffler@6891
   292
  
aschiffler@6891
   293
  /* Standard window */
aschiffler@6891
   294
  x = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   295
  y = SDLTest_RandomIntegerInRange(1, 100);
aschiffler@6891
   296
  w = SDLTest_RandomIntegerInRange(320, 1024);
aschiffler@6891
   297
  h = SDLTest_RandomIntegerInRange(320, 768);
aschiffler@6891
   298
  
aschiffler@6891
   299
  /* Reliable flag */
aschiffler@6891
   300
  flags = SDL_WINDOW_SHOWN;
aschiffler@6891
   301
  
aschiffler@6891
   302
  window = SDL_CreateWindow(title, x, y, w, h, flags);
aschiffler@6891
   303
  SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
aschiffler@6891
   304
  SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
aschiffler@6891
   305
  if (window != NULL) {
aschiffler@6891
   306
      actualFlags = SDL_GetWindowFlags(window);
aschiffler@6891
   307
      SDLTest_AssertPass("Call to SDL_GetWindowFlags");
aschiffler@6891
   308
      SDLTest_AssertCheck((flags & actualFlags) == flags, "Verify returned value has flags %d set, got: %d", flags, actualFlags);
aschiffler@6891
   309
      SDL_DestroyWindow(window);
aschiffler@6891
   310
      SDLTest_AssertPass("Call to SDL_DestroyWindow");  
aschiffler@6891
   311
  }
aschiffler@6891
   312
aschiffler@6891
   313
  return TEST_COMPLETED;
aschiffler@6891
   314
}
aschiffler@6891
   315
aschiffler@6800
   316
/* ================= Test References ================== */
aschiffler@6800
   317
aschiffler@6800
   318
/* Video test cases */
aschiffler@6800
   319
static const SDLTest_TestCaseReference videoTest1 =
aschiffler@6800
   320
		{ (SDLTest_TestCaseFp)video_enableDisableScreensaver, "video_enableDisableScreensaver",  "Enable and disable screenaver while checking state", TEST_ENABLED };
aschiffler@6800
   321
aschiffler@6891
   322
static const SDLTest_TestCaseReference videoTest2 =
aschiffler@6891
   323
		{ (SDLTest_TestCaseFp)video_createWindowVariousPositions, "video_createWindowVariousPositions",  "Create windows at various locations", TEST_ENABLED };
aschiffler@6891
   324
aschiffler@6891
   325
static const SDLTest_TestCaseReference videoTest3 =
aschiffler@6891
   326
		{ (SDLTest_TestCaseFp)video_createWindowVariousSizes, "video_createWindowVariousSizes",  "Create windows with various sizes", TEST_ENABLED };
aschiffler@6891
   327
aschiffler@6891
   328
static const SDLTest_TestCaseReference videoTest4 =
aschiffler@6891
   329
		{ (SDLTest_TestCaseFp)video_createWindowVariousFlags, "video_createWindowVariousFlags",  "Create windows using various flags", TEST_ENABLED };
aschiffler@6891
   330
aschiffler@6891
   331
static const SDLTest_TestCaseReference videoTest5 =
aschiffler@6891
   332
		{ (SDLTest_TestCaseFp)video_getWindowFlags, "video_getWindowFlags",  "Set and get window flags", TEST_ENABLED };
aschiffler@6891
   333
aschiffler@6800
   334
/* Sequence of Video test cases */
aschiffler@6800
   335
static const SDLTest_TestCaseReference *videoTests[] =  {
aschiffler@6891
   336
	&videoTest1, &videoTest2, &videoTest3, &videoTest4, &videoTest5, NULL
aschiffler@6800
   337
};
aschiffler@6800
   338
aschiffler@6800
   339
/* Video test suite (global) */
aschiffler@6800
   340
SDLTest_TestSuiteReference videoTestSuite = {
aschiffler@6800
   341
	"Video",
aschiffler@6800
   342
	NULL,
aschiffler@6800
   343
	videoTests,
aschiffler@6800
   344
	NULL
aschiffler@6800
   345
};