test/testautomation_render.c
author Ryan C. Gordon <icculus@icculus.org>
Sat, 07 Jan 2017 22:24:45 -0500
changeset 10782 1de6d4633ee6
parent 9254 6c469ea796e4
permissions -rw-r--r--
Fixed a bunch of compiler warnings in the test code.
aschiffler@6763
     1
/**
aschiffler@6763
     2
 * Original code: automated SDL platform test written by Edgar Simo "bobbens"
aschiffler@6763
     3
 * Extended and extensively updated by aschiffler at ferzkopp dot net
aschiffler@6763
     4
 */
aschiffler@6763
     5
aschiffler@6763
     6
#include <stdio.h>
aschiffler@6763
     7
aschiffler@6763
     8
#include "SDL.h"
aschiffler@6763
     9
#include "SDL_test.h"
aschiffler@6763
    10
aschiffler@6763
    11
/* ================= Test Case Implementation ================== */
aschiffler@6763
    12
aschiffler@6763
    13
#define TESTRENDER_SCREEN_W     80
aschiffler@6763
    14
#define TESTRENDER_SCREEN_H     60
aschiffler@6763
    15
aschiffler@6763
    16
#define RENDER_COMPARE_FORMAT  SDL_PIXELFORMAT_ARGB8888
aschiffler@6763
    17
#define RENDER_COMPARE_AMASK   0xff000000 /**< Alpha bit mask. */
aschiffler@6763
    18
#define RENDER_COMPARE_RMASK   0x00ff0000 /**< Red bit mask. */
aschiffler@6763
    19
#define RENDER_COMPARE_GMASK   0x0000ff00 /**< Green bit mask. */
aschiffler@6763
    20
#define RENDER_COMPARE_BMASK   0x000000ff /**< Blue bit mask. */
aschiffler@6763
    21
slouken@7191
    22
#define ALLOWABLE_ERROR_OPAQUE  0
slouken@7191
    23
#define ALLOWABLE_ERROR_BLENDED 64
aschiffler@6763
    24
aschiffler@6773
    25
/* Test window and renderer */
aschiffler@6763
    26
SDL_Window *window = NULL;
aschiffler@6763
    27
SDL_Renderer *renderer = NULL;
aschiffler@6763
    28
aschiffler@6763
    29
/* Prototypes for helper functions */
aschiffler@6763
    30
aschiffler@6763
    31
static int _clearScreen (void);
aschiffler@6773
    32
static void _compare(SDL_Surface *reference, int allowable_error);
aschiffler@6763
    33
static int _hasTexAlpha(void);
aschiffler@6763
    34
static int _hasTexColor(void);
aschiffler@6763
    35
static SDL_Texture *_loadTestFace(void);
aschiffler@6763
    36
static int _hasBlendModes(void);
aschiffler@6763
    37
static int _hasDrawColor(void);
aschiffler@6763
    38
static int _isSupported(int code);
aschiffler@6763
    39
aschiffler@6763
    40
/**
aschiffler@6763
    41
 * Create software renderer for tests
aschiffler@6763
    42
 */
aschiffler@6763
    43
void InitCreateRenderer(void *arg)
aschiffler@6763
    44
{
aschiffler@6763
    45
  int posX = 100, posY = 100, width = 320, height = 240;
aschiffler@6763
    46
  renderer = NULL;
aschiffler@6763
    47
  window = SDL_CreateWindow("render_testCreateRenderer", posX, posY, width, height, 0);
aschiffler@6763
    48
  SDLTest_AssertPass("SDL_CreateWindow()");
aschiffler@6763
    49
  SDLTest_AssertCheck(window != NULL, "Check SDL_CreateWindow result");
aschiffler@6763
    50
  if (window == NULL) {
aschiffler@6763
    51
      return;
aschiffler@6763
    52
  }
slouken@7191
    53
aschiffler@6763
    54
  renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
aschiffler@6763
    55
  SDLTest_AssertPass("SDL_CreateRenderer()");
aschiffler@6763
    56
  SDLTest_AssertCheck(renderer != 0, "Check SDL_CreateRenderer result");
aschiffler@6773
    57
  if (renderer == NULL) {
aschiffler@6763
    58
      SDL_DestroyWindow(window);
aschiffler@6763
    59
      return;
aschiffler@6763
    60
  }
aschiffler@6763
    61
}
aschiffler@6763
    62
aschiffler@6763
    63
/*
slouken@7191
    64
 * Destroy renderer for tests
aschiffler@6763
    65
 */
aschiffler@6763
    66
void CleanupDestroyRenderer(void *arg)
aschiffler@6763
    67
{
slouken@7191
    68
  if (renderer != NULL) {
aschiffler@6763
    69
     SDL_DestroyRenderer(renderer);
aschiffler@6773
    70
     renderer = NULL;
aschiffler@6763
    71
     SDLTest_AssertPass("SDL_DestroyRenderer()");
aschiffler@6763
    72
  }
slouken@7191
    73
slouken@7191
    74
  if (window != NULL) {
aschiffler@6763
    75
     SDL_DestroyWindow(window);
aschiffler@6773
    76
     window = NULL;
aschiffler@6763
    77
     SDLTest_AssertPass("SDL_DestroyWindow");
aschiffler@6763
    78
  }
aschiffler@6763
    79
}
aschiffler@6763
    80
aschiffler@6763
    81
aschiffler@6763
    82
/**
aschiffler@6763
    83
 * @brief Tests call to SDL_GetNumRenderDrivers
aschiffler@6763
    84
 *
aschiffler@6763
    85
 * \sa
aschiffler@6763
    86
 * http://wiki.libsdl.org/moin.cgi/SDL_GetNumRenderDrivers
aschiffler@6763
    87
 */
aschiffler@6763
    88
int
aschiffler@6763
    89
render_testGetNumRenderDrivers(void *arg)
aschiffler@6763
    90
{
aschiffler@6763
    91
  int n;
aschiffler@6763
    92
  n = SDL_GetNumRenderDrivers();
aschiffler@6763
    93
  SDLTest_AssertCheck(n >= 1, "Number of renderers >= 1, reported as %i", n);
aschiffler@6763
    94
  return TEST_COMPLETED;
aschiffler@6763
    95
}
aschiffler@6763
    96
aschiffler@6763
    97
aschiffler@6763
    98
/**
aschiffler@6763
    99
 * @brief Tests the SDL primitives for rendering.
aschiffler@6763
   100
 *
aschiffler@6763
   101
 * \sa
aschiffler@6763
   102
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
aschiffler@6763
   103
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderFillRect
aschiffler@6763
   104
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderDrawLine
aschiffler@6763
   105
 *
aschiffler@6763
   106
 */
aschiffler@6763
   107
