sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

testautomation_surface.c (20674B)


      1 /**
      2  * Original code: automated SDL surface test written by Edgar Simo "bobbens"
      3  * Adapted/rewritten for test lib by Andreas Schiffler
      4  */
      5 
      6 /* Supress C4996 VS compiler warnings for unlink() */
      7 #define _CRT_SECURE_NO_DEPRECATE
      8 #define _CRT_NONSTDC_NO_DEPRECATE
      9 
     10 #include <stdio.h>
     11 #ifndef _MSC_VER
     12 #include <unistd.h>
     13 #endif
     14 #include <sys/stat.h>
     15 
     16 #include "SDL.h"
     17 #include "SDL_test.h"
     18 
     19 #ifdef __MACOSX__
     20 #include <unistd.h> /* For unlink() */
     21 #endif
     22 
     23 /* ================= Test Case Implementation ================== */
     24 
     25 /* Shared test surface */
     26 
     27 static SDL_Surface *referenceSurface = NULL;
     28 static SDL_Surface *testSurface = NULL;
     29 
     30 /* Helper functions for the test cases */
     31 
     32 #define TEST_SURFACE_WIDTH testSurface->w
     33 #define TEST_SURFACE_HEIGHT testSurface->h
     34 
     35 /* Fixture */
     36 
     37 /* Create a 32-bit writable surface for blitting tests */
     38 void
     39 _surfaceSetUp(void *arg)
     40 {
     41     int result;
     42     SDL_BlendMode blendMode = SDL_BLENDMODE_NONE;
     43     SDL_BlendMode currentBlendMode;
     44     Uint32 rmask, gmask, bmask, amask;
     45 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
     46     rmask = 0xff000000;
     47     gmask = 0x00ff0000;
     48     bmask = 0x0000ff00;
     49     amask = 0x000000ff;
     50 #else
     51     rmask = 0x000000ff;
     52     gmask = 0x0000ff00;
     53     bmask = 0x00ff0000;
     54     amask = 0xff000000;
     55 #endif
     56 
     57     referenceSurface = SDLTest_ImageBlit(); /* For size info */
     58     testSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, referenceSurface->w, referenceSurface->h, 32, rmask, gmask, bmask, amask);
     59     SDLTest_AssertCheck(testSurface != NULL, "Check that testSurface is not NULL");
     60     if (testSurface != NULL) {
     61       /* Disable blend mode for target surface */
     62       result = SDL_SetSurfaceBlendMode(testSurface, blendMode);
     63       SDLTest_AssertCheck(result == 0, "Validate result from SDL_SetSurfaceBlendMode, expected: 0, got: %i", result);
     64       result = SDL_GetSurfaceBlendMode(testSurface, &currentBlendMode);
     65       SDLTest_AssertCheck(result == 0, "Validate result from SDL_GetSurfaceBlendMode, expected: 0, got: %i", result);
     66       SDLTest_AssertCheck(currentBlendMode == blendMode, "Validate blendMode, expected: %i, got: %i", blendMode, currentBlendMode);
     67     }
     68 }
     69 
     70 void
     71 _surfaceTearDown(void *arg)
     72 {
     73     SDL_FreeSurface(referenceSurface);
     74     referenceSurface = NULL;
     75     SDL_FreeSurface(testSurface);
     76     testSurface = NULL;
     77 }
     78 
     79 /**
     80  * Helper that clears the test surface
     81  */
     82 void _clearTestSurface()
     83 {
     84     int ret;
     85     Uint32 color;
     86 
     87     /* Clear surface. */
     88     color = SDL_MapRGBA( testSurface->format, 0, 0, 0, 0);
     89     SDLTest_AssertPass("Call to SDL_MapRGBA()");
     90     ret = SDL_FillRect( testSurface, NULL, color);
     91     SDLTest_AssertPass("Call to SDL_FillRect()");
     92     SDLTest_AssertCheck(ret == 0, "Verify result from SDL_FillRect, expected: 0, got: %i", ret);
     93 }
     94 
     95 /**
     96  * Helper that blits in a specific blend mode, -1 for basic blitting, -2 for color mod, -3 for alpha mod, -4 for mixed blend modes.
     97  */
     98 void _testBlitBlendMode(int mode)
     99 {
    100     int ret;
    101     int i, j, ni, nj;
    102     SDL_Surface *face;
    103     SDL_Rect rect;
    104     int nmode;
    105     SDL_BlendMode bmode;
    106     int checkFailCount1;
    107     int checkFailCount2;
    108     int checkFailCount3;
    109     int checkFailCount4;
    110 
    111     /* Check test surface */
    112     SDLTest_AssertCheck(testSurface != NULL, "Verify testSurface is not NULL");
    113     if (testSurface == NULL) return;
    114 
    115     /* Create sample surface */
    116     face = SDLTest_ImageFace();
    117     SDLTest_AssertCheck(face != NULL, "Verify face surface is not NULL");
    118     if (face == NULL) return;
    119 
    120         /* Reset alpha modulation */
    121     ret = SDL_SetSurfaceAlphaMod(face, 255);
    122     SDLTest_AssertPass("Call to SDL_SetSurfaceAlphaMod()");
    123     SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetSurfaceAlphaMod(), expected: 0, got: %i", ret);
    124 
    125         /* Reset color modulation */
    126     ret = SDL_SetSurfaceColorMod(face, 255, 255, 255);
    127     SDLTest_AssertPass("Call to SDL_SetSurfaceColorMod()");
    128     SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetSurfaceColorMod(), expected: 0, got: %i", ret);
    129 
    130         /* Reset color key */
    131     ret = SDL_SetColorKey(face, SDL_FALSE, 0);
    132     SDLTest_AssertPass("Call to SDL_SetColorKey()");
    133     SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetColorKey(), expected: 0, got: %i", ret);
    134 
    135     /* Clear the test surface */
    136         _clearTestSurface();
    137 
    138     /* Target rect size */
    139     rect.w = face->w;
    140     rect.h = face->h;
    141 
    142     /* Steps to take */
    143     ni = testSurface->w - face->w;
    144     nj = testSurface->h - face->h;
    145 
    146     /* Optionally set blend mode. */
    147     if (mode >= 0) {
    148         ret = SDL_SetSurfaceBlendMode( face, (SDL_BlendMode)mode );
    149         SDLTest_AssertPass("Call to SDL_SetSurfaceBlendMode()");
    150         SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetSurfaceBlendMode(..., %i), expected: 0, got: %i", mode, ret);
    151     }
    152 
    153     /* Test blend mode. */
    154     checkFailCount1 = 0;
    155     checkFailCount2 = 0;
    156     checkFailCount3 = 0;
    157     checkFailCount4 = 0;
    158     for (j=0; j <= nj; j+=4) {
    159       for (i=0; i <= ni; i+=4) {
    160         if (mode == -2) {
    161             /* Set color mod. */
    162             ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j );
    163             if (ret != 0) checkFailCount2++;
    164         }
    165         else if (mode == -3) {
    166             /* Set alpha mod. */
    167             ret = SDL_SetSurfaceAlphaMod( face, (255/ni)*i );
    168             if (ret != 0) checkFailCount3++;
    169         }
    170         else if (mode == -4) {
    171             /* Crazy blending mode magic. */
    172             nmode = (i/4*j/4) % 4;
    173             if (nmode==0) {
    174                 bmode = SDL_BLENDMODE_NONE;
    175             } else if (nmode==1) {
    176                 bmode = SDL_BLENDMODE_BLEND;
    177             } else if (nmode==2) {
    178                 bmode = SDL_BLENDMODE_ADD;
    179             } else if (nmode==3) {
    180                 bmode = SDL_BLENDMODE_MOD;
    181             }
    182             ret = SDL_SetSurfaceBlendMode( face, bmode );
    183             if (ret != 0) checkFailCount4++;
    184         }
    185 
    186          /* Blitting. */
    187          rect.x = i;
    188          rect.y = j;
    189          ret = SDL_BlitSurface( face, NULL, testSurface, &rect );
    190          if (ret != 0) checkFailCount1++;
    191       }
    192     }
    193     SDLTest_AssertCheck(checkFailCount1 == 0, "Validate results from calls to SDL_BlitSurface, expected: 0, got: %i", checkFailCount1);
    194     SDLTest_AssertCheck(checkFailCount2 == 0, "Validate results from calls to SDL_SetSurfaceColorMod, expected: 0, got: %i", checkFailCount2);
    195     SDLTest_AssertCheck(checkFailCount3 == 0, "Validate results from calls to SDL_SetSurfaceAlphaMod, expected: 0, got: %i", checkFailCount3);
    196     SDLTest_AssertCheck(checkFailCount4 == 0, "Validate results from calls to SDL_SetSurfaceBlendMode, expected: 0, got: %i", checkFailCount4);
    197 
    198     /* Clean up */
    199     SDL_FreeSurface(face);
    200     face = NULL;
    201 }
    202 
    203 /* Helper to check that a file exists */
    204 void
    205 _AssertFileExist(const char *filename)
    206 {
    207     struct stat st;
    208     int ret = stat(filename, &st);
    209 
    210     SDLTest_AssertCheck(ret == 0, "Verify file '%s' exists", filename);
    211 }
    212 
    213 
    214 /* Test case functions */
    215 
    216 /**
    217  * @brief Tests sprite saving and loading
    218  */
    219 int
    220 surface_testSaveLoadBitmap(void *arg)
    221 {
    222     int ret;
    223     const char *sampleFilename = "testSaveLoadBitmap.bmp";
    224     SDL_Surface *face;
    225     SDL_Surface *rface;
    226 
    227     /* Create sample surface */
    228     face = SDLTest_ImageFace();
    229     SDLTest_AssertCheck(face != NULL, "Verify face surface is not NULL");
    230     if (face == NULL) return TEST_ABORTED;
    231 
    232     /* Delete test file; ignore errors */
    233     unlink(sampleFilename);
    234 
    235     /* Save a surface */
    236     ret = SDL_SaveBMP(face, sampleFilename);
    237     SDLTest_AssertPass("Call to SDL_SaveBMP()");
    238     SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SaveBMP, expected: 0, got: %i", ret);
    239     _AssertFileExist(sampleFilename);
    240 
    241     /* Load a surface */
    242     rface = SDL_LoadBMP(sampleFilename);
    243     SDLTest_AssertPass("Call to SDL_LoadBMP()");
    244     SDLTest_AssertCheck(rface != NULL, "Verify result from SDL_LoadBMP is not NULL");
    245     if (rface != NULL) {
    246         SDLTest_AssertCheck(face->w == rface->w, "Verify width of loaded surface, expected: %i, got: %i", face->w, rface->w);
    247         SDLTest_AssertCheck(face->h == rface->h, "Verify height of loaded surface, expected: %i, got: %i", face->h, rface->h);
    248     }
    249 
    250     /* Delete test file; ignore errors */
    251     unlink(sampleFilename);
    252 
    253     /* Clean up */
    254     SDL_FreeSurface(face);
    255     face = NULL;
    256     SDL_FreeSurface(rface);
    257     rface = NULL;
    258 
    259     return TEST_COMPLETED;
    260 }
    261 
    262 /* !
    263  *  Tests surface conversion.
    264  */
    265 int
    266 surface_testSurfaceConversion(void *arg)
    267 {
    268     SDL_Surface *rface = NULL, *face = NULL;
    269     int ret = 0;
    270 
    271     /* Create sample surface */
    272     face = SDLTest_ImageFace();
    273     SDLTest_AssertCheck(face != NULL, "Verify face surface is not NULL");
    274     if (face == NULL)
    275         return TEST_ABORTED;
    276 
    277     /* Set transparent pixel as the pixel at (0,0) */
    278     if (face->format->palette) {
    279        ret = SDL_SetColorKey(face, SDL_RLEACCEL, *(Uint8 *) face->pixels);
    280        SDLTest_AssertPass("Call to SDL_SetColorKey()");
    281        SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetColorKey, expected: 0, got: %i", ret);
    282     }
    283 
    284     /* Convert to 32 bit to compare. */
    285     rface = SDL_ConvertSurface( face, testSurface->format, 0 );
    286     SDLTest_AssertPass("Call to SDL_ConvertSurface()");
    287     SDLTest_AssertCheck(rface != NULL, "Verify result from SDL_ConvertSurface is not NULL");
    288 
    289     /* Compare surface. */
    290     ret = SDLTest_CompareSurfaces( rface, face, 0 );
    291     SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    292 
    293     /* Clean up. */
    294     SDL_FreeSurface(face);
    295     face = NULL;
    296     SDL_FreeSurface(rface);
    297     rface = NULL;
    298 
    299     return TEST_COMPLETED;
    300 }
    301 
    302 
    303 /* !
    304  *  Tests surface conversion across all pixel formats.
    305  */
    306 int
    307 surface_testCompleteSurfaceConversion(void *arg)
    308 {
    309     Uint32 pixel_formats[] = {
    310         SDL_PIXELFORMAT_INDEX8,
    311         SDL_PIXELFORMAT_RGB332,
    312         SDL_PIXELFORMAT_RGB444,
    313         SDL_PIXELFORMAT_BGR444,
    314         SDL_PIXELFORMAT_RGB555,
    315         SDL_PIXELFORMAT_BGR555,
    316         SDL_PIXELFORMAT_ARGB4444,
    317         SDL_PIXELFORMAT_RGBA4444,
    318         SDL_PIXELFORMAT_ABGR4444,
    319         SDL_PIXELFORMAT_BGRA4444,
    320         SDL_PIXELFORMAT_ARGB1555,
    321         SDL_PIXELFORMAT_RGBA5551,
    322         SDL_PIXELFORMAT_ABGR1555,
    323         SDL_PIXELFORMAT_BGRA5551,
    324         SDL_PIXELFORMAT_RGB565,
    325         SDL_PIXELFORMAT_BGR565,
    326         SDL_PIXELFORMAT_RGB24,
    327         SDL_PIXELFORMAT_BGR24,
    328         SDL_PIXELFORMAT_RGB888,
    329         SDL_PIXELFORMAT_RGBX8888,
    330         SDL_PIXELFORMAT_BGR888,
    331         SDL_PIXELFORMAT_BGRX8888,
    332         SDL_PIXELFORMAT_ARGB8888,
    333         SDL_PIXELFORMAT_RGBA8888,
    334         SDL_PIXELFORMAT_ABGR8888,
    335         SDL_PIXELFORMAT_BGRA8888,
    336         SDL_PIXELFORMAT_ARGB2101010,
    337     };
    338     SDL_Surface *face = NULL, *cvt1, *cvt2, *final;
    339     SDL_PixelFormat *fmt1, *fmt2;
    340     int i, j, ret = 0;
    341 
    342     /* Create sample surface */
    343     face = SDLTest_ImageFace();
    344     SDLTest_AssertCheck(face != NULL, "Verify face surface is not NULL");
    345     if (face == NULL)
    346         return TEST_ABORTED;
    347 
    348     /* Set transparent pixel as the pixel at (0,0) */
    349     if (face->format->palette) {
    350        ret = SDL_SetColorKey(face, SDL_RLEACCEL, *(Uint8 *) face->pixels);
    351        SDLTest_AssertPass("Call to SDL_SetColorKey()");
    352        SDLTest_AssertCheck(ret == 0, "Verify result from SDL_SetColorKey, expected: 0, got: %i", ret);
    353     }
    354 
    355     for ( i = 0; i < SDL_arraysize(pixel_formats); ++i ) {
    356         for ( j = 0; j < SDL_arraysize(pixel_formats); ++j ) {
    357             fmt1 = SDL_AllocFormat(pixel_formats[i]);
    358             SDL_assert(fmt1 != NULL);
    359             cvt1 = SDL_ConvertSurface(face, fmt1, 0);
    360             SDL_assert(cvt1 != NULL);
    361 
    362             fmt2 = SDL_AllocFormat(pixel_formats[j]);
    363             SDL_assert(fmt1 != NULL);
    364             cvt2 = SDL_ConvertSurface(cvt1, fmt2, 0);
    365             SDL_assert(cvt2 != NULL);
    366 
    367             if ( fmt1->BytesPerPixel == face->format->BytesPerPixel &&
    368                  fmt2->BytesPerPixel == face->format->BytesPerPixel &&
    369                  (fmt1->Amask != 0) == (face->format->Amask != 0) &&
    370                  (fmt2->Amask != 0) == (face->format->Amask != 0) ) {
    371                 final = SDL_ConvertSurface( cvt2, face->format, 0 );
    372                 SDL_assert(final != NULL);
    373 
    374                 /* Compare surface. */
    375                 ret = SDLTest_CompareSurfaces( face, final, 0 );
    376                 SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    377                 SDL_FreeSurface(final);
    378             }
    379 
    380             SDL_FreeSurface(cvt1);
    381             SDL_FreeFormat(fmt1);
    382             SDL_FreeSurface(cvt2);
    383             SDL_FreeFormat(fmt2);
    384         }
    385     }
    386 
    387     /* Clean up. */
    388     SDL_FreeSurface( face );
    389 
    390     return TEST_COMPLETED;
    391 }
    392 
    393 
    394 /**
    395  * @brief Tests sprite loading. A failure case.
    396  */
    397 int
    398 surface_testLoadFailure(void *arg)
    399 {
    400     SDL_Surface *face = SDL_LoadBMP("nonexistant.bmp");
    401     SDLTest_AssertCheck(face == NULL, "SDL_CreateLoadBmp");
    402 
    403     return TEST_COMPLETED;
    404 }
    405 
    406 /**
    407  * @brief Tests some blitting routines.
    408  */
    409 int
    410 surface_testBlit(void *arg)
    411 {
    412    int ret;
    413    SDL_Surface *compareSurface;
    414 
    415    /* Basic blitting */
    416    _testBlitBlendMode(-1);
    417 
    418    /* Verify result by comparing surfaces */
    419    compareSurface = SDLTest_ImageBlit();
    420    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    421    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    422 
    423    /* Clean up. */
    424    SDL_FreeSurface(compareSurface);
    425 
    426    return TEST_COMPLETED;
    427 }
    428 
    429 /**
    430  * @brief Tests some blitting routines with color mod
    431  */
    432 int
    433 surface_testBlitColorMod(void *arg)
    434 {
    435    int ret;
    436    SDL_Surface *compareSurface;
    437 
    438    /* Basic blitting with color mod */
    439    _testBlitBlendMode(-2);
    440 
    441    /* Verify result by comparing surfaces */
    442    compareSurface = SDLTest_ImageBlitColor();
    443    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    444    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    445 
    446    /* Clean up. */
    447    SDL_FreeSurface(compareSurface);
    448 
    449    return TEST_COMPLETED;
    450 }
    451 
    452 /**
    453  * @brief Tests some blitting routines with alpha mod
    454  */
    455 int
    456 surface_testBlitAlphaMod(void *arg)
    457 {
    458    int ret;
    459    SDL_Surface *compareSurface;
    460 
    461    /* Basic blitting with alpha mod */
    462    _testBlitBlendMode(-3);
    463 
    464    /* Verify result by comparing surfaces */
    465    compareSurface = SDLTest_ImageBlitAlpha();
    466    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    467    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    468 
    469    /* Clean up. */
    470    SDL_FreeSurface(compareSurface);
    471 
    472    return TEST_COMPLETED;
    473 }
    474 
    475 
    476 /**
    477  * @brief Tests some more blitting routines.
    478  */
    479 int
    480 surface_testBlitBlendNone(void *arg)
    481 {
    482    int ret;
    483    SDL_Surface *compareSurface;
    484 
    485    /* Basic blitting */
    486    _testBlitBlendMode(SDL_BLENDMODE_NONE);
    487 
    488    /* Verify result by comparing surfaces */
    489    compareSurface = SDLTest_ImageBlitBlendNone();
    490    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    491    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    492 
    493    /* Clean up. */
    494    SDL_FreeSurface(compareSurface);
    495 
    496    return TEST_COMPLETED;
    497 }
    498 
    499 /**
    500  * @brief Tests some more blitting routines.
    501  */
    502 int
    503 surface_testBlitBlendBlend(void *arg)
    504 {
    505    int ret;
    506    SDL_Surface *compareSurface;
    507 
    508    /* Blend blitting */
    509    _testBlitBlendMode(SDL_BLENDMODE_BLEND);
    510 
    511    /* Verify result by comparing surfaces */
    512    compareSurface = SDLTest_ImageBlitBlend();
    513    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    514    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    515 
    516    /* Clean up. */
    517    SDL_FreeSurface(compareSurface);
    518 
    519    return TEST_COMPLETED;
    520 }
    521 
    522 /**
    523  * @brief Tests some more blitting routines.
    524  */
    525 int
    526 surface_testBlitBlendAdd(void *arg)
    527 {
    528    int ret;
    529    SDL_Surface *compareSurface;
    530 
    531    /* Add blitting */
    532    _testBlitBlendMode(SDL_BLENDMODE_ADD);
    533 
    534    /* Verify result by comparing surfaces */
    535    compareSurface = SDLTest_ImageBlitBlendAdd();
    536    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    537    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    538 
    539    /* Clean up. */
    540    SDL_FreeSurface(compareSurface);
    541 
    542    return TEST_COMPLETED;
    543 }
    544 
    545 /**
    546  * @brief Tests some more blitting routines.
    547  */
    548 int
    549 surface_testBlitBlendMod(void *arg)
    550 {
    551    int ret;
    552    SDL_Surface *compareSurface;
    553 
    554    /* Mod blitting */
    555    _testBlitBlendMode(SDL_BLENDMODE_MOD);
    556 
    557    /* Verify result by comparing surfaces */
    558    compareSurface = SDLTest_ImageBlitBlendMod();
    559    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    560    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    561 
    562    /* Clean up. */
    563    SDL_FreeSurface(compareSurface);
    564 
    565    return TEST_COMPLETED;
    566 }
    567 
    568 /**
    569  * @brief Tests some more blitting routines with loop
    570  */
    571 int
    572 surface_testBlitBlendLoop(void *arg) {
    573 
    574    int ret;
    575    SDL_Surface *compareSurface;
    576 
    577    /* All blitting modes */
    578    _testBlitBlendMode(-4);
    579 
    580    /* Verify result by comparing surfaces */
    581    compareSurface = SDLTest_ImageBlitBlendAll();
    582    ret = SDLTest_CompareSurfaces( testSurface, compareSurface, 0 );
    583    SDLTest_AssertCheck(ret == 0, "Validate result from SDLTest_CompareSurfaces, expected: 0, got: %i", ret);
    584 
    585    /* Clean up. */
    586    SDL_FreeSurface(compareSurface);
    587 
    588    return TEST_COMPLETED;
    589 
    590 }
    591 
    592 /* ================= Test References ================== */
    593 
    594 /* Surface test cases */
    595 static const SDLTest_TestCaseReference surfaceTest1 =
    596         { (SDLTest_TestCaseFp)surface_testSaveLoadBitmap, "surface_testSaveLoadBitmap", "Tests sprite saving and loading.", TEST_ENABLED};
    597 
    598 static const SDLTest_TestCaseReference surfaceTest2 =
    599         { (SDLTest_TestCaseFp)surface_testBlit, "surface_testBlit", "Tests basic blitting.", TEST_ENABLED};
    600 
    601 static const SDLTest_TestCaseReference surfaceTest3 =
    602         { (SDLTest_TestCaseFp)surface_testBlitBlendNone, "surface_testBlitBlendNone", "Tests blitting routines with none blending mode.", TEST_ENABLED};
    603 
    604 static const SDLTest_TestCaseReference surfaceTest4 =
    605         { (SDLTest_TestCaseFp)surface_testLoadFailure, "surface_testLoadFailure", "Tests sprite loading. A failure case.", TEST_ENABLED};
    606 
    607 static const SDLTest_TestCaseReference surfaceTest5 =
    608         { (SDLTest_TestCaseFp)surface_testSurfaceConversion, "surface_testSurfaceConversion", "Tests surface conversion.", TEST_ENABLED};
    609 
    610 static const SDLTest_TestCaseReference surfaceTest6 =
    611         { (SDLTest_TestCaseFp)surface_testCompleteSurfaceConversion, "surface_testCompleteSurfaceConversion", "Tests surface conversion across all pixel formats", TEST_ENABLED};
    612 
    613 static const SDLTest_TestCaseReference surfaceTest7 =
    614         { (SDLTest_TestCaseFp)surface_testBlitColorMod, "surface_testBlitColorMod", "Tests some blitting routines with color mod.", TEST_ENABLED};
    615 
    616 static const SDLTest_TestCaseReference surfaceTest8 =
    617         { (SDLTest_TestCaseFp)surface_testBlitAlphaMod, "surface_testBlitAlphaMod", "Tests some blitting routines with alpha mod.", TEST_ENABLED};
    618 
    619 /* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
    620 static const SDLTest_TestCaseReference surfaceTest9 =
    621         { (SDLTest_TestCaseFp)surface_testBlitBlendLoop, "surface_testBlitBlendLoop", "Test blitting routines with various blending modes", TEST_DISABLED};
    622 
    623 /* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
    624 static const SDLTest_TestCaseReference surfaceTest10 =
    625         { (SDLTest_TestCaseFp)surface_testBlitBlendBlend, "surface_testBlitBlendBlend", "Tests blitting routines with blend blending mode.", TEST_DISABLED};
    626 
    627 /* TODO: rewrite test case, define new test data and re-enable; current implementation fails */
    628 static const SDLTest_TestCaseReference surfaceTest11 =
    629         { (SDLTest_TestCaseFp)surface_testBlitBlendAdd, "surface_testBlitBlendAdd", "Tests blitting routines with add blending mode.", TEST_DISABLED};
    630 
    631 static const SDLTest_TestCaseReference surfaceTest12 =
    632         { (SDLTest_TestCaseFp)surface_testBlitBlendMod, "surface_testBlitBlendMod", "Tests blitting routines with mod blending mode.", TEST_ENABLED};
    633 
    634 /* Sequence of Surface test cases */
    635 static const SDLTest_TestCaseReference *surfaceTests[] =  {
    636     &surfaceTest1, &surfaceTest2, &surfaceTest3, &surfaceTest4, &surfaceTest5,
    637     &surfaceTest6, &surfaceTest7, &surfaceTest8, &surfaceTest9, &surfaceTest10,
    638     &surfaceTest11, &surfaceTest12, NULL
    639 };
    640 
    641 /* Surface test suite (global) */
    642 SDLTest_TestSuiteReference surfaceTestSuite = {
    643     "Surface",
    644     _surfaceSetUp,
    645     surfaceTests,
    646     _surfaceTearDown
    647 
    648 };