test/testautomation_pixels.c
author Andreas Schiffler <aschiffler@ferzkopp.net>
Sun, 05 May 2013 11:17:40 -0700
changeset 7151 99a4964db4c3
parent 7142 f4a670e51cde
child 7153 51cf5475ac56
permissions -rw-r--r--
Add input validation to SDL_CalculateGammaRamp; add test coverage to Pixels suite; update test cases in Pixels suite
aschiffler@7134
     1
/**
aschiffler@7134
     2
 * Pixels test suite
aschiffler@7134
     3
 */
aschiffler@7134
     4
aschiffler@7134
     5
#include <stdio.h>
aschiffler@7134
     6
aschiffler@7134
     7
#include "SDL.h"
aschiffler@7134
     8
#include "SDL_test.h"
aschiffler@7134
     9
aschiffler@7134
    10
/* Test case functions */
aschiffler@7134
    11
aschiffler@7134
    12
/* Definition of all RGB formats used to test pixel conversions */
aschiffler@7134
    13
const int _numRGBPixelFormats = 30;
aschiffler@7134
    14
Uint32 _RGBPixelFormats[] = 
aschiffler@7134
    15
  {
aschiffler@7134
    16
    SDL_PIXELFORMAT_INDEX1LSB,
aschiffler@7134
    17
    SDL_PIXELFORMAT_INDEX1MSB,
aschiffler@7134
    18
    SDL_PIXELFORMAT_INDEX4LSB,
aschiffler@7134
    19
    SDL_PIXELFORMAT_INDEX4MSB,
aschiffler@7134
    20
    SDL_PIXELFORMAT_INDEX8,
aschiffler@7134
    21
    SDL_PIXELFORMAT_RGB332,
aschiffler@7134
    22
    SDL_PIXELFORMAT_RGB444,
aschiffler@7134
    23
    SDL_PIXELFORMAT_RGB555,
aschiffler@7134
    24
    SDL_PIXELFORMAT_BGR555,
aschiffler@7134
    25
    SDL_PIXELFORMAT_ARGB4444,
aschiffler@7134
    26
    SDL_PIXELFORMAT_RGBA4444,
aschiffler@7134
    27
    SDL_PIXELFORMAT_ABGR4444,
aschiffler@7134
    28
    SDL_PIXELFORMAT_BGRA4444,
aschiffler@7134
    29
    SDL_PIXELFORMAT_ARGB1555,
aschiffler@7134
    30
    SDL_PIXELFORMAT_RGBA5551,
aschiffler@7134
    31
    SDL_PIXELFORMAT_ABGR1555,
aschiffler@7134
    32
    SDL_PIXELFORMAT_BGRA5551,
aschiffler@7134
    33
    SDL_PIXELFORMAT_RGB565,
aschiffler@7134
    34
    SDL_PIXELFORMAT_BGR565,
aschiffler@7134
    35
    SDL_PIXELFORMAT_RGB24,
aschiffler@7134
    36
    SDL_PIXELFORMAT_BGR24,
aschiffler@7134
    37
    SDL_PIXELFORMAT_RGB888,
aschiffler@7134
    38
    SDL_PIXELFORMAT_RGBX8888,
aschiffler@7134
    39
    SDL_PIXELFORMAT_BGR888,
aschiffler@7134
    40
    SDL_PIXELFORMAT_BGRX8888,
aschiffler@7134
    41
    SDL_PIXELFORMAT_ARGB8888,
aschiffler@7134
    42
    SDL_PIXELFORMAT_RGBA8888,
aschiffler@7134
    43
    SDL_PIXELFORMAT_ABGR8888,
aschiffler@7134
    44
    SDL_PIXELFORMAT_BGRA8888,
aschiffler@7134
    45
    SDL_PIXELFORMAT_ARGB2101010
aschiffler@7134
    46
  };
aschiffler@7134
    47