int render_testPrimitives (void *arg)
aschiffler@6763
   108
{
aschiffler@6763
   109
   int ret;
aschiffler@6763
   110
   int x, y;
aschiffler@6763
   111
   SDL_Rect rect;
aschiffler@6773
   112
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   113
   int checkFailCount1;
aschiffler@6763
   114
   int checkFailCount2;
aschiffler@6763
   115
aschiffler@9254
   116
   /* Clear surface. */
aschiffler@9254
   117
   _clearScreen();
aschiffler@9254
   118
philipp@7176
   119
   /* Need drawcolor or just skip test. */
aschiffler@6763
   120
   SDLTest_AssertCheck(_hasDrawColor(), "_hasDrawColor");
aschiffler@6763
   121
aschiffler@6763
   122
   /* Draw a rectangle. */
aschiffler@6763
   123
   rect.x = 40;
aschiffler@6763
   124
   rect.y = 0;
aschiffler@6763
   125
   rect.w = 40;
aschiffler@6763
   126
   rect.h = 80;
aschiffler@6763
   127
aschiffler@6763
   128
   ret = SDL_SetRenderDrawColor(renderer, 13, 73, 200, SDL_ALPHA_OPAQUE );
aschiffler@6763
   129
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   130
aschiffler@6763
   131
   ret = SDL_RenderFillRect(renderer, &rect );
aschiffler@6763
   132
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   133
aschiffler@6763
   134
   /* Draw a rectangle. */
aschiffler@6763
   135
   rect.x = 10;
aschiffler@6763
   136
   rect.y = 10;
aschiffler@6763
   137
   rect.w = 60;
aschiffler@6763
   138
   rect.h = 40;
aschiffler@6763
   139
   ret = SDL_SetRenderDrawColor(renderer, 200, 0, 100, SDL_ALPHA_OPAQUE );
aschiffler@6763
   140
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   141
aschiffler@6763
   142
   ret = SDL_RenderFillRect(renderer, &rect );
aschiffler@6763
   143
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   144
aschiffler@6763
   145
   /* Draw some points like so:
aschiffler@6763
   146
    * X.X.X.X..
aschiffler@6763
   147
    * .X.X.X.X.
aschiffler@6763
   148
    * X.X.X.X.. */
aschiffler@6763
   149
   checkFailCount1 = 0;
aschiffler@6763
   150
   checkFailCount2 = 0;
aschiffler@6763
   151
   for (y=0; y<3; y++) {
aschiffler@6763
   152
      for (x = y % 2; x<TESTRENDER_SCREEN_W; x+=2) {
aschiffler@6763
   153
         ret = SDL_SetRenderDrawColor(renderer, x*y, x*y/2, x*y/3, SDL_ALPHA_OPAQUE );
aschiffler@6763
   154
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   155
aschiffler@6763
   156
         ret = SDL_RenderDrawPoint(renderer, x, y );
aschiffler@6763
   157
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   158
      }
aschiffler@6763
   159
   }
aschiffler@6763
   160
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetRenderDrawColor, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   161
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_RenderDrawPoint, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   162
aschiffler@6763
   163
   /* Draw some lines. */
aschiffler@6763
   164
   ret = SDL_SetRenderDrawColor(renderer, 0, 255, 0, SDL_ALPHA_OPAQUE );
aschiffler@6763
   165
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor");
aschiffler@6763
   166
aschiffler@6763
   167
   ret = SDL_RenderDrawLine(renderer, 0, 30, TESTRENDER_SCREEN_W, 30 );
aschiffler@6763
   168
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@6763
   169
aschiffler@6763
   170
   ret = SDL_SetRenderDrawColor(renderer, 55, 55, 5, SDL_ALPHA_OPAQUE );
aschiffler@6763
   171
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   172
aschiffler@6763
   173
   ret = SDL_RenderDrawLine(renderer, 40, 30, 40, 60 );
aschiffler@6763
   174
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@6763
   175
aschiffler@6763
   176
   ret = SDL_SetRenderDrawColor(renderer, 5, 105, 105, SDL_ALPHA_OPAQUE );
aschiffler@6763
   177
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   178
aschiffler@6763
   179
   ret = SDL_RenderDrawLine(renderer, 0, 0, 29, 29 );
aschiffler@6763
   180
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@6763
   181
aschiffler@6763
   182
   ret = SDL_RenderDrawLine(renderer, 29, 30, 0, 59 );
aschiffler@6763
   183
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@6763
   184
aschiffler@6763
   185
   ret = SDL_RenderDrawLine(renderer, 79, 0, 50, 29 );
aschiffler@6763
   186
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@6763
   187
aschiffler@6763
   188
   ret = SDL_RenderDrawLine(renderer, 79, 59, 50, 30 );
aschiffler@6763
   189
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderDrawLine, expected: 0, got: %i", ret);
aschiffler@9254
   190
   
aschiffler@9254
   191
   /* Make current */
aschiffler@9254
   192
   SDL_RenderPresent(renderer);
aschiffler@9254
   193
   
aschiffler@6763
   194
   /* See if it's the same. */
aschiffler@6773
   195
   referenceSurface = SDLTest_ImagePrimitives();
aschiffler@6773
   196
   _compare(referenceSurface, ALLOWABLE_ERROR_OPAQUE );
aschiffler@6773
   197
aschiffler@6773
   198
   /* Clean up. */
slouken@7720
   199
   SDL_FreeSurface(referenceSurface);
slouken@7720
   200
   referenceSurface = NULL;
aschiffler@6763
   201
aschiffler@6763
   202
   return TEST_COMPLETED;
aschiffler@6763
   203
}
aschiffler@6763
   204
aschiffler@6763
   205
/**
aschiffler@6763
   206
 * @brief Tests the SDL primitives with alpha for rendering.
aschiffler@6763
   207
 *
aschiffler@6763
   208
 * \sa
aschiffler@6763
   209
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
aschiffler@6763
   210
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
aschiffler@6763
   211
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderFillRect
aschiffler@6763
   212
 */
aschiffler@6763
   213
int render_testPrimitivesBlend (void *arg)
aschiffler@6763
   214
{
aschiffler@6763
   215
   int ret;
aschiffler@6763
   216
   int i, j;
aschiffler@6763
   217
   SDL_Rect rect;
aschiffler@6773
   218
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   219
   int checkFailCount1;
aschiffler@6763
   220
   int checkFailCount2;
aschiffler@6763
   221
   int checkFailCount3;
aschiffler@6763
   222
aschiffler@9254
   223
   /* Clear surface. */
aschiffler@9254
   224
   _clearScreen();
aschiffler@9254
   225
philipp@7176
   226
   /* Need drawcolor and blendmode or just skip test. */
aschiffler@6763
   227
   SDLTest_AssertCheck(_hasDrawColor(), "_hasDrawColor");
aschiffler@6763
   228
   SDLTest_AssertCheck(_hasBlendModes(), "_hasBlendModes");
aschiffler@6763
   229
aschiffler@6763
   230
   /* Create some rectangles for each blend mode. */
aschiffler@6763
   231
   ret = SDL_SetRenderDrawColor(renderer, 255, 255, 255, 0 );
aschiffler@6763
   232
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   233
aschiffler@6763
   234
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE );
aschiffler@6763
   235
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawBlendMode, expected: 0, got: %i", ret);
aschiffler@6763
   236
aschiffler@6763
   237
   ret = SDL_RenderFillRect(renderer, NULL );
aschiffler@6763
   238
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   239
aschiffler@6763
   240
   rect.x = 10;
aschiffler@6763
   241
   rect.y = 25;
aschiffler@6763
   242
   rect.w = 40;
aschiffler@6763
   243
   rect.h = 25;
aschiffler@6763
   244
   ret = SDL_SetRenderDrawColor(renderer, 240, 10, 10, 75 );
aschiffler@6763
   245
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   246
aschiffler@6763
   247
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD );
aschiffler@6763
   248
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawBlendMode, expected: 0, got: %i", ret);
aschiffler@6763
   249
aschiffler@6763
   250
   ret = SDL_RenderFillRect(renderer, &rect );
aschiffler@6763
   251
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   252
aschiffler@6763
   253
   rect.x = 30;
aschiffler@6763
   254
   rect.y = 40;
aschiffler@6763
   255
   rect.w = 45;
aschiffler@6763
   256
   rect.h = 15;
aschiffler@6763
   257
   ret = SDL_SetRenderDrawColor(renderer, 10, 240, 10, 100 );
aschiffler@6763
   258
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   259
aschiffler@6763
   260
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND );
aschiffler@6763
   261
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawBlendMode, expected: 0, got: %i", ret);
aschiffler@6763
   262
aschiffler@6763
   263
   ret = SDL_RenderFillRect(renderer, &rect );
aschiffler@6763
   264
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   265
aschiffler@6763
   266
   rect.x = 25;
aschiffler@6763
   267
   rect.y = 25;
aschiffler@6763
   268
   rect.w = 25;
aschiffler@6763
   269
   rect.h = 25;
aschiffler@6763
   270
   ret = SDL_SetRenderDrawColor(renderer, 10, 10, 240, 125 );
aschiffler@6763
   271
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
   272
aschiffler@6763
   273
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE );
aschiffler@6763
   274
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawBlendMode, expected: 0, got: %i", ret);
aschiffler@6763
   275
aschiffler@6763
   276
   ret = SDL_RenderFillRect(renderer, &rect );
aschiffler@6763
   277
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderFillRect, expected: 0, got: %i", ret);
aschiffler@6763
   278
aschiffler@6763
   279
aschiffler@6763
   280
   /* Draw blended lines, lines for everyone. */
aschiffler@6763
   281
   checkFailCount1 = 0;
aschiffler@6763
   282
   checkFailCount2 = 0;
aschiffler@6763
   283
   checkFailCount3 = 0;
