test/testautomation_pixels.c
author Andreas Schiffler <aschiffler@ferzkopp.net>
Wed, 01 May 2013 22:14:29 -0700
changeset 7134 09ee216e6a25
child 7142 f4a670e51cde
permissions -rw-r--r--
Add pixels test suite; add a test to pixel suite; minor updates to test code to make VisualStudio happy
aschiffler@7134
     1
/**
aschiffler@7134
     2
 * Pixels test suite
aschiffler@7134
     3
 */
aschiffler@7134
     4
aschiffler@7134
     5
#include <stdio.h>
aschiffler@7134
     6
aschiffler@7134
     7
#include "SDL.h"
aschiffler@7134
     8
#include "SDL_test.h"
aschiffler@7134
     9
aschiffler@7134
    10
/* Test case functions */
aschiffler@7134
    11
aschiffler@7134
    12
/* Definition of all RGB formats used to test pixel conversions */
aschiffler@7134
    13
const int _numRGBPixelFormats = 30;
aschiffler@7134
    14
Uint32 _RGBPixelFormats[] = 
aschiffler@7134
    15
  {
aschiffler@7134
    16
    SDL_PIXELFORMAT_INDEX1LSB,
aschiffler@7134
    17
    SDL_PIXELFORMAT_INDEX1MSB,
aschiffler@7134
    18
    SDL_PIXELFORMAT_INDEX4LSB,
aschiffler@7134
    19
    SDL_PIXELFORMAT_INDEX4MSB,
aschiffler@7134
    20
    SDL_PIXELFORMAT_INDEX8,
aschiffler@7134
    21
    SDL_PIXELFORMAT_RGB332,
aschiffler@7134
    22
    SDL_PIXELFORMAT_RGB444,
aschiffler@7134
    23
    SDL_PIXELFORMAT_RGB555,
aschiffler@7134
    24
    SDL_PIXELFORMAT_BGR555,
aschiffler@7134
    25
    SDL_PIXELFORMAT_ARGB4444,
aschiffler@7134
    26
    SDL_PIXELFORMAT_RGBA4444,
aschiffler@7134
    27
    SDL_PIXELFORMAT_ABGR4444,
aschiffler@7134
    28
    SDL_PIXELFORMAT_BGRA4444,
aschiffler@7134
    29
    SDL_PIXELFORMAT_ARGB1555,
aschiffler@7134
    30
    SDL_PIXELFORMAT_RGBA5551,
aschiffler@7134
    31
    SDL_PIXELFORMAT_ABGR1555,
aschiffler@7134
    32
    SDL_PIXELFORMAT_BGRA5551,
aschiffler@7134
    33
    SDL_PIXELFORMAT_RGB565,
aschiffler@7134
    34
    SDL_PIXELFORMAT_BGR565,
aschiffler@7134
    35
    SDL_PIXELFORMAT_RGB24,
aschiffler@7134
    36
    SDL_PIXELFORMAT_BGR24,
aschiffler@7134
    37
    SDL_PIXELFORMAT_RGB888,
aschiffler@7134
    38
    SDL_PIXELFORMAT_RGBX8888,
aschiffler@7134
    39
    SDL_PIXELFORMAT_BGR888,
aschiffler@7134
    40
    SDL_PIXELFORMAT_BGRX8888,
aschiffler@7134
    41
    SDL_PIXELFORMAT_ARGB8888,
aschiffler@7134
    42
    SDL_PIXELFORMAT_RGBA8888,
aschiffler@7134
    43
    SDL_PIXELFORMAT_ABGR8888,
aschiffler@7134
    44
    SDL_PIXELFORMAT_BGRA8888,
aschiffler@7134
    45
    SDL_PIXELFORMAT_ARGB2101010
aschiffler@7134
    46
  };
aschiffler@7134
    47