char* _RGBPixelFormatsVerbose[] = 
aschiffler@7134
    48
  {
aschiffler@7134
    49
    "SDL_PIXELFORMAT_INDEX1LSB",
aschiffler@7134
    50
    "SDL_PIXELFORMAT_INDEX1MSB",
aschiffler@7134
    51
    "SDL_PIXELFORMAT_INDEX4LSB",
aschiffler@7134
    52
    "SDL_PIXELFORMAT_INDEX4MSB",
aschiffler@7134
    53
    "SDL_PIXELFORMAT_INDEX8",
aschiffler@7134
    54
    "SDL_PIXELFORMAT_RGB332",
aschiffler@7134
    55
    "SDL_PIXELFORMAT_RGB444",
aschiffler@7134
    56
    "SDL_PIXELFORMAT_RGB555",
aschiffler@7134
    57
    "SDL_PIXELFORMAT_BGR555",
aschiffler@7134
    58
    "SDL_PIXELFORMAT_ARGB4444",
aschiffler@7134
    59
    "SDL_PIXELFORMAT_RGBA4444",
aschiffler@7134
    60
    "SDL_PIXELFORMAT_ABGR4444",
aschiffler@7134
    61
    "SDL_PIXELFORMAT_BGRA4444",
aschiffler@7134
    62
    "SDL_PIXELFORMAT_ARGB1555",
aschiffler@7134
    63
    "SDL_PIXELFORMAT_RGBA5551",
aschiffler@7134
    64
    "SDL_PIXELFORMAT_ABGR1555",
aschiffler@7134
    65
    "SDL_PIXELFORMAT_BGRA5551",
aschiffler@7134
    66
    "SDL_PIXELFORMAT_RGB565",
aschiffler@7134
    67
    "SDL_PIXELFORMAT_BGR565",
aschiffler@7134
    68
    "SDL_PIXELFORMAT_RGB24",
aschiffler@7134
    69
    "SDL_PIXELFORMAT_BGR24",
aschiffler@7134
    70
    "SDL_PIXELFORMAT_RGB888",
aschiffler@7134
    71
    "SDL_PIXELFORMAT_RGBX8888",
aschiffler@7134
    72
    "SDL_PIXELFORMAT_BGR888",
aschiffler@7134
    73
    "SDL_PIXELFORMAT_BGRX8888",
aschiffler@7134
    74
    "SDL_PIXELFORMAT_ARGB8888",
aschiffler@7134
    75
    "SDL_PIXELFORMAT_RGBA8888",
aschiffler@7134
    76
    "SDL_PIXELFORMAT_ABGR8888",
aschiffler@7134
    77
    "SDL_PIXELFORMAT_BGRA8888",
aschiffler@7134
    78
    "SDL_PIXELFORMAT_ARGB2101010"
aschiffler@7134
    79
  };
aschiffler@7134
    80
aschiffler@7134
    81
/* Definition of all Non-RGB formats used to test pixel conversions */
aschiffler@7134
    82
const int _numNonRGBPixelFormats = 5;
aschiffler@7134
    83
Uint32 _nonRGBPixelFormats[] = 
aschiffler@7134
    84
  {
aschiffler@7134
    85
    SDL_PIXELFORMAT_YV12,
aschiffler@7134
    86
    SDL_PIXELFORMAT_IYUV,
aschiffler@7134
    87
    SDL_PIXELFORMAT_YUY2,
aschiffler@7134
    88
    SDL_PIXELFORMAT_UYVY,
aschiffler@7134
    89
    SDL_PIXELFORMAT_YVYU 
aschiffler@7134
    90
  };
aschiffler@7134
    91
char* _nonRGBPixelFormatsVerbose[] = 
aschiffler@7134
    92
  {
aschiffler@7134
    93
    "SDL_PIXELFORMAT_YV12",
aschiffler@7134
    94
    "SDL_PIXELFORMAT_IYUV",
aschiffler@7134
    95
    "SDL_PIXELFORMAT_YUY2",
aschiffler@7134
    96
    "SDL_PIXELFORMAT_UYVY",
aschiffler@7134
    97
    "SDL_PIXELFORMAT_YVYU" 
aschiffler@7134
    98
  };
aschiffler@7134
    99
aschiffler@7134
   100
/* Test case functions */
aschiffler@7134
   101
aschiffler@7134
   102