aschiffler@6763
   284
   for (i=0; i<TESTRENDER_SCREEN_W; i+=2)  {
aschiffler@6763
   285
      ret = SDL_SetRenderDrawColor(renderer, 60+2*i, 240-2*i, 50, 3*i );
aschiffler@6763
   286
      if (ret != 0) checkFailCount1++;
aschiffler@6763
   287
aschiffler@6763
   288
      ret = SDL_SetRenderDrawBlendMode(renderer,(((i/2)%3)==0) ? SDL_BLENDMODE_BLEND :
aschiffler@6763
   289
            (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_NONE );
aschiffler@6763
   290
      if (ret != 0) checkFailCount2++;
aschiffler@6763
   291
aschiffler@6763
   292
      ret = SDL_RenderDrawLine(renderer, 0, 0, i, 59 );
aschiffler@6763
   293
      if (ret != 0) checkFailCount3++;
aschiffler@6763
   294
   }
aschiffler@6763
   295
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetRenderDrawColor, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   296
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_SetRenderDrawBlendMode, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   297
   SDLTest_AssertCheck(checkFailCount3 == 0, "Validate results from calls to SDL_RenderDrawLine, expected: 0, got: %i", checkFailCount3);
slouken@7191
   298
aschiffler@6763
   299
   checkFailCount1 = 0;
aschiffler@6763
   300
   checkFailCount2 = 0;
aschiffler@6763
   301
   checkFailCount3 = 0;
aschiffler@6763
   302
   for (i=0; i<TESTRENDER_SCREEN_H; i+=2)  {
aschiffler@6763
   303
      ret = SDL_SetRenderDrawColor(renderer, 60+2*i, 240-2*i, 50, 3*i );
aschiffler@6763
   304
      if (ret != 0) checkFailCount1++;
aschiffler@6763
   305
aschiffler@6763
   306
      ret = SDL_SetRenderDrawBlendMode(renderer,(((i/2)%3)==0) ? SDL_BLENDMODE_BLEND :
aschiffler@6763
   307
            (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_NONE );
aschiffler@6763
   308
      if (ret != 0) checkFailCount2++;
aschiffler@6763
   309
aschiffler@6763
   310
      ret = SDL_RenderDrawLine(renderer, 0, 0, 79, i );
aschiffler@6763
   311
      if (ret != 0) checkFailCount3++;
aschiffler@6763
   312
   }
aschiffler@6763
   313
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetRenderDrawColor, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   314
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_SetRenderDrawBlendMode, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   315
   SDLTest_AssertCheck(checkFailCount3 == 0, "Validate results from calls to SDL_RenderDrawLine, expected: 0, got: %i", checkFailCount3);
aschiffler@6763
   316
aschiffler@6763
   317
   /* Draw points. */
aschiffler@6763
   318
   checkFailCount1 = 0;
aschiffler@6763
   319
   checkFailCount2 = 0;
aschiffler@6763
   320
   checkFailCount3 = 0;
aschiffler@6763
   321
   for (j=0; j<TESTRENDER_SCREEN_H; j+=3) {
aschiffler@6763
   322
      for (i=0; i<TESTRENDER_SCREEN_W; i+=3) {
aschiffler@6763
   323
         ret = SDL_SetRenderDrawColor(renderer, j*4, i*3, j*4, i*3 );
aschiffler@6763
   324
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   325
aschiffler@6763
   326
         ret = SDL_SetRenderDrawBlendMode(renderer, ((((i+j)/3)%3)==0) ? SDL_BLENDMODE_BLEND :
aschiffler@6763
   327
               ((((i+j)/3)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_NONE );
aschiffler@6763
   328
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   329
aschiffler@6763
   330
         ret = SDL_RenderDrawPoint(renderer, i, j );
aschiffler@6763
   331
         if (ret != 0) checkFailCount3++;
aschiffler@6763
   332
      }
slouken@7191
   333
   }
aschiffler@6763
   334
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetRenderDrawColor, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   335
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_SetRenderDrawBlendMode, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   336
   SDLTest_AssertCheck(checkFailCount3 == 0, "Validate results from calls to SDL_RenderDrawPoint, expected: 0, got: %i", checkFailCount3);
aschiffler@6763
   337
aschiffler@9254
   338
   /* Make current */
aschiffler@9254
   339
   SDL_RenderPresent(renderer);
aschiffler@9254
   340
aschiffler@6763
   341
   /* See if it's the same. */
aschiffler@6773
   342
   referenceSurface = SDLTest_ImagePrimitivesBlend();
aschiffler@6773
   343
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED );
aschiffler@6763
   344
aschiffler@6773
   345
   /* Clean up. */
slouken@7720
   346
   SDL_FreeSurface(referenceSurface);
slouken@7720
   347
   referenceSurface = NULL;
aschiffler@6773
   348
aschiffler@6773
   349
   return TEST_COMPLETED;
aschiffler@6763
   350
}
aschiffler@6763
   351
aschiffler@6763
   352
aschiffler@6763
   353
aschiffler@6763
   354
/**
aschiffler@6763
   355
 * @brief Tests some blitting routines.
aschiffler@6763
   356
 *
aschiffler@6763
   357
 * \sa
aschiffler@6763
   358
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
aschiffler@6763
   359
 * http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   360
 */
aschiffler@6763
   361
int
aschiffler@6763
   362
render_testBlit(void *arg)
aschiffler@6763
   363
{
aschiffler@6763
   364
   int ret;
aschiffler@6763
   365
   SDL_Rect rect;
aschiffler@6763
   366
   SDL_Texture *tface;
aschiffler@6773
   367
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   368
   Uint32 tformat;
aschiffler@6763
   369
   int taccess, tw, th;
aschiffler@6763
   370
   int i, j, ni, nj;
aschiffler@6763
   371
   int checkFailCount1;
aschiffler@6763
   372
aschiffler@9254
   373
   /* Clear surface. */
aschiffler@9254
   374
   _clearScreen();
aschiffler@6763
   375
philipp@7176
   376
   /* Need drawcolor or just skip test. */
aschiffler@6763
   377
   SDLTest_AssertCheck(_hasDrawColor(), "_hasDrawColor)");
aschiffler@6763
   378
aschiffler@6763
   379
   /* Create face surface. */
aschiffler@6763
   380
   tface = _loadTestFace();
aschiffler@6763
   381
   SDLTest_AssertCheck(tface != NULL,  "Verify _loadTestFace() result");
aschiffler@6763
   382
   if (tface == NULL) {
aschiffler@6763
   383
       return TEST_ABORTED;
aschiffler@6763
   384
   }
aschiffler@6763
   385
aschiffler@6763
   386
   /* Constant values. */
aschiffler@6763
   387
   ret = SDL_QueryTexture(tface, &tformat, &taccess, &tw, &th);
aschiffler@6763
   388
   SDLTest_AssertCheck(ret == 0, "Verify result from SDL_QueryTexture, expected 0, got %i", ret);
aschiffler@6763
   389
   rect.w = tw;
aschiffler@6763
   390
   rect.h = th;
aschiffler@6763
   391
   ni     = TESTRENDER_SCREEN_W - tw;
aschiffler@6763
   392
   nj     = TESTRENDER_SCREEN_H - th;
aschiffler@6763
   393
aschiffler@6763
   394
   /* Loop blit. */
aschiffler@6763
   395
   checkFailCount1 = 0;
aschiffler@6763
   396
   for (j=0; j <= nj; j+=4) {
aschiffler@6763
   397
      for (i=0; i <= ni; i+=4) {
aschiffler@6763
   398
         /* Blitting. */
aschiffler@6763
   399
         rect.x = i;
aschiffler@6763
   400
         rect.y = j;
aschiffler@6763
   401
         ret = SDL_RenderCopy(renderer, tface, NULL, &rect );
aschiffler@6763
   402
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   403
      }
aschiffler@6763
   404
   }
aschiffler@6763
   405
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_RenderCopy, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   406
aschiffler@9254
   407
   /* Make current */
aschiffler@9254
   408
   SDL_RenderPresent(renderer);
aschiffler@9254
   409
aschiffler@6773
   410
   /* See if it's the same */
aschiffler@6773
   411
   referenceSurface = SDLTest_ImageBlit();
aschiffler@6773
   412
   _compare(referenceSurface, ALLOWABLE_ERROR_OPAQUE );
aschiffler@6773
   413
aschiffler@6763
   414
   /* Clean up. */
aschiffler@6763
   415
   SDL_DestroyTexture( tface );
slouken@7720
   416
   SDL_FreeSurface(referenceSurface);
slouken@7720
   417
   referenceSurface = NULL;
aschiffler@6763
   418
aschiffler@6763
   419
   return TEST_COMPLETED;
aschiffler@6763
   420
}
aschiffler@6763
   421
aschiffler@6763
   422
aschiffler@6763
   423
/**
philipp@7176
   424
 * @brief Blits doing color tests.
aschiffler@6763
   425
 *
aschiffler@6763
   426
 * \sa
aschiffler@6763
   427
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
aschiffler@6763
   428
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
aschiffler@6763
   429
 * http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   430
 */
aschiffler@6763
   431
int
aschiffler@6763
   432
render_testBlitColor (void *arg)
aschiffler@6763
   433
{
aschiffler@6763
   434
   int ret;
aschiffler@6763
   435
   SDL_Rect rect;
aschiffler@6763
   436
   SDL_Texture *tface;
aschiffler@6773
   437
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   438
   Uint32 tformat;
aschiffler@6763
   439
   int taccess, tw, th;
aschiffler@6763
   440
   int i, j, ni, nj;
aschiffler@6763
   441
   int checkFailCount1;
aschiffler@6763
   442
   int checkFailCount2;
aschiffler@6763
   443
aschiffler@9254
   444
   /* Clear surface. */
aschiffler@9254
   445
   _clearScreen();
aschiffler@9254
   446
aschiffler@6763
   447
   /* Create face surface. */
aschiffler@6763
   448
   tface = _loadTestFace();
aschiffler@6763
   449
   SDLTest_AssertCheck(tface != NULL, "Verify _loadTestFace() result");
aschiffler@6763
   450
   if (tface == NULL) {
aschiffler@6763
   451
       return TEST_ABORTED;
aschiffler@6763
   452
   }
aschiffler@6763
   453
aschiffler@6763
   454
   /* Constant values. */
aschiffler@6763
   455
   ret = SDL_QueryTexture(tface, &tformat, &taccess, &tw, &th);
aschiffler@6763
   456
   SDLTest_AssertCheck(ret == 0, "Verify result from SDL_QueryTexture, expected 0, got %i", ret);
aschiffler@6763
   457
   rect.w = tw;
aschiffler@6763
   458
   rect.h = th;
aschiffler@6763
   459
   ni     = TESTRENDER_SCREEN_W - tw;
aschiffler@6763
   460
   nj     = TESTRENDER_SCREEN_H - th;
aschiffler@6763
   461
philipp@7176
   462
   /* Test blitting with color mod. */
aschiffler@6763
   463
   checkFailCount1 = 0;
aschiffler@6763
   464
   checkFailCount2 = 0;
aschiffler@6763
   465
   for (j=0; j <= nj; j+=4) {
aschiffler@6763
   466
      for (i=0; i <= ni; i+=4) {
philipp@7176
   467
         /* Set color mod. */
aschiffler@6763
   468
         ret = SDL_SetTextureColorMod( tface, (255/nj)*j, (255/ni)*i, (255/nj)*j );
aschiffler@6763
   469
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   470
aschiffler@6763
   471
         /* Blitting. */
aschiffler@6763
   472
         rect.x = i;
aschiffler@6763
   473
         rect.y = j;
aschiffler@6763
   474
         ret = SDL_RenderCopy(renderer, tface, NULL, &rect );
aschiffler@6763
   475
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   476
      }
aschiffler@6763
   477
   }
aschiffler@6763
   478
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetTextureColorMod, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   479
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_RenderCopy, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   480
aschiffler@9254
   481
   /* Make current */
aschiffler@9254
   482
   SDL_RenderPresent(renderer);
aschiffler@9254
   483
aschiffler@6773
   484
   /* See if it's the same. */
aschiffler@6773
   485
   referenceSurface = SDLTest_ImageBlitColor();
aschiffler@6773
   486
   _compare(referenceSurface, ALLOWABLE_ERROR_OPAQUE );
aschiffler@6773
   487
aschiffler@6763
   488
   /* Clean up. */
aschiffler@6763
   489
   SDL_DestroyTexture( tface );
slouken@7720
   490
   SDL_FreeSurface(referenceSurface);
slouken@7720
   491
   referenceSurface = NULL;
aschiffler@6763
   492
aschiffler@6763
   493
   return TEST_COMPLETED;
aschiffler@6763
   494
}
aschiffler@6763
   495
aschiffler@6763
   496
aschiffler@6763
   497
/**
aschiffler@6763
   498
 * @brief Tests blitting with alpha.
aschiffler@6763
   499
 *
aschiffler@6763
   500
 * \sa
aschiffler@6763
   501
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
aschiffler@6763
   502
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
aschiffler@6763
   503
 * http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   504
 */
aschiffler@6763
   505
int
aschiffler@6763
   506
render_testBlitAlpha (void *arg)
aschiffler@6763
   507
{
aschiffler@6763
   508
   int ret;
aschiffler@6763
   509
   SDL_Rect rect;
aschiffler@6763
   510
   SDL_Texture *tface;
aschiffler@6773
   511
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   512
   Uint32 tformat;
aschiffler@6763
   513
   int taccess, tw, th;
aschiffler@6763
   514
   int i, j, ni, nj;
aschiffler@6763
   515
   int checkFailCount1;
aschiffler@6763
   516
   int checkFailCount2;
aschiffler@6763
   517
aschiffler@9254
   518
   /* Clear surface. */
aschiffler@9254
   519
   _clearScreen();
aschiffler@9254
   520
aschiffler@6763
   521
   /* Need alpha or just skip test. */
aschiffler@6763
   522
   SDLTest_AssertCheck(_hasTexAlpha(), "_hasTexAlpha");
aschiffler@6763
   523
aschiffler@6763
   524
   /* Create face surface. */
aschiffler@6763
   525
   tface = _loadTestFace();
aschiffler@6763
   526
   SDLTest_AssertCheck(tface != NULL, "Verify _loadTestFace() result");
aschiffler@6763
   527
   if (tface == NULL) {
aschiffler@6763
   528
       return TEST_ABORTED;
aschiffler@6763
   529
   }
aschiffler@6763
   530
aschiffler@6763
   531
   /* Constant values. */
aschiffler@6763
   532
   ret = SDL_QueryTexture(tface, &tformat, &taccess, &tw, &th);
aschiffler@6763
   533
   SDLTest_AssertCheck(ret == 0, "Verify result from SDL_QueryTexture, expected 0, got %i", ret);
aschiffler@6763
   534
   rect.w = tw;
aschiffler@6763
   535
   rect.h = th;
aschiffler@6763
   536
   ni     = TESTRENDER_SCREEN_W - tw;
aschiffler@6763
   537
   nj     = TESTRENDER_SCREEN_H - th;
aschiffler@6763
   538
aschiffler@6763
   539
   /* Test blitting with alpha mod. */
aschiffler@6763
   540
   checkFailCount1 = 0;
aschiffler@6763
   541
   checkFailCount2 = 0;
aschiffler@6763
   542
   for (j=0; j <= nj; j+=4) {
aschiffler@6763
   543
      for (i=0; i <= ni; i+=4) {
aschiffler@6763
   544
         /* Set alpha mod. */
aschiffler@6763
   545
         ret = SDL_SetTextureAlphaMod( tface, (255/ni)*i );
aschiffler@6763
   546
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   547
aschiffler@6763
   548
         /* Blitting. */
aschiffler@6763
   549
         rect.x = i;
aschiffler@6763
   550
         rect.y = j;
aschiffler@6763
   551
         ret = SDL_RenderCopy(renderer, tface, NULL, &rect );
aschiffler@6763
   552
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   553
      }
slouken@7191
   554
   }
aschiffler@6763
   555
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetTextureAlphaMod, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   556
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_RenderCopy, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   557
aschiffler@9254
   558
   /* Make current */
aschiffler@9254
   559
   SDL_RenderPresent(renderer);
aschiffler@9254
   560
aschiffler@6773
   561
   /* See if it's the same. */
aschiffler@6773
   562
   referenceSurface = SDLTest_ImageBlitAlpha();
aschiffler@6773
   563
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED );
aschiffler@6773
   564
aschiffler@6763
   565
   /* Clean up. */
aschiffler@6763
   566
   SDL_DestroyTexture( tface );
slouken@7720
   567
   SDL_FreeSurface(referenceSurface);
slouken@7720
   568
   referenceSurface = NULL;
aschiffler@6763
   569
aschiffler@6763
   570
   return TEST_COMPLETED;
aschiffler@6763
   571
}
aschiffler@6763
   572
aschiffler@6763
   573
/* Helper functions */
aschiffler@6763
   574
aschiffler@6763
   575
/**
aschiffler@6763
   576
 * @brief Tests a blend mode.
aschiffler@6763
   577
 *
aschiffler@6763
   578
 * \sa
aschiffler@6763
   579
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureBlendMode
aschiffler@6763
   580
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
aschiffler@6763
   581
 */
aschiffler@6763
   582
static void
aschiffler@6763
   583
_testBlitBlendMode( SDL_Texture * tface, int mode )
aschiffler@6763
   584
{
aschiffler@6763
   585
   int ret;
aschiffler@6763
   586
   Uint32 tformat;
aschiffler@6763
   587
   int taccess, tw, th;
aschiffler@6763
   588
   int i, j, ni, nj;
aschiffler@6763
   589
   SDL_Rect rect;
aschiffler@6763
   590
   int checkFailCount1;
aschiffler@6763
   591
   int checkFailCount2;
aschiffler@6763
   592
aschiffler@6763
   593
   /* Clear surface. */
aschiffler@6763
   594
   _clearScreen();
aschiffler@6763
   595
aschiffler@6763
   596
   /* Constant values. */
aschiffler@6763
   597
   ret = SDL_QueryTexture(tface, &tformat, &taccess, &tw, &th);
aschiffler@6763
   598
   SDLTest_AssertCheck(ret == 0, "Verify result from SDL_QueryTexture, expected 0, got %i", ret);
aschiffler@6763
   599
   rect.w = tw;
aschiffler@6763
   600
   rect.h = th;
aschiffler@6763
   601
   ni     = TESTRENDER_SCREEN_W - tw;
aschiffler@6763
   602
   nj     = TESTRENDER_SCREEN_H - th;
aschiffler@6763
   603
aschiffler@6763
   604
   /* Test blend mode. */
aschiffler@6763
   605
   checkFailCount1 = 0;
aschiffler@6763
   606
   checkFailCount2 = 0;
aschiffler@6763
   607
   for (j=0; j <= nj; j+=4) {
aschiffler@6763
   608
      for (i=0; i <= ni; i+=4) {
aschiffler@6763
   609
         /* Set blend mode. */
aschiffler@6763
   610
         ret = SDL_SetTextureBlendMode( tface, (SDL_BlendMode)mode );
aschiffler@6763
   611
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   612
aschiffler@6763
   613
         /* Blitting. */
aschiffler@6763
   614
         rect.x = i;
aschiffler@6763
   615
         rect.y = j;
aschiffler@6763
   616
         ret = SDL_RenderCopy(renderer, tface, NULL, &rect );
aschiffler@6763
   617
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   618
      }
aschiffler@6763
   619
   }
aschiffler@6763
   620
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetTextureBlendMode, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   621
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_RenderCopy, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   622
}
aschiffler@6763
   623
aschiffler@6763
   624
aschiffler@6763
   625
/**
aschiffler@6763
   626
 * @brief Tests some more blitting routines.
aschiffler@6763
   627
 *
aschiffler@6763
   628
 * \sa
aschiffler@6763
   629
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
aschiffler@6763
   630
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
aschiffler@6763
   631
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureBlendMode
aschiffler@6763
   632
 * http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   633
 */
aschiffler@6763
   634
int
aschiffler@6763
   635
render_testBlitBlend (void *arg)
aschiffler@6763
   636
{
aschiffler@6763
   637
   int ret;
aschiffler@6763
   638
   SDL_Rect rect;
aschiffler@6763
   639
   SDL_Texture *tface;
aschiffler@6773
   640
   SDL_Surface *referenceSurface = NULL;
aschiffler@6763
   641
   Uint32 tformat;
aschiffler@6763
   642
   int taccess, tw, th;
aschiffler@6763
   643
   int i, j, ni, nj;
aschiffler@6763
   644
   int mode;
aschiffler@6763
   645
   int checkFailCount1;
aschiffler@6763
   646
   int checkFailCount2;
aschiffler@6763
   647
   int checkFailCount3;
aschiffler@6763
   648
   int checkFailCount4;
aschiffler@6763
   649
aschiffler@6763
   650
   SDLTest_AssertCheck(_hasBlendModes(), "_hasBlendModes");
aschiffler@6763
   651
   SDLTest_AssertCheck(_hasTexColor(), "_hasTexColor");
aschiffler@6763
   652
   SDLTest_AssertCheck(_hasTexAlpha(), "_hasTexAlpha");
aschiffler@6763
   653
aschiffler@6763
   654
   /* Create face surface. */
aschiffler@6763
   655
   tface = _loadTestFace();
aschiffler@6763
   656
   SDLTest_AssertCheck(tface != NULL, "Verify _loadTestFace() result");
aschiffler@6763
   657
   if (tface == NULL) {
aschiffler@6763
   658
       return TEST_ABORTED;
aschiffler@6763
   659
   }
aschiffler@6763
   660
aschiffler@6763
   661
   /* Constant values. */
aschiffler@6763
   662
   ret = SDL_QueryTexture(tface, &tformat, &taccess, &tw, &th);
aschiffler@6763
   663
   SDLTest_AssertCheck(ret == 0, "Verify result from SDL_QueryTexture, expected 0, got %i", ret);
aschiffler@6763
   664
   rect.w = tw;
aschiffler@6763
   665
   rect.h = th;
aschiffler@6763
   666
   ni = TESTRENDER_SCREEN_W - tw;
aschiffler@6763
   667
   nj = TESTRENDER_SCREEN_H - th;
aschiffler@6763
   668
aschiffler@6763
   669
   /* Set alpha mod. */
aschiffler@6763
   670
   ret = SDL_SetTextureAlphaMod( tface, 100 );
aschiffler@6763
   671
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetTextureAlphaMod, expected: 0, got: %i", ret);
aschiffler@6763
   672
aschiffler@6763
   673
   /* Test None. */
aschiffler@6763
   674
   _testBlitBlendMode( tface, SDL_BLENDMODE_NONE );
aschiffler@6773
   675
   referenceSurface = SDLTest_ImageBlitBlendNone();
aschiffler@9254
   676
aschiffler@9254
   677
   /* Make current and compare */
aschiffler@9254
   678
   SDL_RenderPresent(renderer);
slouken@7191
   679
   _compare(referenceSurface, ALLOWABLE_ERROR_OPAQUE );
slouken@7720
   680
   SDL_FreeSurface(referenceSurface);
slouken@7720
   681
   referenceSurface = NULL;
slouken@7191
   682
aschiffler@6763
   683
   /* Test Blend. */
aschiffler@6763
   684
   _testBlitBlendMode( tface, SDL_BLENDMODE_BLEND );
aschiffler@6773
   685
   referenceSurface = SDLTest_ImageBlitBlend();
aschiffler@9254
   686
aschiffler@9254
   687
   /* Make current and compare */
aschiffler@9254
   688
   SDL_RenderPresent(renderer);
aschiffler@6773
   689
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED );
slouken@7720
   690
   SDL_FreeSurface(referenceSurface);
slouken@7720
   691
   referenceSurface = NULL;
aschiffler@6763
   692
aschiffler@6763
   693
   /* Test Add. */
aschiffler@6763
   694
   _testBlitBlendMode( tface, SDL_BLENDMODE_ADD );
aschiffler@6773
   695
   referenceSurface = SDLTest_ImageBlitBlendAdd();
aschiffler@9254
   696
aschiffler@9254
   697
   /* Make current and compare */
aschiffler@9254
   698
   SDL_RenderPresent(renderer);
aschiffler@6773
   699
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED );
slouken@7720
   700
   SDL_FreeSurface(referenceSurface);