char* _RGBPixelFormatsVerbose[] = 
aschiffler@7134
    48
  {
aschiffler@7134
    49
    "SDL_PIXELFORMAT_INDEX1LSB",
aschiffler@7134
    50
    "SDL_PIXELFORMAT_INDEX1MSB",
aschiffler@7134
    51
    "SDL_PIXELFORMAT_INDEX4LSB",
aschiffler@7134
    52
    "SDL_PIXELFORMAT_INDEX4MSB",
aschiffler@7134
    53
    "SDL_PIXELFORMAT_INDEX8",
aschiffler@7134
    54
    "SDL_PIXELFORMAT_RGB332",
aschiffler@7134
    55
    "SDL_PIXELFORMAT_RGB444",
aschiffler@7134
    56
    "SDL_PIXELFORMAT_RGB555",
aschiffler@7134
    57
    "SDL_PIXELFORMAT_BGR555",
aschiffler@7134
    58
    "SDL_PIXELFORMAT_ARGB4444",
aschiffler@7134
    59
    "SDL_PIXELFORMAT_RGBA4444",
aschiffler@7134
    60
    "SDL_PIXELFORMAT_ABGR4444",
aschiffler@7134
    61
    "SDL_PIXELFORMAT_BGRA4444",
aschiffler@7134
    62
    "SDL_PIXELFORMAT_ARGB1555",
aschiffler@7134
    63
    "SDL_PIXELFORMAT_RGBA5551",
aschiffler@7134
    64
    "SDL_PIXELFORMAT_ABGR1555",
aschiffler@7134
    65
    "SDL_PIXELFORMAT_BGRA5551",
aschiffler@7134
    66
    "SDL_PIXELFORMAT_RGB565",
aschiffler@7134
    67
    "SDL_PIXELFORMAT_BGR565",
aschiffler@7134
    68
    "SDL_PIXELFORMAT_RGB24",
aschiffler@7134
    69
    "SDL_PIXELFORMAT_BGR24",
aschiffler@7134
    70
    "SDL_PIXELFORMAT_RGB888",
aschiffler@7134
    71
    "SDL_PIXELFORMAT_RGBX8888",
aschiffler@7134
    72
    "SDL_PIXELFORMAT_BGR888",
aschiffler@7134
    73
    "SDL_PIXELFORMAT_BGRX8888",
aschiffler@7134
    74
    "SDL_PIXELFORMAT_ARGB8888",
aschiffler@7134
    75
    "SDL_PIXELFORMAT_RGBA8888",
aschiffler@7134
    76
    "SDL_PIXELFORMAT_ABGR8888",
aschiffler@7134
    77
    "SDL_PIXELFORMAT_BGRA8888",
aschiffler@7134
    78
    "SDL_PIXELFORMAT_ARGB2101010"
aschiffler@7134
    79
  };
aschiffler@7134
    80
aschiffler@7134
    81
/* Definition of all Non-RGB formats used to test pixel conversions */
aschiffler@7134
    82
const int _numNonRGBPixelFormats = 5;
aschiffler@7134
    83
Uint32 _nonRGBPixelFormats[] = 
aschiffler@7134
    84
  {
aschiffler@7134
    85
    SDL_PIXELFORMAT_YV12,
aschiffler@7134
    86
    SDL_PIXELFORMAT_IYUV,
aschiffler@7134
    87
    SDL_PIXELFORMAT_YUY2,
aschiffler@7134
    88
    SDL_PIXELFORMAT_UYVY,
aschiffler@7134
    89
    SDL_PIXELFORMAT_YVYU 
aschiffler@7134
    90
  };
aschiffler@7134
    91
char* _nonRGBPixelFormatsVerbose[] = 
aschiffler@7134
    92
  {
aschiffler@7134
    93
    "SDL_PIXELFORMAT_YV12",
aschiffler@7134
    94
    "SDL_PIXELFORMAT_IYUV",
aschiffler@7134
    95
    "SDL_PIXELFORMAT_YUY2",
aschiffler@7134
    96
    "SDL_PIXELFORMAT_UYVY",
aschiffler@7134
    97
    "SDL_PIXELFORMAT_YVYU" 
aschiffler@7134
    98
  };
aschiffler@7134
    99
aschiffler@7134
   100
/* Test case functions */
aschiffler@7134
   101
aschiffler@7134
   102
/**
aschiffler@7134
   103
 * @brief Call to SDL_AllocFormat and SDL_FreeFormat
aschiffler@7134
   104
 */
aschiffler@7134
   105
int
aschiffler@7134
   106
