2015-06-21 17:33:46 +02:00
/**
* Pixels test suite
*/
2022-11-26 20:43:38 -08:00
# include <SDL3/SDL.h>
# include <SDL3/SDL_test.h>
2023-03-08 16:12:45 +01:00
# include "testautomation_suites.h"
2015-06-21 17:33:46 +02:00
/* Test case functions */
/* Definition of all RGB formats used to test pixel conversions */
2024-07-08 14:59:18 -07:00
static const SDL_PixelFormat g_AllFormats [ ] = {
2015-06-21 17:33:46 +02:00
SDL_PIXELFORMAT_INDEX1LSB ,
SDL_PIXELFORMAT_INDEX1MSB ,
2023-11-17 11:43:39 +00:00
SDL_PIXELFORMAT_INDEX2LSB ,
SDL_PIXELFORMAT_INDEX2MSB ,
2015-06-21 17:33:46 +02:00
SDL_PIXELFORMAT_INDEX4LSB ,
SDL_PIXELFORMAT_INDEX4MSB ,
SDL_PIXELFORMAT_INDEX8 ,
SDL_PIXELFORMAT_RGB332 ,
2024-05-27 06:51:39 -07:00
SDL_PIXELFORMAT_XRGB4444 ,
SDL_PIXELFORMAT_XBGR4444 ,
SDL_PIXELFORMAT_XRGB1555 ,
SDL_PIXELFORMAT_XBGR1555 ,
2015-06-21 17:33:46 +02:00
SDL_PIXELFORMAT_ARGB4444 ,
SDL_PIXELFORMAT_RGBA4444 ,
SDL_PIXELFORMAT_ABGR4444 ,
SDL_PIXELFORMAT_BGRA4444 ,
SDL_PIXELFORMAT_ARGB1555 ,
SDL_PIXELFORMAT_RGBA5551 ,
SDL_PIXELFORMAT_ABGR1555 ,
SDL_PIXELFORMAT_BGRA5551 ,
SDL_PIXELFORMAT_RGB565 ,
SDL_PIXELFORMAT_BGR565 ,
SDL_PIXELFORMAT_RGB24 ,
SDL_PIXELFORMAT_BGR24 ,
2023-07-01 14:01:14 -07:00
SDL_PIXELFORMAT_XRGB8888 ,
2015-06-21 17:33:46 +02:00
SDL_PIXELFORMAT_RGBX8888 ,
2023-07-01 14:01:14 -07:00
SDL_PIXELFORMAT_XBGR8888 ,
2015-06-21 17:33:46 +02:00
SDL_PIXELFORMAT_BGRX8888 ,
SDL_PIXELFORMAT_ARGB8888 ,
SDL_PIXELFORMAT_RGBA8888 ,
SDL_PIXELFORMAT_ABGR8888 ,
SDL_PIXELFORMAT_BGRA8888 ,
2023-11-06 00:21:26 -08:00
SDL_PIXELFORMAT_XRGB2101010 ,
SDL_PIXELFORMAT_XBGR2101010 ,
2023-01-07 16:48:51 +01:00
SDL_PIXELFORMAT_ARGB2101010 ,
2023-11-06 00:21:26 -08:00
SDL_PIXELFORMAT_ABGR2101010 ,
2023-01-07 16:48:51 +01:00
SDL_PIXELFORMAT_YV12 ,
SDL_PIXELFORMAT_IYUV ,
SDL_PIXELFORMAT_YUY2 ,
SDL_PIXELFORMAT_UYVY ,
SDL_PIXELFORMAT_YVYU ,
SDL_PIXELFORMAT_NV12 ,
SDL_PIXELFORMAT_NV21
2022-11-30 12:51:59 -08:00
} ;
2023-03-01 22:12:30 +01:00
static const int g_numAllFormats = SDL_arraysize ( g_AllFormats ) ;
2023-01-07 16:48:51 +01:00
2023-03-01 22:12:30 +01:00
static const char * g_AllFormatsVerbose [ ] = {
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_INDEX1LSB " ,
" SDL_PIXELFORMAT_INDEX1MSB " ,
2023-11-17 11:43:39 +00:00
" SDL_PIXELFORMAT_INDEX2LSB " ,
" SDL_PIXELFORMAT_INDEX2MSB " ,
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_INDEX4LSB " ,
" SDL_PIXELFORMAT_INDEX4MSB " ,
" SDL_PIXELFORMAT_INDEX8 " ,
" SDL_PIXELFORMAT_RGB332 " ,
2024-05-27 06:51:39 -07:00
" SDL_PIXELFORMAT_XRGB4444 " ,
" SDL_PIXELFORMAT_XBGR4444 " ,
" SDL_PIXELFORMAT_XRGB1555 " ,
" SDL_PIXELFORMAT_XBGR1555 " ,
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_ARGB4444 " ,
" SDL_PIXELFORMAT_RGBA4444 " ,
" SDL_PIXELFORMAT_ABGR4444 " ,
" SDL_PIXELFORMAT_BGRA4444 " ,
" SDL_PIXELFORMAT_ARGB1555 " ,
" SDL_PIXELFORMAT_RGBA5551 " ,
" SDL_PIXELFORMAT_ABGR1555 " ,
" SDL_PIXELFORMAT_BGRA5551 " ,
" SDL_PIXELFORMAT_RGB565 " ,
" SDL_PIXELFORMAT_BGR565 " ,
" SDL_PIXELFORMAT_RGB24 " ,
" SDL_PIXELFORMAT_BGR24 " ,
2023-07-01 14:01:14 -07:00
" SDL_PIXELFORMAT_XRGB8888 " ,
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_RGBX8888 " ,
2023-07-01 14:01:14 -07:00
" SDL_PIXELFORMAT_XBGR8888 " ,
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_BGRX8888 " ,
" SDL_PIXELFORMAT_ARGB8888 " ,
" SDL_PIXELFORMAT_RGBA8888 " ,
" SDL_PIXELFORMAT_ABGR8888 " ,
" SDL_PIXELFORMAT_BGRA8888 " ,
2023-11-06 00:21:26 -08:00
" SDL_PIXELFORMAT_XRGB2101010 " ,
" SDL_PIXELFORMAT_XBGR2101010 " ,
2023-01-07 16:48:51 +01:00
" SDL_PIXELFORMAT_ARGB2101010 " ,
2023-11-06 00:21:26 -08:00
" SDL_PIXELFORMAT_ABGR2101010 " ,
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_YV12 " ,
" SDL_PIXELFORMAT_IYUV " ,
" SDL_PIXELFORMAT_YUY2 " ,
" SDL_PIXELFORMAT_UYVY " ,
" SDL_PIXELFORMAT_YVYU " ,
" SDL_PIXELFORMAT_NV12 " ,
" SDL_PIXELFORMAT_NV21 "
2022-11-30 12:51:59 -08:00
} ;
2015-06-21 17:33:46 +02:00
/* Definition of some invalid formats for negative tests */
2022-12-29 22:58:16 +01:00
static Uint32 g_invalidPixelFormats [ ] = {
2023-01-07 18:56:50 +01:00
SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_1010102 + 1 , 32 , 4 ) ,
SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_1010102 + 2 , 32 , 4 )
2022-11-30 12:51:59 -08:00
} ;
2023-03-01 22:12:30 +01:00
static const int g_numInvalidPixelFormats = SDL_arraysize ( g_invalidPixelFormats ) ;
static const char * g_invalidPixelFormatsVerbose [ ] = {
2015-06-21 17:33:46 +02:00
" SDL_PIXELFORMAT_UNKNOWN " ,
" SDL_PIXELFORMAT_UNKNOWN "
2022-11-30 12:51:59 -08:00
} ;
2015-06-21 17:33:46 +02:00
2024-07-14 10:43:00 -07:00
/* Verify the pixel formats are laid out as expected */
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX1LSB_FORMAT , SDL_PIXELFORMAT_INDEX1LSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX1 , SDL_BITMAPORDER_4321 , 0 , 1 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX1MSB_FORMAT , SDL_PIXELFORMAT_INDEX1MSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX1 , SDL_BITMAPORDER_1234 , 0 , 1 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX2LSB_FORMAT , SDL_PIXELFORMAT_INDEX2LSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX2 , SDL_BITMAPORDER_4321 , 0 , 2 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX2MSB_FORMAT , SDL_PIXELFORMAT_INDEX2MSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX2 , SDL_BITMAPORDER_1234 , 0 , 2 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX4LSB_FORMAT , SDL_PIXELFORMAT_INDEX4LSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX4 , SDL_BITMAPORDER_4321 , 0 , 4 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX4MSB_FORMAT , SDL_PIXELFORMAT_INDEX4MSB = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX4 , SDL_BITMAPORDER_1234 , 0 , 4 , 0 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_INDEX8_FORMAT , SDL_PIXELFORMAT_INDEX8 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_INDEX8 , 0 , 0 , 8 , 1 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB332_FORMAT , SDL_PIXELFORMAT_RGB332 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED8 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_332 , 8 , 1 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XRGB4444_FORMAT , SDL_PIXELFORMAT_XRGB4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_4444 , 12 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XBGR4444_FORMAT , SDL_PIXELFORMAT_XBGR4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XBGR , SDL_PACKEDLAYOUT_4444 , 12 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XRGB1555_FORMAT , SDL_PIXELFORMAT_XRGB1555 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_1555 , 15 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XBGR1555_FORMAT , SDL_PIXELFORMAT_XBGR1555 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XBGR , SDL_PACKEDLAYOUT_1555 , 15 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB4444_FORMAT , SDL_PIXELFORMAT_ARGB4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_ARGB , SDL_PACKEDLAYOUT_4444 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA4444_FORMAT , SDL_PIXELFORMAT_RGBA4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_RGBA , SDL_PACKEDLAYOUT_4444 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR4444_FORMAT , SDL_PIXELFORMAT_ABGR4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_4444 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA4444_FORMAT , SDL_PIXELFORMAT_BGRA4444 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_BGRA , SDL_PACKEDLAYOUT_4444 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB1555_FORMAT , SDL_PIXELFORMAT_ARGB1555 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_ARGB , SDL_PACKEDLAYOUT_1555 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA5551_FORMAT , SDL_PIXELFORMAT_RGBA5551 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_RGBA , SDL_PACKEDLAYOUT_5551 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR1555_FORMAT , SDL_PIXELFORMAT_ABGR1555 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_1555 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA5551_FORMAT , SDL_PIXELFORMAT_BGRA5551 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_BGRA , SDL_PACKEDLAYOUT_5551 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB565_FORMAT , SDL_PIXELFORMAT_RGB565 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_565 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGR565_FORMAT , SDL_PIXELFORMAT_BGR565 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED16 , SDL_PACKEDORDER_XBGR , SDL_PACKEDLAYOUT_565 , 16 , 2 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB24_FORMAT , SDL_PIXELFORMAT_RGB24 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU8 , SDL_ARRAYORDER_RGB , 0 , 24 , 3 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGR24_FORMAT , SDL_PIXELFORMAT_BGR24 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU8 , SDL_ARRAYORDER_BGR , 0 , 24 , 3 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XRGB8888_FORMAT , SDL_PIXELFORMAT_XRGB8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_8888 , 24 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBX8888_FORMAT , SDL_PIXELFORMAT_RGBX8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_RGBX , SDL_PACKEDLAYOUT_8888 , 24 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XBGR8888_FORMAT , SDL_PIXELFORMAT_XBGR8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_XBGR , SDL_PACKEDLAYOUT_8888 , 24 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRX8888_FORMAT , SDL_PIXELFORMAT_BGRX8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_BGRX , SDL_PACKEDLAYOUT_8888 , 24 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB8888_FORMAT , SDL_PIXELFORMAT_ARGB8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ARGB , SDL_PACKEDLAYOUT_8888 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA8888_FORMAT , SDL_PIXELFORMAT_RGBA8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_RGBA , SDL_PACKEDLAYOUT_8888 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR8888_FORMAT , SDL_PIXELFORMAT_ABGR8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_8888 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA8888_FORMAT , SDL_PIXELFORMAT_BGRA8888 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_BGRA , SDL_PACKEDLAYOUT_8888 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XRGB2101010_FORMAT , SDL_PIXELFORMAT_XRGB2101010 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_XRGB , SDL_PACKEDLAYOUT_2101010 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_XBGR2101010_FORMAT , SDL_PIXELFORMAT_XBGR2101010 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_XBGR , SDL_PACKEDLAYOUT_2101010 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB2101010_FORMAT , SDL_PIXELFORMAT_ARGB2101010 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ARGB , SDL_PACKEDLAYOUT_2101010 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR2101010_FORMAT , SDL_PIXELFORMAT_ABGR2101010 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_PACKED32 , SDL_PACKEDORDER_ABGR , SDL_PACKEDLAYOUT_2101010 , 32 , 4 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB48_FORMAT , SDL_PIXELFORMAT_RGB48 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_RGB , 0 , 48 , 6 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGR48_FORMAT , SDL_PIXELFORMAT_BGR48 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_BGR , 0 , 48 , 6 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA64_FORMAT , SDL_PIXELFORMAT_RGBA64 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_RGBA , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB64_FORMAT , SDL_PIXELFORMAT_ARGB64 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_ARGB , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA64_FORMAT , SDL_PIXELFORMAT_BGRA64 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_BGRA , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR64_FORMAT , SDL_PIXELFORMAT_ABGR64 = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYU16 , SDL_ARRAYORDER_ABGR , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB48_FLOAT_FORMAT , SDL_PIXELFORMAT_RGB48_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_RGB , 0 , 48 , 6 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGR48_FLOAT_FORMAT , SDL_PIXELFORMAT_BGR48_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_BGR , 0 , 48 , 6 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA64_FLOAT_FORMAT , SDL_PIXELFORMAT_RGBA64_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_RGBA , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB64_FLOAT_FORMAT , SDL_PIXELFORMAT_ARGB64_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_ARGB , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA64_FLOAT_FORMAT , SDL_PIXELFORMAT_BGRA64_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_BGRA , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR64_FLOAT_FORMAT , SDL_PIXELFORMAT_ABGR64_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF16 , SDL_ARRAYORDER_ABGR , 0 , 64 , 8 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGB96_FLOAT_FORMAT , SDL_PIXELFORMAT_RGB96_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_RGB , 0 , 96 , 12 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGR96_FLOAT_FORMAT , SDL_PIXELFORMAT_BGR96_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_BGR , 0 , 96 , 12 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_RGBA128_FLOAT_FORMAT , SDL_PIXELFORMAT_RGBA128_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_RGBA , 0 , 128 , 16 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ARGB128_FLOAT_FORMAT , SDL_PIXELFORMAT_ARGB128_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_ARGB , 0 , 128 , 16 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_BGRA128_FLOAT_FORMAT , SDL_PIXELFORMAT_BGRA128_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_BGRA , 0 , 128 , 16 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_ABGR128_FLOAT_FORMAT , SDL_PIXELFORMAT_ABGR128_FLOAT = = SDL_DEFINE_PIXELFORMAT ( SDL_PIXELTYPE_ARRAYF32 , SDL_ARRAYORDER_ABGR , 0 , 128 , 16 ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_YV12_FORMAT , SDL_PIXELFORMAT_YV12 = = SDL_DEFINE_PIXELFOURCC ( ' Y ' , ' V ' , ' 1 ' , ' 2 ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_IYUV_FORMAT , SDL_PIXELFORMAT_IYUV = = SDL_DEFINE_PIXELFOURCC ( ' I ' , ' Y ' , ' U ' , ' V ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_YUY2_FORMAT , SDL_PIXELFORMAT_YUY2 = = SDL_DEFINE_PIXELFOURCC ( ' Y ' , ' U ' , ' Y ' , ' 2 ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_UYVY_FORMAT , SDL_PIXELFORMAT_UYVY = = SDL_DEFINE_PIXELFOURCC ( ' U ' , ' Y ' , ' V ' , ' Y ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_YVYU_FORMAT , SDL_PIXELFORMAT_YVYU = = SDL_DEFINE_PIXELFOURCC ( ' Y ' , ' V ' , ' Y ' , ' U ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_NV12_FORMAT , SDL_PIXELFORMAT_NV12 = = SDL_DEFINE_PIXELFOURCC ( ' N ' , ' V ' , ' 1 ' , ' 2 ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_NV21_FORMAT , SDL_PIXELFORMAT_NV21 = = SDL_DEFINE_PIXELFOURCC ( ' N ' , ' V ' , ' 2 ' , ' 1 ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_P010_FORMAT , SDL_PIXELFORMAT_P010 = = SDL_DEFINE_PIXELFOURCC ( ' P ' , ' 0 ' , ' 1 ' , ' 0 ' ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_PIXELFORMAT_EXTERNAL_OES_FORMAT , SDL_PIXELFORMAT_EXTERNAL_OES = = SDL_DEFINE_PIXELFOURCC ( ' O ' , ' E ' , ' S ' , ' ' ) ) ;
/* Verify the colorspaces are laid out as expected */
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_SRGB_FORMAT , SDL_COLORSPACE_SRGB = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_RGB ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT709 ,
SDL_TRANSFER_CHARACTERISTICS_SRGB ,
SDL_MATRIX_COEFFICIENTS_IDENTITY ,
SDL_CHROMA_LOCATION_NONE ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_SRGB_LINEAR_FORMAT , SDL_COLORSPACE_SRGB_LINEAR = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_RGB ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT709 ,
SDL_TRANSFER_CHARACTERISTICS_LINEAR ,
SDL_MATRIX_COEFFICIENTS_IDENTITY ,
SDL_CHROMA_LOCATION_NONE ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_HDR10_FORMAT , SDL_COLORSPACE_HDR10 = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_RGB ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT2020 ,
SDL_TRANSFER_CHARACTERISTICS_PQ ,
SDL_MATRIX_COEFFICIENTS_IDENTITY ,
SDL_CHROMA_LOCATION_NONE ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_JPEG_FORMAT , SDL_COLORSPACE_JPEG = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT709 ,
SDL_TRANSFER_CHARACTERISTICS_BT601 ,
SDL_MATRIX_COEFFICIENTS_BT601 ,
SDL_CHROMA_LOCATION_NONE ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT601_LIMITED_FORMAT , SDL_COLORSPACE_BT601_LIMITED = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_LIMITED ,
SDL_COLOR_PRIMARIES_BT601 ,
SDL_TRANSFER_CHARACTERISTICS_BT601 ,
SDL_MATRIX_COEFFICIENTS_BT601 ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT601_FULL_FORMAT , SDL_COLORSPACE_BT601_FULL = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT601 ,
SDL_TRANSFER_CHARACTERISTICS_BT601 ,
SDL_MATRIX_COEFFICIENTS_BT601 ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT709_LIMITED_FORMAT , SDL_COLORSPACE_BT709_LIMITED = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_LIMITED ,
SDL_COLOR_PRIMARIES_BT709 ,
SDL_TRANSFER_CHARACTERISTICS_BT709 ,
SDL_MATRIX_COEFFICIENTS_BT709 ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT709_FULL_FORMAT , SDL_COLORSPACE_BT709_FULL = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT709 ,
SDL_TRANSFER_CHARACTERISTICS_BT709 ,
SDL_MATRIX_COEFFICIENTS_BT709 ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT2020_LIMITED_FORMAT , SDL_COLORSPACE_BT2020_LIMITED = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_LIMITED ,
SDL_COLOR_PRIMARIES_BT2020 ,
SDL_TRANSFER_CHARACTERISTICS_PQ ,
SDL_MATRIX_COEFFICIENTS_BT2020_NCL ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
SDL_COMPILE_TIME_ASSERT ( SDL_COLORSPACE_BT2020_FULL_FORMAT , SDL_COLORSPACE_BT2020_FULL = =
SDL_DEFINE_COLORSPACE ( SDL_COLOR_TYPE_YCBCR ,
SDL_COLOR_RANGE_FULL ,
SDL_COLOR_PRIMARIES_BT2020 ,
SDL_TRANSFER_CHARACTERISTICS_PQ ,
SDL_MATRIX_COEFFICIENTS_BT2020_NCL ,
SDL_CHROMA_LOCATION_LEFT ) ) ;
2015-06-21 17:33:46 +02:00
/* Test case functions */
/**
2024-07-08 14:59:18 -07:00
* Call to SDL_GetPixelFormatDetails
2015-06-21 17:33:46 +02:00
*/
2024-07-08 14:59:18 -07:00
static int pixels_getPixelFormatDetails ( void * arg )
2015-06-21 17:33:46 +02:00
{
2022-11-30 12:51:59 -08:00
const char * unknownFormat = " SDL_PIXELFORMAT_UNKNOWN " ;
2023-03-17 10:13:17 +01:00
const char * expectedError = " Unknown pixel format " ;
2022-11-30 12:51:59 -08:00
const char * error ;
int i ;
2024-07-08 14:59:18 -07:00
SDL_PixelFormat format ;
2022-11-30 12:51:59 -08:00
Uint32 masks ;
2024-07-08 14:59:18 -07:00
const SDL_PixelFormatDetails * result ;
2022-11-30 12:51:59 -08:00
/* Blank/unknown format */
2024-03-06 19:59:05 +01:00
format = SDL_PIXELFORMAT_UNKNOWN ;
SDLTest_Log ( " Pixel Format: %s (%d) " , unknownFormat , format ) ;
2015-06-21 17:33:46 +02:00
/* Allocate format */
2024-07-08 14:59:18 -07:00
result = SDL_GetPixelFormatDetails ( format ) ;
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatDetails() " ) ;
2015-06-21 17:33:46 +02:00
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
2024-03-06 19:59:05 +01:00
SDLTest_AssertCheck ( result - > format = = format , " Verify value of result.format; expected: %d, got %d " , format , result - > format ) ;
2024-02-11 08:03:26 -08:00
SDLTest_AssertCheck ( result - > bits_per_pixel = = 0 ,
" Verify value of result.bits_per_pixel; expected: 0, got %u " ,
result - > bits_per_pixel ) ;
SDLTest_AssertCheck ( result - > bytes_per_pixel = = 0 ,
" Verify value of result.bytes_per_pixel; expected: 0, got %u " ,
result - > bytes_per_pixel ) ;
2022-11-30 12:51:59 -08:00
masks = result - > Rmask | result - > Gmask | result - > Bmask | result - > Amask ;
SDLTest_AssertCheck ( masks = = 0 , " Verify value of result.[RGBA]mask combined; expected: 0, got % " SDL_PRIu32 , masks ) ;
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
/* RGB formats */
2023-01-07 16:48:51 +01:00
for ( i = 0 ; i < g_numAllFormats ; i + + ) {
format = g_AllFormats [ i ] ;
2024-03-06 19:59:05 +01:00
SDLTest_Log ( " Pixel Format: %s (%d) " , g_AllFormatsVerbose [ i ] , format ) ;
2022-11-30 12:51:59 -08:00
/* Allocate format */
2024-07-08 14:59:18 -07:00
result = SDL_GetPixelFormatDetails ( format ) ;
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatDetails() " ) ;
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
2024-03-06 19:59:05 +01:00
SDLTest_AssertCheck ( result - > format = = format , " Verify value of result.format; expected: %d, got %d " , format , result - > format ) ;
2023-08-25 08:06:08 -07:00
if ( ! SDL_ISPIXELFORMAT_FOURCC ( format ) ) {
2024-02-11 08:03:26 -08:00
SDLTest_AssertCheck ( result - > bits_per_pixel > 0 ,
" Verify value of result.bits_per_pixel; expected: >0, got %u " ,
result - > bits_per_pixel ) ;
SDLTest_AssertCheck ( result - > bytes_per_pixel > 0 ,
" Verify value of result.bytes_per_pixel; expected: >0, got %u " ,
result - > bytes_per_pixel ) ;
2023-08-25 08:06:08 -07:00
if ( ! SDL_ISPIXELFORMAT_INDEXED ( format ) ) {
masks = result - > Rmask | result - > Gmask | result - > Bmask | result - > Amask ;
SDLTest_AssertCheck ( masks > 0 , " Verify value of result.[RGBA]mask combined; expected: >0, got % " SDL_PRIu32 , masks ) ;
2024-07-08 14:59:18 -07:00
if ( SDL_ISPIXELFORMAT_10BIT ( format ) ) {
SDLTest_AssertCheck ( result - > Rbits = = 10 & & result - > Gbits = = 10 & & result - > Bbits = = 10 , " Verify value of result.[RGB]bits; expected: 10, got %d/%d/%d " , result - > Rbits , result - > Gbits , result - > Bbits ) ;
} else if ( SDL_BITSPERPIXEL ( format ) = = 32 ) {
SDLTest_AssertCheck ( result - > Rbits = = 8 & & result - > Gbits = = 8 & & result - > Bbits = = 8 , " Verify value of result.[RGB]bits; expected: 8, got %d/%d/%d " , result - > Rbits , result - > Gbits , result - > Bbits ) ;
}
2023-08-25 08:06:08 -07:00
}
2022-11-30 12:51:59 -08:00
}
}
}
2015-06-21 17:33:46 +02:00
2022-11-30 12:51:59 -08:00
/* Negative cases */
/* Invalid Formats */
2022-12-29 22:58:16 +01:00
for ( i = 0 ; i < g_numInvalidPixelFormats ; i + + ) {
2022-11-30 12:51:59 -08:00
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
2022-12-29 22:58:16 +01:00
format = g_invalidPixelFormats [ i ] ;
2024-07-08 14:59:18 -07:00
result = SDL_GetPixelFormatDetails ( format ) ;
2024-07-11 13:29:45 +02:00
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatDetails(%d) " , format ) ;
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result = = NULL , " Verify result is NULL " ) ;
error = SDL_GetError ( ) ;
SDLTest_AssertPass ( " Call to SDL_GetError() " ) ;
SDLTest_AssertCheck ( error ! = NULL , " Validate that error message was not NULL " ) ;
if ( error ! = NULL ) {
2023-03-17 10:13:17 +01:00
SDLTest_AssertCheck ( SDL_strcmp ( error , expectedError ) = = 0 ,
" Validate error message, expected: '%s', got: '%s' " , expectedError , error ) ;
2022-11-30 12:51:59 -08:00
}
}
2015-06-21 17:33:46 +02:00
2022-11-30 12:51:59 -08:00
return TEST_COMPLETED ;
2015-06-21 17:33:46 +02:00
}
/**
2023-11-06 10:26:06 -05:00
* Call to SDL_GetPixelFormatName
2015-06-21 17:33:46 +02:00
*
2023-02-02 00:21:53 +01:00
* \ sa SDL_GetPixelFormatName
2015-06-21 17:33:46 +02:00
*/
2023-03-01 22:12:30 +01:00
static int pixels_getPixelFormatName ( void * arg )
2015-06-21 17:33:46 +02:00
{
2022-11-30 12:51:59 -08:00
const char * unknownFormat = " SDL_PIXELFORMAT_UNKNOWN " ;
const char * error ;
int i ;
2024-07-08 14:59:18 -07:00
SDL_PixelFormat format ;
2022-11-30 12:51:59 -08:00
const char * result ;
/* Blank/undefined format */
2024-03-06 19:59:05 +01:00
format = SDL_PIXELFORMAT_UNKNOWN ;
SDLTest_Log ( " RGB Format: %s (%d) " , unknownFormat , format ) ;
2015-06-21 17:33:46 +02:00
/* Get name of format */
2021-11-20 01:02:02 +03:00
result = SDL_GetPixelFormatName ( format ) ;
2015-06-21 17:33:46 +02:00
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatName() " ) ;
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result [ 0 ] ! = ' \0 ' , " Verify result is non-empty " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( result , unknownFormat ) = = 0 ,
" Verify result text; expected: %s, got %s " , unknownFormat , result ) ;
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
/* RGB formats */
2023-01-07 16:48:51 +01:00
for ( i = 0 ; i < g_numAllFormats ; i + + ) {
format = g_AllFormats [ i ] ;
2024-03-06 19:59:05 +01:00
SDLTest_Log ( " RGB Format: %s (%d) " , g_AllFormatsVerbose [ i ] , format ) ;
2022-11-30 12:51:59 -08:00
/* Get name of format */
result = SDL_GetPixelFormatName ( format ) ;
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatName() " ) ;
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
SDLTest_AssertCheck ( result [ 0 ] ! = ' \0 ' , " Verify result is non-empty " ) ;
2023-01-07 16:48:51 +01:00
SDLTest_AssertCheck ( SDL_strcmp ( result , g_AllFormatsVerbose [ i ] ) = = 0 ,
" Verify result text; expected: %s, got %s " , g_AllFormatsVerbose [ i ] , result ) ;
2022-11-30 12:51:59 -08:00
}
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
/* Negative cases */
2015-06-21 17:33:46 +02:00
2022-11-30 12:51:59 -08:00
/* Invalid Formats */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
2022-12-29 22:58:16 +01:00
for ( i = 0 ; i < g_numInvalidPixelFormats ; i + + ) {
format = g_invalidPixelFormats [ i ] ;
2022-11-30 12:51:59 -08:00
result = SDL_GetPixelFormatName ( format ) ;
2024-03-06 19:59:05 +01:00
SDLTest_AssertPass ( " Call to SDL_GetPixelFormatName(%d) " , format ) ;
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
SDLTest_AssertCheck ( result [ 0 ] ! = ' \0 ' ,
" Verify result is non-empty; got: %s " , result ) ;
2022-12-29 22:58:16 +01:00
SDLTest_AssertCheck ( SDL_strcmp ( result , g_invalidPixelFormatsVerbose [ i ] ) = = 0 ,
" Validate name is UNKNOWN, expected: '%s', got: '%s' " , g_invalidPixelFormatsVerbose [ i ] , result ) ;
2022-11-30 12:51:59 -08:00
}
error = SDL_GetError ( ) ;
SDLTest_AssertPass ( " Call to SDL_GetError() " ) ;
SDLTest_AssertCheck ( error = = NULL | | error [ 0 ] = = ' \0 ' , " Validate that error message is empty " ) ;
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
return TEST_COMPLETED ;
2015-06-21 17:33:46 +02:00
}
/**
2023-11-06 10:26:06 -05:00
* Call to SDL_CreatePalette and SDL_DestroyPalette
2015-06-21 17:33:46 +02:00
*
2023-02-02 00:21:53 +01:00
* \ sa SDL_CreatePalette
* \ sa SDL_DestroyPalette
2015-06-21 17:33:46 +02:00
*/
2023-03-01 22:12:30 +01:00
static int pixels_allocFreePalette ( void * arg )
2015-06-21 17:33:46 +02:00
{
2023-03-17 10:13:17 +01:00
const char * expectedError = " Parameter 'ncolors' is invalid " ;
2022-11-30 12:51:59 -08:00
const char * error ;
int variation ;
int i ;
int ncolors ;
SDL_Palette * result ;
/* Allocate palette */
for ( variation = 1 ; variation < = 3 ; variation + + ) {
switch ( variation ) {
/* Just one color */
default :
case 1 :
ncolors = 1 ;
break ;
/* Two colors */
case 2 :
ncolors = 2 ;
break ;
/* More than two colors */
case 3 :
ncolors = SDLTest_RandomIntegerInRange ( 8 , 16 ) ;
break ;
}
2022-12-27 06:08:13 -08:00
result = SDL_CreatePalette ( ncolors ) ;
SDLTest_AssertPass ( " Call to SDL_CreatePalette(%d) " , ncolors ) ;
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result ! = NULL , " Verify result is not NULL " ) ;
if ( result ! = NULL ) {
SDLTest_AssertCheck ( result - > ncolors = = ncolors , " Verify value of result.ncolors; expected: %u, got %u " , ncolors , result - > ncolors ) ;
if ( result - > ncolors > 0 ) {
SDLTest_AssertCheck ( result - > colors ! = NULL , " Verify value of result.colors is not NULL " ) ;
if ( result - > colors ! = NULL ) {
for ( i = 0 ; i < result - > ncolors ; i + + ) {
SDLTest_AssertCheck ( result - > colors [ i ] . r = = 255 , " Verify value of result.colors[%d].r; expected: 255, got %u " , i , result - > colors [ i ] . r ) ;
SDLTest_AssertCheck ( result - > colors [ i ] . g = = 255 , " Verify value of result.colors[%d].g; expected: 255, got %u " , i , result - > colors [ i ] . g ) ;
SDLTest_AssertCheck ( result - > colors [ i ] . b = = 255 , " Verify value of result.colors[%d].b; expected: 255, got %u " , i , result - > colors [ i ] . b ) ;
}
}
}
/* Deallocate again */
2022-12-27 06:08:13 -08:00
SDL_DestroyPalette ( result ) ;
SDLTest_AssertPass ( " Call to SDL_DestroyPalette() " ) ;
2022-11-30 12:51:59 -08:00
}
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
/* Negative cases */
/* Invalid number of colors */
for ( ncolors = 0 ; ncolors > - 3 ; ncolors - - ) {
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
2022-12-27 06:08:13 -08:00
result = SDL_CreatePalette ( ncolors ) ;
SDLTest_AssertPass ( " Call to SDL_CreatePalette(%d) " , ncolors ) ;
2022-11-30 12:51:59 -08:00
SDLTest_AssertCheck ( result = = NULL , " Verify result is NULL " ) ;
error = SDL_GetError ( ) ;
SDLTest_AssertPass ( " Call to SDL_GetError() " ) ;
SDLTest_AssertCheck ( error ! = NULL , " Validate that error message was not NULL " ) ;
if ( error ! = NULL ) {
2023-03-17 10:13:17 +01:00
SDLTest_AssertCheck ( SDL_strcmp ( error , expectedError ) = = 0 ,
" Validate error message, expected: '%s', got: '%s' " , expectedError , error ) ;
2022-11-30 12:51:59 -08:00
}
2015-06-21 17:33:46 +02:00
}
2022-11-30 12:51:59 -08:00
/* Invalid free pointer */
2015-06-21 17:33:46 +02:00
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
2022-12-27 06:08:13 -08:00
SDL_DestroyPalette ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_DestroyPalette(NULL) " ) ;
2015-06-21 17:33:46 +02:00
error = SDL_GetError ( ) ;
SDLTest_AssertPass ( " Call to SDL_GetError() " ) ;
2023-03-17 10:13:17 +01:00
SDLTest_AssertCheck ( error = = NULL | | error [ 0 ] = = ' \0 ' , " Validate that error message is empty " ) ;
2022-11-30 12:51:59 -08:00
return TEST_COMPLETED ;
2015-06-21 17:33:46 +02:00
}
/* ================= Test References ================== */
/* Pixels test cases */
2022-11-30 12:51:59 -08:00
static const SDLTest_TestCaseReference pixelsTest1 = {
2024-09-04 23:54:56 +02:00
pixels_getPixelFormatDetails , " pixels_allocFreeFormat " , " Call to SDL_GetPixelFormatDetails " , TEST_ENABLED
2022-11-30 12:51:59 -08:00
} ;
2015-06-21 17:33:46 +02:00
2022-11-30 12:51:59 -08:00
static const SDLTest_TestCaseReference pixelsTest2 = {
2024-09-04 23:54:56 +02:00
pixels_allocFreePalette , " pixels_allocFreePalette " , " Call to SDL_CreatePalette and SDL_DestroyPalette " , TEST_ENABLED
2022-11-30 12:51:59 -08:00
} ;
2015-06-21 17:33:46 +02:00
2022-11-30 12:51:59 -08:00
static const SDLTest_TestCaseReference pixelsTest3 = {
2024-09-04 23:54:56 +02:00
pixels_getPixelFormatName , " pixels_getPixelFormatName " , " Call to SDL_GetPixelFormatName " , TEST_ENABLED
2022-11-30 12:51:59 -08:00
} ;
2015-06-21 17:33:46 +02:00
/* Sequence of Pixels test cases */
2022-11-30 12:51:59 -08:00
static const SDLTest_TestCaseReference * pixelsTests [ ] = {
2022-11-25 16:57:07 -04:00
& pixelsTest1 , & pixelsTest2 , & pixelsTest3 , NULL
2015-06-21 17:33:46 +02:00
} ;
/* Pixels test suite (global) */
SDLTest_TestSuiteReference pixelsTestSuite = {
" Pixels " ,
NULL ,
pixelsTests ,
NULL
} ;