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