pixels_allocFreeFormat(void *arg)
aschiffler@7134
   107
{
aschiffler@7134
   108
  int i;
aschiffler@7134
   109
  Uint32 format;
aschiffler@7134
   110
  Uint32 masks;
aschiffler@7134
   111
  SDL_PixelFormat* result;
aschiffler@7134
   112
aschiffler@7134
   113
  /* RGB formats */
aschiffler@7134
   114
  for (i = 0; i < _numRGBPixelFormats; i++) {
aschiffler@7134
   115
    format = _RGBPixelFormats[i];
aschiffler@7134
   116
    SDLTest_Log("RGB Format: %s (%u)", _RGBPixelFormatsVerbose[i], format);
aschiffler@7134
   117
  
aschiffler@7134
   118
    /* Allocate format */
aschiffler@7134
   119
    result = SDL_AllocFormat(format);
aschiffler@7134
   120
    SDLTest_AssertPass("Call to SDL_AllocFormat()");
aschiffler@7134
   121
    SDLTest_AssertCheck(result != NULL, "Verify result is not NULL");  
aschiffler@7134
   122
    if (result != NULL) {
aschiffler@7134
   123
      SDLTest_AssertCheck(result->format == format, "Verify value of result.format; expected: %u, got %u", format, result->format);  
aschiffler@7134
   124
      SDLTest_AssertCheck(result->BitsPerPixel > 0, "Verify value of result.BitsPerPixel; expected: >0, got %u", result->BitsPerPixel);  
aschiffler@7134
   125
      SDLTest_AssertCheck(result->BytesPerPixel > 0, "Verify value of result.BytesPerPixel; expected: >0, got %u", result->BytesPerPixel);  
aschiffler@7134
   126
      if (result->palette != NULL) {      
aschiffler@7134
   127
         masks = result->Rmask | result->Gmask | result->Bmask | result->Amask;
aschiffler@7134
   128
         SDLTest_AssertCheck(masks > 0, "Verify value of result.[RGBA]mask combined; expected: >0, got %u", masks);
aschiffler@7134
   129
      }
aschiffler@7134
   130
      
aschiffler@7134
   131
      /* Deallocate again */
aschiffler@7134
   132
      SDL_FreeFormat(result);
aschiffler@7134
   133
      SDLTest_AssertPass("Call to SDL_FreeFormat()");          
aschiffler@7134
   134
    }
aschiffler@7134
   135
  }
aschiffler@7134
   136
aschiffler@7134
   137
  /* Non-RGB formats */
aschiffler@7134
   138
  for (i = 0; i < _numNonRGBPixelFormats; i++) {
aschiffler@7134
   139
    format = _nonRGBPixelFormats[i];
aschiffler@7134
   140
    SDLTest_Log("non-RGB Format: %s (%u)", _nonRGBPixelFormatsVerbose[i], format);
aschiffler@7134
   141
  
aschiffler@7134
   142
    /* Try to allocate format */
aschiffler@7134
   143
    result = SDL_AllocFormat(format);
aschiffler@7134
   144
    SDLTest_AssertPass("Call to SDL_AllocFormat()");
aschiffler@7134
   145
    SDLTest_AssertCheck(result == NULL, "Verify result is NULL");  
aschiffler@7134
   146
  }
aschiffler@7134
   147
  
aschiffler@7134
   148
  return TEST_COMPLETED;
aschiffler@7134
   149
}
aschiffler@7134
   150
aschiffler@7134
   151
/* ================= Test References ================== */
aschiffler@7134
   152
aschiffler@7134
   153
/* SysWM test cases */
aschiffler@7134
   154
static const SDLTest_TestCaseReference pixelsTest1 =
aschiffler@7134
   155
		{ (SDLTest_TestCaseFp)pixels_allocFreeFormat, "pixels_allocFreeFormat", "Call to SDL_AllocFormat and SDL_FreeFormat", TEST_ENABLED };
aschiffler@7134
   156
aschiffler@7134
   157
/* Sequence of Pixels test cases */
aschiffler@7134
   158
static const SDLTest_TestCaseReference *pixelsTests[] =  {
aschiffler@7134
   159
	&pixelsTest1, NULL
aschiffler@7134
   160
};
aschiffler@7134
   161
aschiffler@7134
   162
/* Pixels test suite (global) */
aschiffler@7134
   163
SDLTest_TestSuiteReference pixelsTestSuite = {
aschiffler@7134
   164
	"Pixels",
aschiffler@7134
   165
	NULL,
aschiffler@7134
   166
	pixelsTests,
aschiffler@7134
   167
	NULL
aschiffler@7134
   168
};