test/testautomation_render.c
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:09 -0800
changeset 11730 ac6c607e065c
parent 9254 6c469ea796e4
permissions -rw-r--r--
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
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
};