slouken@7720
   701
   referenceSurface = NULL;
aschiffler@6763
   702
aschiffler@6763
   703
   /* Test Mod. */
aschiffler@6763
   704
   _testBlitBlendMode( tface, SDL_BLENDMODE_MOD);
aschiffler@6773
   705
   referenceSurface = SDLTest_ImageBlitBlendMod();
aschiffler@9254
   706
aschiffler@9254
   707
   /* Make current and compare */
aschiffler@9254
   708
   SDL_RenderPresent(renderer);
aschiffler@6773
   709
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED );
slouken@7720
   710
   SDL_FreeSurface(referenceSurface);
slouken@7720
   711
   referenceSurface = NULL;
aschiffler@6763
   712
aschiffler@6763
   713
   /* Clear surface. */
aschiffler@6763
   714
   _clearScreen();
aschiffler@6763
   715
aschiffler@6763
   716
   /* Loop blit. */
aschiffler@6763
   717
   checkFailCount1 = 0;
aschiffler@6763
   718
   checkFailCount2 = 0;
aschiffler@6763
   719
   checkFailCount3 = 0;
aschiffler@6763
   720
   checkFailCount4 = 0;
aschiffler@6763
   721
   for (j=0; j <= nj; j+=4) {
aschiffler@6763
   722
      for (i=0; i <= ni; i+=4) {
aschiffler@6763
   723
philipp@7176
   724
         /* Set color mod. */
aschiffler@6763
   725
         ret = SDL_SetTextureColorMod( tface, (255/nj)*j, (255/ni)*i, (255/nj)*j );
aschiffler@6763
   726
         if (ret != 0) checkFailCount1++;
aschiffler@6763
   727
aschiffler@6763
   728
         /* Set alpha mod. */
aschiffler@6763
   729
         ret = SDL_SetTextureAlphaMod( tface, (100/ni)*i );
aschiffler@6763
   730
         if (ret != 0) checkFailCount2++;
aschiffler@6763
   731
aschiffler@6763
   732
         /* Crazy blending mode magic. */
aschiffler@6763
   733
         mode = (i/4*j/4) % 4;
aschiffler@6763
   734
         if (mode==0) mode = SDL_BLENDMODE_NONE;
aschiffler@6763
   735
         else if (mode==1) mode = SDL_BLENDMODE_BLEND;
aschiffler@6763
   736
         else if (mode==2) mode = SDL_BLENDMODE_ADD;
aschiffler@6763
   737
         else if (mode==3) mode = SDL_BLENDMODE_MOD;
aschiffler@6763
   738
         ret = SDL_SetTextureBlendMode( tface, (SDL_BlendMode)mode );
aschiffler@6763
   739
         if (ret != 0) checkFailCount3++;
aschiffler@6763
   740
aschiffler@6763
   741
         /* Blitting. */
aschiffler@6763
   742
         rect.x = i;
aschiffler@6763
   743
         rect.y = j;
aschiffler@6763
   744
         ret = SDL_RenderCopy(renderer, tface, NULL, &rect );
aschiffler@6763
   745
         if (ret != 0) checkFailCount4++;
aschiffler@6763
   746
      }
aschiffler@6763
   747
   }