/**
aschiffler@7134
   103
 * @brief Call to SDL_AllocFormat and SDL_FreeFormat
aschiffler@7142
   104
 *
aschiffler@7142
   105
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_AllocFormat
aschiffler@7142
   106
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_FreeFormat 
aschiffler@7134
   107
 */
aschiffler@7134
   108
int
aschiffler@7134
   109
pixels_allocFreeFormat(void *arg)
aschiffler@7134
   110
{
aschiffler@7151
   111
  const char *expectedError = "Parameter 'format' is invalid";
aschiffler@7151
   112
  const char *error;   
aschiffler@7151
   113
  char message[256];
aschiffler@7134
   114
  int i;
aschiffler@7134
   115
  Uint32 format;
aschiffler@7134
   116
  Uint32 masks;
aschiffler@7134
   117
  SDL_PixelFormat* result;
aschiffler@7134
   118
aschiffler@7134
   119
  /* RGB formats */
aschiffler@7134
   120
  for (i = 0; i < _numRGBPixelFormats; i++) {
aschiffler@7134
   121
    format = _RGBPixelFormats[i];
aschiffler@7134
   122
    SDLTest_Log("RGB Format: %s (%u)", _RGBPixelFormatsVerbose[i], format);
aschiffler@7134
   123
  
aschiffler@7134
   124
    /* Allocate format */
aschiffler@7134
   125
    result = SDL_AllocFormat(format);
aschiffler@7134
   126
    SDLTest_AssertPass("Call to SDL_AllocFormat()");
aschiffler@7134
   127
    SDLTest_AssertCheck(result != NULL, "Verify result is not NULL");  
aschiffler@7134
   128
    if (result != NULL) {
aschiffler@7134
   129
      SDLTest_AssertCheck(result->format == format, "Verify value of result.format; expected: %u, got %u", format, result->format);  
aschiffler@7134
   130
      SDLTest_AssertCheck(result->BitsPerPixel > 0, "Verify value of result.BitsPerPixel; expected: >0, got %u", result->BitsPerPixel);  
aschiffler@7134
   131
      SDLTest_AssertCheck(result->BytesPerPixel > 0, "Verify value of result.BytesPerPixel; expected: >0, got %u", result->BytesPerPixel);  
aschiffler@7134
   132
      if (result->palette != NULL) {      
aschiffler@7134
   133
         masks = result->Rmask | result->Gmask | result->Bmask | result->Amask;
aschiffler@7134
   134
         SDLTest_AssertCheck(masks > 0, "Verify value of result.[RGBA]mask combined; expected: >0, got %u", masks);
aschiffler@7134
   135
      }
aschiffler@7134
   136
      
aschiffler@7134
   137
      /* Deallocate again */
aschiffler@7134
   138
      SDL_FreeFormat(result);
aschiffler@7134
   139
      SDLTest_AssertPass("Call to SDL_FreeFormat()");          
aschiffler@7134
   140
    }
aschiffler@7134
   141
  }
aschiffler@7134
   142
aschiffler@7134
   143
  /* Non-RGB formats */
aschiffler@7134
   144
  for (i = 0; i < _numNonRGBPixelFormats; i++) {
aschiffler@7134
   145
    format = _nonRGBPixelFormats[i];
aschiffler@7134
   146
    SDLTest_Log("non-RGB Format: %s (%u)", _nonRGBPixelFormatsVerbose[i], format);
aschiffler@7134
   147
  
aschiffler@7134
   148
    /* Try to allocate format */
aschiffler@7134
   149
    result = SDL_AllocFormat(format);
aschiffler@7134
   150
    SDLTest_AssertPass("Call to SDL_AllocFormat()");
aschiffler@7134
   151
    SDLTest_AssertCheck(result == NULL, "Verify result is NULL");  
aschiffler@7134
   152
  }
aschiffler@7134
   153
  
aschiffler@7142
   154
  /* Negative cases */
aschiffler@7151
   155
  
aschiffler@7151
   156
  /* Invalid Format */  
aschiffler@7151
   157
  SDL_ClearError();
aschiffler@7151
   158
  SDLTest_AssertPass("Call to SDL_ClearError()");
aschiffler@7142
   159
  format = 0xffffffff;
aschiffler@7142
   160
  result = SDL_AllocFormat(format);
aschiffler@7142
   161
  SDLTest_AssertPass("Call to SDL_AllocFormat(0xffffffff)");
aschiffler@7142
   162
  SDLTest_AssertCheck(result == NULL, "Verify result is NULL");  
aschiffler@7151
   163
  error = SDL_GetError();
aschiffler@7151
   164
  SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   165
  SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   166
  if (error != NULL) {
aschiffler@7151
   167
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError) == 0, 
aschiffler@7151
   168
          "Validate error message, expected: '%s', got: '%s'", expectedError, error);