aschiffler@6763
   748
   SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_SetTextureColorMod, expected: 0, got: %i", checkFailCount1);
aschiffler@6763
   749
   SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_SetTextureAlphaMod, expected: 0, got: %i", checkFailCount2);
aschiffler@6763
   750
   SDLTest_AssertCheck(checkFailCount3 == 0, "Validate results from calls to SDL_SetTextureBlendMode, expected: 0, got: %i", checkFailCount3);
aschiffler@6763
   751
   SDLTest_AssertCheck(checkFailCount4 == 0, "Validate results from calls to SDL_RenderCopy, expected: 0, got: %i", checkFailCount4);
aschiffler@6763
   752
aschiffler@6763
   753
   /* Clean up. */
aschiffler@6763
   754
   SDL_DestroyTexture( tface );
aschiffler@6763
   755
aschiffler@9254
   756
   /* Make current */
aschiffler@9254
   757
   SDL_RenderPresent(renderer);
aschiffler@9254
   758
aschiffler@6773
   759
   /* Check to see if final image matches. */
aschiffler@6773
   760
   referenceSurface = SDLTest_ImageBlitBlendAll();
aschiffler@6773
   761
   _compare(referenceSurface, ALLOWABLE_ERROR_BLENDED);
slouken@7720
   762
   SDL_FreeSurface(referenceSurface);
slouken@7720
   763
   referenceSurface = NULL;
aschiffler@6763
   764
aschiffler@6763
   765
   return TEST_COMPLETED;
aschiffler@6763
   766
}
aschiffler@6763
   767
aschiffler@6763
   768
aschiffler@6763
   769
/**
aschiffler@6763
   770
 * @brief Checks to see if functionality is supported. Helper function.
aschiffler@6763
   771
 */
aschiffler@6763
   772
static int
aschiffler@6763
   773
_isSupported( int code )
aschiffler@6763
   774
{
aschiffler@6763
   775
   return (code == 0);
aschiffler@6763
   776
}
aschiffler@6763
   777
aschiffler@6763
   778
/**
philipp@7176
   779
 * @brief Test to see if we can vary the draw color. Helper function.
aschiffler@6763
   780
 *
aschiffler@6763
   781
 * \sa
aschiffler@6763
   782
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
aschiffler@6763
   783
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRenderDrawColor
aschiffler@6763
   784
 */
aschiffler@6763
   785
static int
aschiffler@6763
   786
_hasDrawColor (void)
aschiffler@6763
   787
{
aschiffler@6763
   788
   int ret, fail;
aschiffler@6763
   789
   Uint8 r, g, b, a;
aschiffler@6763
   790
aschiffler@6763
   791
   fail = 0;
aschiffler@6763
   792
philipp@7176
   793
   /* Set color. */
aschiffler@6763
   794
   ret = SDL_SetRenderDrawColor(renderer, 100, 100, 100, 100 );
aschiffler@6763
   795
   if (!_isSupported(ret))
aschiffler@6763
   796
      fail = 1;
aschiffler@6763
   797
   ret = SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a );
aschiffler@6763
   798
   if (!_isSupported(ret))
aschiffler@6763
   799
      fail = 1;
slouken@7191
   800
aschiffler@6763
   801
   /* Restore natural. */
aschiffler@6763
   802
   ret = SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE );
aschiffler@6763
   803
   if (!_isSupported(ret))
aschiffler@6763
   804
      fail = 1;
aschiffler@6763
   805
aschiffler@6763
   806
   /* Something failed, consider not available. */
aschiffler@6763
   807
   if (fail)
aschiffler@6763
   808
      return 0;
slouken@7191
   809
aschiffler@6763
   810
   /* Not set properly, consider failed. */
aschiffler@6763
   811
   else if ((r != 100) || (g != 100) || (b != 100) || (a != 100))
aschiffler@6763
   812
      return 0;
aschiffler@6763
   813
   return 1;
aschiffler@6763
   814
}
aschiffler@6763
   815
aschiffler@6763
   816
/**
aschiffler@6763
   817
 * @brief Test to see if we can vary the blend mode. Helper function.
aschiffler@6763
   818
 *
aschiffler@6763
   819
 * \sa
aschiffler@6763
   820
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
aschiffler@6763
   821
 * http://wiki.libsdl.org/moin.cgi/SDL_GetRenderDrawBlendMode
aschiffler@6763
   822
 */
aschiffler@6763
   823
static int
aschiffler@6763
   824
_hasBlendModes (void)
aschiffler@6763
   825
{
aschiffler@6763
   826
   int fail;
aschiffler@6763
   827
   int ret;
aschiffler@6763
   828
   SDL_BlendMode mode;
aschiffler@6763
   829
aschiffler@6763
   830
   fail = 0;
aschiffler@6763
   831
aschiffler@6763
   832
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND );
aschiffler@6763
   833
   if (!_isSupported(ret))
aschiffler@6763
   834
      fail = 1;
aschiffler@6763
   835
   ret = SDL_GetRenderDrawBlendMode(renderer, &mode );
aschiffler@6763
   836
   if (!_isSupported(ret))