aschiffler@7151
   169
  }
aschiffler@7142
   170
aschiffler@7151
   171
  /* Invalid free pointer */
aschiffler@7151
   172
  SDL_ClearError();
aschiffler@7151
   173
  SDLTest_AssertPass("Call to SDL_ClearError()");
aschiffler@7142
   174
  SDL_FreeFormat(NULL);
aschiffler@7142
   175
  SDLTest_AssertPass("Call to SDL_FreeFormat(NULL)");
aschiffler@7151
   176
  error = SDL_GetError();
aschiffler@7151
   177
  SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   178
  SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   179
  if (error != NULL) {
aschiffler@7151
   180
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError) == 0, 
aschiffler@7151
   181
          "Validate error message, expected: '%s', got: '%s'", expectedError, error);
aschiffler@7151
   182
  }
aschiffler@7142
   183
  
aschiffler@7142
   184
  return TEST_COMPLETED;
aschiffler@7142
   185
}
aschiffler@7142
   186
aschiffler@7142
   187
/**
aschiffler@7142
   188
 * @brief Call to SDL_AllocPalette and SDL_FreePalette
aschiffler@7142
   189
 *
aschiffler@7142
   190
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_AllocPalette
aschiffler@7142
   191
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_FreePalette
aschiffler@7142
   192
 */
aschiffler@7142
   193
int
aschiffler@7142
   194