aschiffler@6763
   837
      fail = 1;
aschiffler@6763
   838
   ret = (mode != SDL_BLENDMODE_BLEND);
aschiffler@6763
   839
   if (!_isSupported(ret))
aschiffler@6763
   840
      fail = 1;
aschiffler@6763
   841
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_ADD );
aschiffler@6763
   842
   if (!_isSupported(ret))
aschiffler@6763
   843
      fail = 1;
aschiffler@6763
   844
   ret = SDL_GetRenderDrawBlendMode(renderer, &mode );
aschiffler@6763
   845
   if (!_isSupported(ret))
aschiffler@6763
   846
      fail = 1;
aschiffler@6763
   847
   ret = (mode != SDL_BLENDMODE_ADD);
aschiffler@6763
   848
   if (!_isSupported(ret))
aschiffler@6763
   849
      fail = 1;
aschiffler@6763
   850
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_MOD );
aschiffler@6763
   851
   if (!_isSupported(ret))
aschiffler@6763
   852
      fail = 1;
aschiffler@6763
   853
   ret = SDL_GetRenderDrawBlendMode(renderer, &mode );
aschiffler@6763
   854
   if (!_isSupported(ret))
aschiffler@6763
   855
      fail = 1;
aschiffler@6763
   856
   ret = (mode != SDL_BLENDMODE_MOD);
aschiffler@6763
   857
   if (!_isSupported(ret))
aschiffler@6763
   858
      fail = 1;
aschiffler@6763
   859
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE );
aschiffler@6763
   860
   if (!_isSupported(ret))
aschiffler@6763
   861
      fail = 1;
aschiffler@6763
   862
   ret = SDL_GetRenderDrawBlendMode(renderer, &mode );
aschiffler@6763
   863
   if (!_isSupported(ret))
aschiffler@6763
   864
      fail = 1;
aschiffler@6763
   865
   ret = (mode != SDL_BLENDMODE_NONE);
aschiffler@6763
   866
   if (!_isSupported(ret))
aschiffler@6763
   867
      fail = 1;
aschiffler@6763
   868
aschiffler@6763
   869
   return !fail;
aschiffler@6763
   870
}
aschiffler@6763
   871
aschiffler@6763
   872
aschiffler@6763
   873
/**
aschiffler@6763
   874
 * @brief Loads the test image 'Face' as texture. Helper function.
aschiffler@6763
   875
 *
aschiffler@6763
   876
 * \sa
aschiffler@6763
   877
 * http://wiki.libsdl.org/moin.cgi/SDL_CreateTextureFromSurface
aschiffler@6763
   878
 */
aschiffler@6763
   879
static SDL_Texture *
aschiffler@6763
   880
_loadTestFace(void)
aschiffler@6763
   881
{
aschiffler@6763
   882
   SDL_Surface *face;
aschiffler@6763
   883
   SDL_Texture *tface;
aschiffler@6763
   884
aschiffler@6763
   885
   face = SDLTest_ImageFace();
aschiffler@6763
   886
   if (face == NULL) {
aschiffler@6763
   887
      return NULL;
aschiffler@6763
   888
   }
slouken@7191
   889
aschiffler@6763
   890
   tface = SDL_CreateTextureFromSurface(renderer, face);
aschiffler@6763
   891
   if (tface == NULL) {
aschiffler@6763
   892
       SDLTest_LogError("SDL_CreateTextureFromSurface() failed with error: %s", SDL_GetError());
aschiffler@6763
   893
   }
aschiffler@6763
   894
aschiffler@6763
   895
   SDL_FreeSurface(face);
aschiffler@6763
   896
aschiffler@6763
   897
   return tface;
aschiffler@6763
   898
}
aschiffler@6763
   899
aschiffler@6763
   900
aschiffler@6763
   901
/**
philipp@7176
   902
 * @brief Test to see if can set texture color mode. Helper function.
aschiffler@6763
   903
 *
aschiffler@6763
   904
 * \sa
aschiffler@6763
   905
 * http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
aschiffler@6763
   906
 * http://wiki.libsdl.org/moin.cgi/SDL_GetTextureColorMod
aschiffler@6763
   907
 * http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   908
 */
aschiffler@6763
   909
static int
aschiffler@6763
   910
_hasTexColor (void)
aschiffler@6763
   911
{
aschiffler@6763
   912
   int fail;
aschiffler@6763
   913
   int ret;
aschiffler@6763
   914
   SDL_Texture *tface;
aschiffler@6763
   915
   Uint8 r, g, b;
aschiffler@6763
   916
aschiffler@6763
   917
   /* Get test face. */
aschiffler@6763
   918
   tface = _loadTestFace();
aschiffler@6772
   919
   if (tface == NULL)
aschiffler@6763
   920
      return 0;
aschiffler@6763
   921
aschiffler@6763
   922
   /* See if supported. */
aschiffler@6763
   923
   fail = 0;
aschiffler@6763
   924
   ret = SDL_SetTextureColorMod( tface, 100, 100, 100 );
aschiffler@6763
   925
   if (!_isSupported(ret))
aschiffler@6763
   926
      fail = 1;
aschiffler@6763
   927
   ret = SDL_GetTextureColorMod( tface, &r, &g, &b );
aschiffler@6763
   928
   if (!_isSupported(ret))
aschiffler@6763
   929
      fail = 1;
aschiffler@6763
   930
aschiffler@6763
   931
   /* Clean up. */
aschiffler@6763
   932
   SDL_DestroyTexture( tface );
aschiffler@6763
   933
aschiffler@6763
   934
   if (fail)
aschiffler@6763
   935
      return 0;
aschiffler@6763
   936
   else if ((r != 100) || (g != 100) || (b != 100))
aschiffler@6763
   937
      return 0;
aschiffler@6763
   938
   return 1;
aschiffler@6763
   939
}
aschiffler@6763
   940
aschiffler@6763
   941
/**
aschiffler@6763
   942
 * @brief Test to see if we can vary the alpha of the texture. Helper function.
aschiffler@6763
   943
 *
aschiffler@6763
   944
 * \sa
aschiffler@6763
   945
 *  http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
aschiffler@6763
   946
 *  http://wiki.libsdl.org/moin.cgi/SDL_GetTextureAlphaMod
aschiffler@6763
   947
 *  http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
aschiffler@6763
   948
 */
aschiffler@6763
   949
static int
aschiffler@6763
   950
_hasTexAlpha(void)
aschiffler@6763
   951
{
aschiffler@6763
   952
   int fail;
aschiffler@6763
   953
   int ret;
aschiffler@6763
   954
   SDL_Texture *tface;
aschiffler@6763
   955
   Uint8 a;
aschiffler@6763
   956
aschiffler@6763
   957
   /* Get test face. */
aschiffler@6763
   958
   tface = _loadTestFace();
aschiffler@6772
   959
   if (tface == NULL)
aschiffler@6763
   960
      return 0;
aschiffler@6763
   961
aschiffler@6763
   962
   /* See if supported. */
aschiffler@6763
   963
   fail = 0;
aschiffler@6763
   964
   ret = SDL_SetTextureAlphaMod( tface, 100 );
aschiffler@6763
   965
   if (!_isSupported(ret))
aschiffler@6763
   966
      fail = 1;
aschiffler@6763
   967
   ret = SDL_GetTextureAlphaMod( tface, &a );
aschiffler@6763
   968
   if (!_isSupported(ret))
aschiffler@6763
   969
      fail = 1;
aschiffler@6763
   970
aschiffler@6763
   971
   /* Clean up. */
aschiffler@6763
   972
   SDL_DestroyTexture( tface );
aschiffler@6763
   973
aschiffler@6763
   974
   if (fail)
aschiffler@6763
   975
      return 0;
aschiffler@6763
   976
   else if (a != 100)
aschiffler@6763
   977
      return 0;
aschiffler@6763
   978
   return 1;
aschiffler@6763
   979
}
aschiffler@6763
   980
aschiffler@6763
   981
/**
aschiffler@6763
   982
 * @brief Compares screen pixels with image pixels. Helper function.
aschiffler@6763
   983
 *
aschiffler@6763
   984
 * @param s Image to compare against.
aschiffler@6763
   985
 *
aschiffler@6763
   986
 * \sa
aschiffler@6763
   987
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderReadPixels
aschiffler@6763
   988
 * http://wiki.libsdl.org/moin.cgi/SDL_CreateRGBSurfaceFrom
aschiffler@6763
   989
 * http://wiki.libsdl.org/moin.cgi/SDL_FreeSurface
aschiffler@6763
   990
 */