pixels_allocFreePalette(void *arg)
aschiffler@7142
   195
{
aschiffler@7151
   196
  const char *expectedError1 = "Parameter 'ncolors' is invalid";
aschiffler@7151
   197
  const char *expectedError2 = "Parameter 'palette' is invalid";
aschiffler@7151
   198
  const char *error;   
aschiffler@7151
   199
  char message[256];
aschiffler@7142
   200
  int variation;
aschiffler@7142
   201
  int i;
aschiffler@7142
   202
  int ncolors;
aschiffler@7142
   203
  SDL_Palette* result;
aschiffler@7142
   204
aschiffler@7142
   205
  /* Allocate palette */
aschiffler@7142
   206
  for (variation = 1; variation <= 3; variation++) {  
aschiffler@7142
   207
    switch (variation) {
aschiffler@7142
   208
      /* Just one color */
aschiffler@7142
   209
      case 1:
aschiffler@7142
   210
        ncolors = 1;
aschiffler@7142
   211
        break;
aschiffler@7142
   212
      /* Two colors */
aschiffler@7142
   213
      case 2:
aschiffler@7142
   214
        ncolors = 2;
aschiffler@7142
   215
        break;
aschiffler@7142
   216
      /* More than two colors */
aschiffler@7142
   217
      case 3:
aschiffler@7142
   218
        ncolors = SDLTest_RandomIntegerInRange(8, 16);
aschiffler@7142
   219
        break;
aschiffler@7142
   220
    }
aschiffler@7142
   221
aschiffler@7142
   222
    result = SDL_AllocPalette(ncolors);
aschiffler@7142
   223
    SDLTest_AssertPass("Call to SDL_AllocPalette(%d)", ncolors);
aschiffler@7142
   224
    SDLTest_AssertCheck(result != NULL, "Verify result is not NULL");  
aschiffler@7142
   225
    if (result != NULL) {
aschiffler@7142
   226
      SDLTest_AssertCheck(result->ncolors == ncolors, "Verify value of result.ncolors; expected: %u, got %u", ncolors, result->ncolors);  
aschiffler@7142
   227
      if (result->ncolors > 0) {
aschiffler@7142
   228
        SDLTest_AssertCheck(result->colors != NULL, "Verify value of result.colors is not NULL");
aschiffler@7142
   229
        if (result->colors != NULL) {
aschiffler@7142
   230
          for(i = 0; i < result->ncolors; i++) {
aschiffler@7142
   231
            SDLTest_AssertCheck(result->colors[i].r == 255, "Verify value of result.colors[%d].r; expected: 255, got %u", i, result->colors[i].r);  
aschiffler@7142
   232
            SDLTest_AssertCheck(result->colors[i].g == 255, "Verify value of result.colors[%d].g; expected: 255, got %u", i, result->colors[i].g);  
aschiffler@7142
   233
            SDLTest_AssertCheck(result->colors[i].b == 255, "Verify value of result.colors[%d].b; expected: 255, got %u", i, result->colors[i].b);  
aschiffler@7142
   234
           }
aschiffler@7142
   235
         } 
aschiffler@7142
   236
      }
aschiffler@7142
   237
      
aschiffler@7142
   238
      /* Deallocate again */
aschiffler@7142
   239
      SDL_FreePalette(result);
aschiffler@7142
   240
      SDLTest_AssertPass("Call to SDL_FreePalette()");          
aschiffler@7142
   241
    }
aschiffler@7142
   242
  }
aschiffler@7142
   243
aschiffler@7142
   244
  /* Negative cases */
aschiffler@7151
   245
    
aschiffler@7151
   246
  /* Invalid number of colors */
aschiffler@7142
   247
  for (ncolors = 0; ncolors > -3; ncolors--) {
aschiffler@7151
   248
    SDL_ClearError();
aschiffler@7151
   249
    SDLTest_AssertPass("Call to SDL_ClearError()");
aschiffler@7142
   250
    result = SDL_AllocPalette(ncolors);
aschiffler@7142
   251
    SDLTest_AssertPass("Call to SDL_AllocPalette(%d)", ncolors);
aschiffler@7142
   252
    SDLTest_AssertCheck(result == NULL, "Verify result is NULL");
aschiffler@7151
   253
    error = SDL_GetError();
aschiffler@7151
   254
    SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   255
    SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   256
    if (error != NULL) {
aschiffler@7151
   257
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError1) == 0, 
aschiffler@7151
   258
          "Validate error message, expected: '%s', got: '%s'", expectedError1, error);
aschiffler@7151
   259
    }
aschiffler@7142
   260
  }
aschiffler@7142
   261
aschiffler@7151
   262
  /* Invalid free pointer */
aschiffler@7151
   263
  SDL_ClearError();
aschiffler@7151
   264
  SDLTest_AssertPass("Call to SDL_ClearError()");
aschiffler@7142
   265
  SDL_FreePalette(NULL);
aschiffler@7142
   266
  SDLTest_AssertPass("Call to SDL_FreePalette(NULL)");
aschiffler@7151
   267
  error = SDL_GetError();
aschiffler@7151
   268
  SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   269
  SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   270
  if (error != NULL) {
aschiffler@7151
   271
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError2) == 0, 
aschiffler@7151
   272
          "Validate error message, expected: '%s', got: '%s'", expectedError2, error);
aschiffler@7151
   273
  }
aschiffler@7151
   274
    
aschiffler@7151
   275
  return TEST_COMPLETED;
aschiffler@7151
   276
}
aschiffler@7151
   277
aschiffler@7151
   278
/**
aschiffler@7151
   279
 * @brief Call to SDL_CalculateGammaRamp
aschiffler@7151
   280
 *
aschiffler@7151
   281
 * @sa http://wiki.libsdl.org/moin.fcg/SDL_CalculateGammaRamp
aschiffler@7151
   282
 */
aschiffler@7151
   283
int
aschiffler@7151
   284
pixels_calcGammaRamp(void *arg)
aschiffler@7151
   285
{
aschiffler@7151
   286
  const char *expectedError1 = "Parameter 'gamma' is invalid";
aschiffler@7151
   287
  const char *expectedError2 = "Parameter 'ramp' is invalid";
aschiffler@7151
   288
  const char *error;   
aschiffler@7151
   289
  char message[256];
aschiffler@7151
   290
  float gamma;
aschiffler@7151
   291
  Uint16 *ramp;
aschiffler@7151
   292
  int variation;
aschiffler@7151
   293
  int i;
aschiffler@7151
   294
  int changed;
aschiffler@7151
   295
  Uint16 magic = 0xbeef;
aschiffler@7151
   296
aschiffler@7151
   297
  /* Allocate temp ramp array and fill with some value*/
aschiffler@7151
   298
  ramp = (Uint16 *)SDL_malloc(256 * sizeof(Uint16));
aschiffler@7151
   299
  SDLTest_AssertCheck(ramp != NULL, "Validate temp ramp array could be allocated");
aschiffler@7151
   300
  if (ramp == NULL) return TEST_ABORTED;
aschiffler@7151
   301
  
aschiffler@7151
   302
  /* Make call with different gamma values */
aschiffler@7151
   303
  for (variation = 0; variation < 4; variation++) {
aschiffler@7151
   304
    switch (variation) {
aschiffler@7151
   305
      /* gamma = 0 all black */
aschiffler@7151
   306
      case 0:      
aschiffler@7151
   307
        gamma = 0.0f;
aschiffler@7151
   308
        break;
aschiffler@7151
   309
      /* gamma = 1 identity */
aschiffler@7151
   310
      case 1:
aschiffler@7151
   311
        gamma = 1.0f;
aschiffler@7151
   312
        break;
aschiffler@7151
   313
      /* gamma = ]0,1[ normal range */  
aschiffler@7151
   314
      case 2:
aschiffler@7151
   315
        gamma = 0.01f + 0.98f * SDLTest_RandomUnitFloat();
aschiffler@7151
   316
        break;
aschiffler@7151
   317
      /* gamma = >1.0 non-standard range */  
aschiffler@7151
   318
      case 3:
aschiffler@7151
   319
        gamma = 0.01f + 0.98f * SDLTest_RandomUnitFloat();
aschiffler@7151
   320
        break;
aschiffler@7151
   321
    }
aschiffler@7151
   322
aschiffler@7151
   323
    /* Make call and check that values were updated */  
aschiffler@7151
   324
    for (i = 0; i < 256; i++) ramp[i] = magic;
aschiffler@7151
   325
    SDL_CalculateGammaRamp(gamma, ramp);
aschiffler@7151
   326
    SDLTest_AssertPass("Call to SDL_CalculateGammaRamp(%f)", gamma);
aschiffler@7151
   327
    changed = 0;
aschiffler@7151
   328
    for (i = 0; i < 256; i++) if (ramp[i] != magic) changed++;
aschiffler@7151
   329
    SDLTest_AssertCheck(changed > 250, "Validate that ramp was calculated; expected: >250 values changed, got: %d values changed", changed);
aschiffler@7151
   330
aschiffler@7151
   331
    /* Additional value checks for some cases */
aschiffler@7151
   332
    i = SDLTest_RandomIntegerInRange(64,192);
aschiffler@7151
   333
    switch (variation) {
aschiffler@7151
   334
      case 0:
aschiffler@7151
   335
        SDLTest_AssertCheck(ramp[i] == 0, "Validate value at position %d; expected: 0, got: %d", i, ramp[i]);
aschiffler@7151
   336
        break;
aschiffler@7151
   337
      case 1:
aschiffler@7151
   338
        SDLTest_AssertCheck(ramp[i] == (i << 8) | i, "Validate value at position %d; expected: %d, got: %d", i, (i << 8) | i, ramp[i]);
aschiffler@7151
   339
        break;
aschiffler@7151
   340
      case 2:
aschiffler@7151
   341
      case 3:
aschiffler@7151
   342
        SDLTest_AssertCheck(ramp[i] > 0, "Validate value at position %d; expected: >0, got: %d", i, ramp[i]);
aschiffler@7151
   343
        break;
aschiffler@7151
   344
    }
aschiffler@7151
   345
  }
aschiffler@7151
   346
aschiffler@7151
   347
  
aschiffler@7151
   348
  /* Negative cases */
aschiffler@7151
   349
  SDL_ClearError();
aschiffler@7151
   350
  SDLTest_AssertPass("Call to SDL_ClearError()");
aschiffler@7151
   351
  gamma = -1;
aschiffler@7151
   352
  for (i=0; i<256; i++) ramp[i] = magic;
aschiffler@7151
   353
  SDL_CalculateGammaRamp(gamma, ramp);
aschiffler@7151
   354
  SDLTest_AssertPass("Call to SDL_CalculateGammaRamp(%f)", gamma);
aschiffler@7151
   355
  error = SDL_GetError();
aschiffler@7151
   356
  SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   357
  SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   358
  if (error != NULL) {
aschiffler@7151
   359
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError1) == 0, 
aschiffler@7151
   360
          "Validate error message, expected: '%s', got: '%s'", expectedError1, error);