aschiffler@6763
   991
static void
aschiffler@6773
   992
_compare(SDL_Surface *referenceSurface, int allowable_error)
aschiffler@6763
   993
{
aschiffler@6822
   994
   int result;
aschiffler@6763
   995
   SDL_Rect rect;
aschiffler@6822
   996
   Uint8 *pixels;
aschiffler@6773
   997
   SDL_Surface *testSurface;
aschiffler@6763
   998
aschiffler@6763
   999
   /* Read pixels. */
aschiffler@6822
  1000
   pixels = (Uint8 *)SDL_malloc(4*TESTRENDER_SCREEN_W*TESTRENDER_SCREEN_H);
aschiffler@6822
  1001
   SDLTest_AssertCheck(pixels != NULL, "Validate allocated temp pixel buffer");
aschiffler@6822
  1002
   if (pixels == NULL) return;
aschiffler@6822
  1003
aschiffler@6773
  1004
   /* Explicitly specify the rect in case the window isn't the expected size... */
aschiffler@6763
  1005
   rect.x = 0;
aschiffler@6763
  1006
   rect.y = 0;
aschiffler@6772
  1007
   rect.w = TESTRENDER_SCREEN_W;
aschiffler@6772
  1008
   rect.h = TESTRENDER_SCREEN_H;
aschiffler@6822
  1009
   result = SDL_RenderReadPixels(renderer, &rect, RENDER_COMPARE_FORMAT, pixels, 80*4 );
aschiffler@6822
  1010
   SDLTest_AssertCheck(result == 0, "Validate result from SDL_RenderReadPixels, expected: 0, got: %i", result);
aschiffler@6763
  1011
aschiffler@6763
  1012
   /* Create surface. */
aschiffler@6822
  1013
   testSurface = SDL_CreateRGBSurfaceFrom(pixels, TESTRENDER_SCREEN_W, TESTRENDER_SCREEN_H, 32, TESTRENDER_SCREEN_W*4,
aschiffler@6763
  1014
                                       RENDER_COMPARE_RMASK, RENDER_COMPARE_GMASK, RENDER_COMPARE_BMASK, RENDER_COMPARE_AMASK);
aschiffler@6822
  1015
   SDLTest_AssertCheck(testSurface != NULL, "Verify result from SDL_CreateRGBSurfaceFrom is not NULL");
aschiffler@6763
  1016
aschiffler@6763
  1017
   /* Compare surface. */
aschiffler@6822
  1018
   result = SDLTest_CompareSurfaces( testSurface, referenceSurface, allowable_error );
aschiffler@6822
  1019
   SDLTest_AssertCheck(result == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", result);
aschiffler@6763
  1020
aschiffler@6773
  1021
   /* Clean up. */
slouken@7719
  1022
   SDL_free(pixels);
slouken@7720
  1023
   SDL_FreeSurface(testSurface);
aschiffler@6763
  1024
}
aschiffler@6763
  1025
aschiffler@6763
  1026
/**
aschiffler@6763
  1027
 * @brief Clears the screen. Helper function.
aschiffler@6763
  1028
 *
aschiffler@6763
  1029
 * \sa
aschiffler@6763
  1030
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
aschiffler@9254
  1031
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderClear
aschiffler@9254
  1032
 * http://wiki.libsdl.org/moin.cgi/SDL_RenderPresent
aschiffler@6763
  1033
 * http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
aschiffler@6763
  1034
 */
aschiffler@6763
  1035
static int
aschiffler@6763
  1036
_clearScreen(void)
aschiffler@6763
  1037
{
aschiffler@6763
  1038
   int ret;
aschiffler@6763
  1039
philipp@7176
  1040
   /* Set color. */
aschiffler@6763
  1041
   ret = SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE );
aschiffler@6763
  1042
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
  1043
aschiffler@6763
  1044
   /* Clear screen. */
aschiffler@9254
  1045
   ret = SDL_RenderClear(renderer);
aschiffler@9254
  1046
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_RenderClear, expected: 0, got: %i", ret);
aschiffler@9254
  1047
aschiffler@9254
  1048
   /* Make current */
aschiffler@9254
  1049
   SDL_RenderPresent(renderer);
aschiffler@6763
  1050
aschiffler@6763
  1051
   /* Set defaults. */
aschiffler@6763
  1052
   ret = SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE );
aschiffler@6763
  1053
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawBlendMode, expected: 0, got: %i", ret);
aschiffler@6763
  1054
aschiffler@6763
  1055
   ret = SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE );
aschiffler@6763
  1056
   SDLTest_AssertCheck(ret == 0, "Validate result from SDL_SetRenderDrawColor, expected: 0, got: %i", ret);
aschiffler@6763
  1057
aschiffler@6763
  1058
   return 0;
aschiffler@6763
  1059
}
aschiffler@6763
  1060
aschiffler@6763
  1061
/* ================= Test References ================== */
aschiffler@6763
  1062
aschiffler@6763
  1063
/* Render test cases */
aschiffler@6763
  1064
static const SDLTest_TestCaseReference renderTest1 =
slouken@7191
  1065
        { (SDLTest_TestCaseFp)render_testGetNumRenderDrivers, "render_testGetNumRenderDrivers", "Tests call to SDL_GetNumRenderDrivers", TEST_ENABLED };
aschiffler@6763
  1066
aschiffler@6763
  1067
static const SDLTest_TestCaseReference renderTest2 =
slouken@7191
  1068
        { (SDLTest_TestCaseFp)render_testPrimitives, "render_testPrimitives", "Tests rendering primitives", TEST_ENABLED };
aschiffler@6763
  1069
aschiffler@7172
  1070
/* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
aschiffler@6763
  1071
static const SDLTest_TestCaseReference renderTest3 =
slouken@7191
  1072
        { (SDLTest_TestCaseFp)render_testPrimitivesBlend, "render_testPrimitivesBlend", "Tests rendering primitives with blending", TEST_DISABLED };
aschiffler@6763
  1073
aschiffler@6763
  1074
static const SDLTest_TestCaseReference renderTest4 =
slouken@7191
  1075
        { (SDLTest_TestCaseFp)render_testBlit, "render_testBlit", "Tests blitting", TEST_ENABLED };
aschiffler@6763
  1076
aschiffler@6763
  1077
static const SDLTest_TestCaseReference renderTest5 =
slouken@7191
  1078
        { (SDLTest_TestCaseFp)render_testBlitColor, "render_testBlitColor", "Tests blitting with color", TEST_ENABLED };
aschiffler@6763
  1079
aschiffler@7172
  1080
/* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
aschiffler@6763
  1081
static const SDLTest_TestCaseReference renderTest6 =
slouken@7191
  1082
        { (SDLTest_TestCaseFp)render_testBlitAlpha, "render_testBlitAlpha", "Tests blitting with alpha", TEST_DISABLED };
aschiffler@6763
  1083
aschiffler@7172
  1084
/* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
aschiffler@6763
  1085
static const SDLTest_TestCaseReference renderTest7 =
slouken@7191
  1086
        {  (SDLTest_TestCaseFp)render_testBlitBlend, "render_testBlitBlend", "Tests blitting with blending", TEST_DISABLED };
aschiffler@6763
  1087
aschiffler@6763
  1088
/* Sequence of Render test cases */
aschiffler@6763
  1089
static const SDLTest_TestCaseReference *renderTests[] =  {
slouken@7191
  1090
    &renderTest1, &renderTest2, &renderTest3, &renderTest4, &renderTest5, &renderTest6, &renderTest7, NULL
aschiffler@6763
  1091
};
aschiffler@6763
  1092
aschiffler@6763
  1093
/* Render test suite (global) */
aschiffler@6763
  1094
SDLTest_TestSuiteReference renderTestSuite = {
slouken@7191
  1095
    "Render",
slouken@7191
  1096
    InitCreateRenderer,
slouken@7191
  1097
    renderTests,
slouken@7191
  1098
    CleanupDestroyRenderer
aschiffler@6763
  1099
};