aschiffler@7151
   361
  }
aschiffler@7151
   362
  changed = 0;
aschiffler@7151
   363
  for (i = 0; i < 256; i++) if (ramp[i] != magic) changed++;
aschiffler@7151
   364
  SDLTest_AssertCheck(changed ==0, "Validate that ramp unchanged; expected: 0 values changed got: %d values changed", changed);
aschiffler@7151
   365
aschiffler@7151
   366
  SDL_CalculateGammaRamp(0.5f, NULL);
aschiffler@7151
   367
  SDLTest_AssertPass("Call to SDL_CalculateGammaRamp(0.5,NULL)");
aschiffler@7151
   368
  error = SDL_GetError();
aschiffler@7151
   369
  SDLTest_AssertPass("Call to SDL_GetError()");
aschiffler@7151
   370
  SDLTest_AssertCheck(error != NULL, "Validate that error message was not NULL");
aschiffler@7151
   371
  if (error != NULL) {
aschiffler@7151
   372
      SDLTest_AssertCheck(SDL_strcmp(error, expectedError2) == 0, 
aschiffler@7151
   373
          "Validate error message, expected: '%s', got: '%s'", expectedError2, error);
aschiffler@7151
   374
  }
aschiffler@7151
   375
  
aschiffler@7151
   376
  /* Cleanup */
aschiffler@7151
   377
  SDL_free(ramp);
aschiffler@7151
   378
    
aschiffler@7142
   379
    
aschiffler@7134
   380
  return TEST_COMPLETED;
aschiffler@7134
   381
}
aschiffler@7134
   382
aschiffler@7134
   383
/* ================= Test References ================== */
aschiffler@7134
   384
aschiffler@7142
   385
/* Pixels test cases */
aschiffler@7134
   386
static const SDLTest_TestCaseReference pixelsTest1 =
aschiffler@7134
   387
		{ (SDLTest_TestCaseFp)pixels_allocFreeFormat, "pixels_allocFreeFormat", "Call to SDL_AllocFormat and SDL_FreeFormat", TEST_ENABLED };
aschiffler@7134
   388
aschiffler@7142
   389
static const SDLTest_TestCaseReference pixelsTest2 =
aschiffler@7142
   390
		{ (SDLTest_TestCaseFp)pixels_allocFreePalette, "pixels_allocFreePalette", "Call to SDL_AllocPalette and SDL_FreePalette", TEST_ENABLED };
aschiffler@7142
   391
aschiffler@7151
   392
static const SDLTest_TestCaseReference pixelsTest3 =
aschiffler@7151
   393
		{ (SDLTest_TestCaseFp)pixels_calcGammaRamp, "pixels_calcGammaRamp", "Call to SDL_CalculateGammaRamp", TEST_ENABLED };
aschiffler@7151
   394
aschiffler@7134
   395
/* Sequence of Pixels test cases */
aschiffler@7134
   396
static const SDLTest_TestCaseReference *pixelsTests[] =  {
aschiffler@7151
   397
	&pixelsTest1, &pixelsTest2, &pixelsTest3, NULL
aschiffler@7134
   398
};
aschiffler@7134
   399
aschiffler@7134
   400
/* Pixels test suite (global) */
aschiffler@7134
   401
SDLTest_TestSuiteReference pixelsTestSuite = {
aschiffler@7134
   402
	"Pixels",
aschiffler@7134
   403
	NULL,
aschiffler@7134
   404
	pixelsTests,
aschiffler@7134
   405
	NULL
aschiffler@7134
   406
};