2015-06-21 23:33:46 +08:00
/**
* Video test suite
*/
2022-11-27 12:43:38 +08:00
# include <SDL3/SDL.h>
# include <SDL3/SDL_test.h>
2023-03-08 23:12:45 +08:00
# include "testautomation_suites.h"
2015-06-21 23:33:46 +08:00
/* Private helpers */
2023-02-02 07:21:53 +08:00
/**
2015-06-21 23:33:46 +08:00
* Create a test window
*/
2022-12-30 05:58:16 +08:00
static SDL_Window * createVideoSuiteTestWindow ( const char * title )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_Window * window ;
2023-03-06 06:44:38 +08:00
int w , h ;
2022-12-01 04:51:59 +08:00
SDL_WindowFlags flags ;
/* Standard window */
w = SDLTest_RandomIntegerInRange ( 320 , 1024 ) ;
h = SDLTest_RandomIntegerInRange ( 320 , 768 ) ;
2022-12-29 03:17:55 +08:00
flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS ;
2022-12-01 04:51:59 +08:00
2023-03-06 06:44:38 +08:00
window = SDL_CreateWindow ( title , w , h , flags ) ;
SDLTest_AssertPass ( " Call to SDL_CreateWindow('Title',%d,%d,%d) " , w , h , flags ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( window ! = NULL , " Validate that returned window struct is not NULL " ) ;
return window ;
2015-06-21 23:33:46 +08:00
}
2023-02-02 07:21:53 +08:00
/**
2015-06-21 23:33:46 +08:00
* Destroy test window
*/
2022-12-30 05:58:16 +08:00
static void destroyVideoSuiteTestWindow ( SDL_Window * window )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
if ( window ! = NULL ) {
SDL_DestroyWindow ( window ) ;
window = NULL ;
SDLTest_AssertPass ( " Call to SDL_DestroyWindow() " ) ;
}
2015-06-21 23:33:46 +08:00
}
/* Test case functions */
/**
2023-02-02 07:21:53 +08:00
* \ brief Enable and disable screensaver while checking state
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_enableDisableScreensaver ( void * arg )
2015-06-21 23:33:46 +08:00
{
SDL_bool initialResult ;
SDL_bool result ;
/* Get current state and proceed according to current state */
2022-12-29 11:34:01 +08:00
initialResult = SDL_ScreenSaverEnabled ( ) ;
SDLTest_AssertPass ( " Call to SDL_ScreenSaverEnabled() " ) ;
2015-06-21 23:33:46 +08:00
if ( initialResult = = SDL_TRUE ) {
2022-12-01 04:51:59 +08:00
/* Currently enabled: disable first, then enable again */
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Disable screensaver and check */
SDL_DisableScreenSaver ( ) ;
SDLTest_AssertPass ( " Call to SDL_DisableScreenSaver() " ) ;
2022-12-29 11:34:01 +08:00
result = SDL_ScreenSaverEnabled ( ) ;
SDLTest_AssertPass ( " Call to SDL_ScreenSaverEnabled() " ) ;
SDLTest_AssertCheck ( result = = SDL_FALSE , " Verify result from SDL_ScreenSaverEnabled, expected: %i, got: %i " , SDL_FALSE , result ) ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Enable screensaver and check */
SDL_EnableScreenSaver ( ) ;
SDLTest_AssertPass ( " Call to SDL_EnableScreenSaver() " ) ;
2022-12-29 11:34:01 +08:00
result = SDL_ScreenSaverEnabled ( ) ;
SDLTest_AssertPass ( " Call to SDL_ScreenSaverEnabled() " ) ;
SDLTest_AssertCheck ( result = = SDL_TRUE , " Verify result from SDL_ScreenSaverEnabled, expected: %i, got: %i " , SDL_TRUE , result ) ;
2015-06-21 23:33:46 +08:00
} else {
2022-12-01 04:51:59 +08:00
/* Currently disabled: enable first, then disable again */
/* Enable screensaver and check */
SDL_EnableScreenSaver ( ) ;
SDLTest_AssertPass ( " Call to SDL_EnableScreenSaver() " ) ;
2022-12-29 11:34:01 +08:00
result = SDL_ScreenSaverEnabled ( ) ;
SDLTest_AssertPass ( " Call to SDL_ScreenSaverEnabled() " ) ;
SDLTest_AssertCheck ( result = = SDL_TRUE , " Verify result from SDL_ScreenSaverEnabled, expected: %i, got: %i " , SDL_TRUE , result ) ;
2022-12-01 04:51:59 +08:00
/* Disable screensaver and check */
SDL_DisableScreenSaver ( ) ;
SDLTest_AssertPass ( " Call to SDL_DisableScreenSaver() " ) ;
2022-12-29 11:34:01 +08:00
result = SDL_ScreenSaverEnabled ( ) ;
SDLTest_AssertPass ( " Call to SDL_ScreenSaverEnabled() " ) ;
SDLTest_AssertCheck ( result = = SDL_FALSE , " Verify result from SDL_ScreenSaverEnabled, expected: %i, got: %i " , SDL_FALSE , result ) ;
2015-06-21 23:33:46 +08:00
}
return TEST_COMPLETED ;
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_CreateWindow function using different sizes
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_createWindowVariousSizes ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_Window * window ;
const char * title = " video_createWindowVariousSizes Test Window " ;
2023-03-08 23:12:45 +08:00
int w = 0 , h = 0 ;
2022-12-01 04:51:59 +08:00
int wVariation , hVariation ;
for ( wVariation = 0 ; wVariation < 3 ; wVariation + + ) {
for ( hVariation = 0 ; hVariation < 3 ; hVariation + + ) {
switch ( wVariation ) {
case 0 :
/* Width of 1 */
w = 1 ;
break ;
case 1 :
/* Random "normal" width */
w = SDLTest_RandomIntegerInRange ( 320 , 1920 ) ;
break ;
case 2 :
/* Random "large" width */
w = SDLTest_RandomIntegerInRange ( 2048 , 4095 ) ;
break ;
}
switch ( hVariation ) {
case 0 :
/* Height of 1 */
h = 1 ;
break ;
case 1 :
/* Random "normal" height */
h = SDLTest_RandomIntegerInRange ( 320 , 1080 ) ;
break ;
case 2 :
/* Random "large" height */
h = SDLTest_RandomIntegerInRange ( 2048 , 4095 ) ;
break ;
}
2023-03-06 06:44:38 +08:00
window = SDL_CreateWindow ( title , w , h , 0 ) ;
SDLTest_AssertPass ( " Call to SDL_CreateWindow('Title',%d,%d,SHOWN) " , w , h ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( window ! = NULL , " Validate that returned window struct is not NULL " ) ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
}
}
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_CreateWindow function using different flags
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_createWindowVariousFlags ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_Window * window ;
const char * title = " video_createWindowVariousFlags Test Window " ;
2023-03-06 06:44:38 +08:00
int w , h ;
2022-12-01 04:51:59 +08:00
int fVariation ;
SDL_WindowFlags flags ;
/* Standard window */
w = SDLTest_RandomIntegerInRange ( 320 , 1024 ) ;
h = SDLTest_RandomIntegerInRange ( 320 , 768 ) ;
2023-02-02 03:30:28 +08:00
for ( fVariation = 1 ; fVariation < 14 ; fVariation + + ) {
2022-12-01 04:51:59 +08:00
switch ( fVariation ) {
default :
case 1 :
2023-02-02 03:30:28 +08:00
flags = SDL_WINDOW_FULLSCREEN ;
2022-12-01 04:51:59 +08:00
/* Skip - blanks screen; comment out next line to run test */
continue ;
break ;
case 2 :
flags = SDL_WINDOW_OPENGL ;
break ;
case 3 :
2022-12-29 03:17:55 +08:00
flags = 0 ;
2022-12-01 04:51:59 +08:00
break ;
case 4 :
flags = SDL_WINDOW_HIDDEN ;
break ;
case 5 :
flags = SDL_WINDOW_BORDERLESS ;
break ;
case 6 :
flags = SDL_WINDOW_RESIZABLE ;
break ;
case 7 :
flags = SDL_WINDOW_MINIMIZED ;
break ;
case 8 :
flags = SDL_WINDOW_MAXIMIZED ;
break ;
case 9 :
flags = SDL_WINDOW_MOUSE_GRABBED ;
break ;
case 10 :
flags = SDL_WINDOW_INPUT_FOCUS ;
break ;
case 11 :
flags = SDL_WINDOW_MOUSE_FOCUS ;
break ;
case 12 :
flags = SDL_WINDOW_FOREIGN ;
break ;
case 13 :
flags = SDL_WINDOW_KEYBOARD_GRABBED ;
break ;
}
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
window = SDL_CreateWindow ( title , w , h , flags ) ;
SDLTest_AssertPass ( " Call to SDL_CreateWindow('Title',%d,%d,%d) " , w , h , flags ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( window ! = NULL , " Validate that returned window struct is not NULL " ) ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
}
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_GetWindowFlags function
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getWindowFlags ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_Window * window ;
const char * title = " video_getWindowFlags Test Window " ;
SDL_WindowFlags flags ;
Uint32 actualFlags ;
/* Reliable flag set always set in test window */
2022-12-29 03:17:55 +08:00
flags = 0 ;
2022-12-01 04:51:59 +08:00
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window ! = NULL ) {
actualFlags = SDL_GetWindowFlags ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowFlags() " ) ;
SDLTest_AssertCheck ( ( flags & actualFlags ) = = flags , " Verify returned value has flags %d set, got: % " SDL_PRIu32 , flags , actualFlags ) ;
}
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_GetFullscreenDisplayModes function
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getFullscreenDisplayModes ( void * arg )
2015-06-21 23:33:46 +08:00
{
2023-01-30 05:30:55 +08:00
SDL_DisplayID * displays ;
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
const SDL_DisplayMode * * modes ;
int count ;
2022-12-01 04:51:59 +08:00
int i ;
/* Get number of displays */
2023-01-30 05:30:55 +08:00
displays = SDL_GetDisplays ( NULL ) ;
if ( displays ) {
SDLTest_AssertPass ( " Call to SDL_GetDisplays() " ) ;
/* Make call for each display */
for ( i = 0 ; displays [ i ] ; + + i ) {
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
modes = SDL_GetFullscreenDisplayModes ( displays [ i ] , & count ) ;
SDLTest_AssertPass ( " Call to SDL_GetFullscreenDisplayModes(% " SDL_PRIu32 " ) " , displays [ i ] ) ;
SDLTest_AssertCheck ( modes ! = NULL , " Validate returned value from function; expected != NULL; got: %p " , modes ) ;
SDLTest_AssertCheck ( count > = 0 , " Validate number of modes; expected: >= 0; got: %d " , count ) ;
2023-02-02 01:20:14 +08:00
SDL_free ( ( void * ) modes ) ;
2023-01-30 05:30:55 +08:00
}
SDL_free ( displays ) ;
2022-12-01 04:51:59 +08:00
}
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_GetClosestFullscreenDisplayMode function against current resolution
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getClosestDisplayModeCurrentResolution ( void * arg )
2015-06-21 23:33:46 +08:00
{
2023-01-30 05:30:55 +08:00
SDL_DisplayID * displays ;
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
const SDL_DisplayMode * * modes ;
2022-12-01 04:51:59 +08:00
SDL_DisplayMode current ;
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
const SDL_DisplayMode * closest ;
int i , num_modes ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Get number of displays */
2023-01-30 05:30:55 +08:00
displays = SDL_GetDisplays ( NULL ) ;
if ( displays ) {
SDLTest_AssertPass ( " Call to SDL_GetDisplays() " ) ;
/* Make calls for each display */
for ( i = 0 ; displays [ i ] ; + + i ) {
SDLTest_Log ( " Testing against display: % " SDL_PRIu32 " " , displays [ i ] ) ;
/* Get first display mode to get a sane resolution; this should always work */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
modes = SDL_GetFullscreenDisplayModes ( displays [ i ] , & num_modes ) ;
SDLTest_AssertPass ( " Call to SDL_GetDisplayModes() " ) ;
SDLTest_Assert ( modes ! = NULL , " Verify returned value is not NULL " ) ;
if ( num_modes > 0 ) {
SDL_memcpy ( & current , modes [ 0 ] , sizeof ( current ) ) ;
2023-01-30 05:30:55 +08:00
/* Make call */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
closest = SDL_GetClosestFullscreenDisplayMode ( displays [ i ] , current . pixel_w , current . pixel_h , current . refresh_rate ) ;
SDLTest_AssertPass ( " Call to SDL_GetClosestFullscreenDisplayMode(target=current) " ) ;
SDLTest_Assert ( closest ! = NULL , " Verify returned value is not NULL " ) ;
2023-01-30 05:30:55 +08:00
/* Check that one gets the current resolution back again */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
if ( closest ) {
SDLTest_AssertCheck ( closest - > pixel_w = = current . pixel_w , " Verify returned width matches current width; expected: %d, got: %d " , current . pixel_w , closest - > pixel_w ) ;
SDLTest_AssertCheck ( closest - > pixel_h = = current . pixel_h , " Verify returned height matches current height; expected: %d, got: %d " , current . pixel_h , closest - > pixel_h ) ;
}
2023-01-30 05:30:55 +08:00
}
2022-12-01 04:51:59 +08:00
}
2023-01-30 05:30:55 +08:00
SDL_free ( displays ) ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_GetClosestFullscreenDisplayMode function against random resolution
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getClosestDisplayModeRandomResolution ( void * arg )
2015-06-21 23:33:46 +08:00
{
2023-01-30 05:30:55 +08:00
SDL_DisplayID * displays ;
2022-12-01 04:51:59 +08:00
SDL_DisplayMode target ;
int i ;
int variation ;
/* Get number of displays */
2023-01-30 05:30:55 +08:00
displays = SDL_GetDisplays ( NULL ) ;
if ( displays ) {
SDLTest_AssertPass ( " Call to SDL_GetDisplays() " ) ;
/* Make calls for each display */
for ( i = 0 ; displays [ i ] ; + + i ) {
SDLTest_Log ( " Testing against display: % " SDL_PRIu32 " " , displays [ i ] ) ;
for ( variation = 0 ; variation < 16 ; variation + + ) {
/* Set random constraints */
SDL_zero ( target ) ;
target . pixel_w = ( variation & 1 ) ? SDLTest_RandomIntegerInRange ( 1 , 4096 ) : 0 ;
target . pixel_h = ( variation & 2 ) ? SDLTest_RandomIntegerInRange ( 1 , 4096 ) : 0 ;
target . refresh_rate = ( variation & 8 ) ? ( float ) SDLTest_RandomIntegerInRange ( 25 , 120 ) : 0.0f ;
/* Make call; may or may not find anything, so don't validate any further */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
SDL_GetClosestFullscreenDisplayMode ( displays [ i ] , target . pixel_w , target . pixel_h , target . refresh_rate ) ;
SDLTest_AssertPass ( " Call to SDL_GetClosestFullscreenDisplayMode(target=random/variation%d) " , variation ) ;
2023-01-30 05:30:55 +08:00
}
2022-12-01 04:51:59 +08:00
}
2023-01-30 05:30:55 +08:00
SDL_free ( displays ) ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowFullscreenMode
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowFullscreenMode
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getWindowDisplayMode ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_Window * window ;
const char * title = " video_getWindowDisplayMode Test Window " ;
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
const SDL_DisplayMode * mode ;
2022-12-01 04:51:59 +08:00
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window ! = NULL ) {
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
mode = SDL_GetWindowFullscreenMode ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowFullscreenMode() " ) ;
SDLTest_AssertCheck ( mode = = NULL , " Validate result value; expected: NULL, got: %p " , mode ) ;
2022-12-01 04:51:59 +08:00
}
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/* Helper function that checks for an 'Invalid window' error */
2023-03-08 23:12:45 +08:00
static void checkInvalidWindowError ( void )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * invalidWindowError = " Invalid window " ;
2023-03-09 04:18:02 +08:00
const char * lastError ;
2022-12-01 04:51:59 +08:00
2023-03-09 04:18:02 +08:00
lastError = SDL_GetError ( ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " SDL_GetError() " ) ;
SDLTest_AssertCheck ( lastError ! = NULL , " Verify error message is not NULL " ) ;
if ( lastError ! = NULL ) {
SDLTest_AssertCheck ( SDL_strcmp ( lastError , invalidWindowError ) = = 0 ,
" SDL_GetError(): expected message '%s', was message: '%s' " ,
invalidWindowError ,
lastError ) ;
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
}
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowFullscreenMode with invalid input
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowFullscreenMode
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getWindowDisplayModeNegative ( void * arg )
2015-06-21 23:33:46 +08:00
{
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
const SDL_DisplayMode * mode ;
2022-12-01 04:51:59 +08:00
/* Call against invalid window */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
mode = SDL_GetWindowFullscreenMode ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowFullscreenMode(window=NULL) " ) ;
SDLTest_AssertCheck ( mode = = NULL , " Validate result value; expected: NULL, got: %p " , mode ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
2021-01-27 09:16:17 +08:00
/* Helper for setting and checking the window mouse grab state */
2022-12-30 05:58:16 +08:00
static void setAndCheckWindowMouseGrabState ( SDL_Window * window , SDL_bool desiredState )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_bool currentState ;
/* Set state */
SDL_SetWindowMouseGrab ( window , desiredState ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMouseGrab(%s) " , ( desiredState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ) ;
/* Get and check state */
currentState = SDL_GetWindowMouseGrab ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMouseGrab() " ) ;
2021-01-27 09:16:17 +08:00
SDLTest_AssertCheck (
2022-12-01 04:51:59 +08:00
currentState = = desiredState ,
" Validate returned state; expected: %s, got: %s " ,
( desiredState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ,
( currentState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ) ;
if ( desiredState ) {
SDLTest_AssertCheck (
SDL_GetGrabbedWindow ( ) = = window ,
" Grabbed window should be to our window " ) ;
SDLTest_AssertCheck (
SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck (
SDL_GetWindowFlags ( window ) & SDL_WINDOW_MOUSE_GRABBED ,
" SDL_WINDOW_MOUSE_GRABBED should be set " ) ;
} else {
SDLTest_AssertCheck (
! ( SDL_GetWindowFlags ( window ) & SDL_WINDOW_MOUSE_GRABBED ) ,
" SDL_WINDOW_MOUSE_GRABBED should be unset " ) ;
}
2021-01-27 09:16:17 +08:00
}
/* Helper for setting and checking the window keyboard grab state */
2022-12-30 05:58:16 +08:00
static void setAndCheckWindowKeyboardGrabState ( SDL_Window * window , SDL_bool desiredState )
2021-01-27 09:16:17 +08:00
{
2022-12-01 04:51:59 +08:00
SDL_bool currentState ;
/* Set state */
SDL_SetWindowKeyboardGrab ( window , desiredState ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowKeyboardGrab(%s) " , ( desiredState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ) ;
/* Get and check state */
currentState = SDL_GetWindowKeyboardGrab ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowKeyboardGrab() " ) ;
2021-01-27 09:16:17 +08:00
SDLTest_AssertCheck (
2022-12-01 04:51:59 +08:00
currentState = = desiredState ,
" Validate returned state; expected: %s, got: %s " ,
( desiredState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ,
( currentState = = SDL_FALSE ) ? " SDL_FALSE " : " SDL_TRUE " ) ;
if ( desiredState ) {
SDLTest_AssertCheck (
SDL_GetGrabbedWindow ( ) = = window ,
" Grabbed window should be set to our window " ) ;
SDLTest_AssertCheck (
SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck (
SDL_GetWindowFlags ( window ) & SDL_WINDOW_KEYBOARD_GRABBED ,
" SDL_WINDOW_KEYBOARD_GRABBED should be set " ) ;
} else {
SDLTest_AssertCheck (
! ( SDL_GetWindowFlags ( window ) & SDL_WINDOW_KEYBOARD_GRABBED ) ,
" SDL_WINDOW_KEYBOARD_GRABBED should be unset " ) ;
}
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests keyboard and mouse grab support
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowGrab
* \ sa SDL_SetWindowGrab
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowGrab ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getSetWindowGrab Test Window " ;
SDL_Window * window ;
SDL_bool originalMouseState , originalKeyboardState ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
/* Get state */
originalMouseState = SDL_GetWindowMouseGrab ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMouseGrab() " ) ;
originalKeyboardState = SDL_GetWindowKeyboardGrab ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowKeyboardGrab() " ) ;
/* F */
2022-12-30 05:58:16 +08:00
setAndCheckWindowKeyboardGrabState ( window , SDL_FALSE ) ;
setAndCheckWindowMouseGrabState ( window , SDL_FALSE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( ! SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( SDL_GetGrabbedWindow ( ) = = NULL ,
" Expected NULL grabbed window " ) ;
/* F --> F */
2022-12-30 05:58:16 +08:00
setAndCheckWindowMouseGrabState ( window , SDL_FALSE ) ;
setAndCheckWindowKeyboardGrabState ( window , SDL_FALSE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_GetGrabbedWindow ( ) = = NULL ,
" Expected NULL grabbed window " ) ;
/* F --> T */
2022-12-30 05:58:16 +08:00
setAndCheckWindowMouseGrabState ( window , SDL_TRUE ) ;
setAndCheckWindowKeyboardGrabState ( window , SDL_TRUE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
/* T --> T */
2022-12-30 05:58:16 +08:00
setAndCheckWindowKeyboardGrabState ( window , SDL_TRUE ) ;
setAndCheckWindowMouseGrabState ( window , SDL_TRUE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
/* M: T --> F */
/* K: T --> T */
2022-12-30 05:58:16 +08:00
setAndCheckWindowKeyboardGrabState ( window , SDL_TRUE ) ;
setAndCheckWindowMouseGrabState ( window , SDL_FALSE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
/* M: F --> T */
/* K: T --> F */
2022-12-30 05:58:16 +08:00
setAndCheckWindowMouseGrabState ( window , SDL_TRUE ) ;
setAndCheckWindowKeyboardGrabState ( window , SDL_FALSE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
/* M: T --> F */
/* K: F --> F */
2022-12-30 05:58:16 +08:00
setAndCheckWindowMouseGrabState ( window , SDL_FALSE ) ;
setAndCheckWindowKeyboardGrabState ( window , SDL_FALSE ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( ! SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( SDL_GetGrabbedWindow ( ) = = NULL ,
" Expected NULL grabbed window " ) ;
/* Using the older SDL_SetWindowGrab API should only grab mouse by default */
SDL_SetWindowGrab ( window , SDL_TRUE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowGrab(SDL_TRUE) " ) ;
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck ( SDL_GetWindowMouseGrab ( window ) ,
" SDL_GetWindowMouseGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowKeyboardGrab ( window ) ,
" SDL_GetWindowKeyboardGrab() should return SDL_FALSE " ) ;
SDL_SetWindowGrab ( window , SDL_FALSE ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowMouseGrab ( window ) ,
" SDL_GetWindowMouseGrab() should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowKeyboardGrab ( window ) ,
" SDL_GetWindowKeyboardGrab() should return SDL_FALSE " ) ;
/* Now test with SDL_HINT_GRAB_KEYBOARD set. We should get keyboard grab now. */
SDL_SetHint ( SDL_HINT_GRAB_KEYBOARD , " 1 " ) ;
SDL_SetWindowGrab ( window , SDL_TRUE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowGrab(SDL_TRUE) " ) ;
SDLTest_AssertCheck ( SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck ( SDL_GetWindowMouseGrab ( window ) ,
" SDL_GetWindowMouseGrab() should return SDL_TRUE " ) ;
SDLTest_AssertCheck ( SDL_GetWindowKeyboardGrab ( window ) ,
" SDL_GetWindowKeyboardGrab() should return SDL_TRUE " ) ;
SDL_SetWindowGrab ( window , SDL_FALSE ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowGrab ( window ) ,
" SDL_GetWindowGrab() should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowMouseGrab ( window ) ,
" SDL_GetWindowMouseGrab() should return SDL_FALSE " ) ;
SDLTest_AssertCheck ( ! SDL_GetWindowKeyboardGrab ( window ) ,
" SDL_GetWindowKeyboardGrab() should return SDL_FALSE " ) ;
/* Negative tests */
SDL_GetWindowGrab ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowGrab(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_GetWindowKeyboardGrab ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowKeyboardGrab(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowGrab ( NULL , SDL_FALSE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowGrab(window=NULL,SDL_FALSE) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowKeyboardGrab ( NULL , SDL_FALSE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowKeyboardGrab(window=NULL,SDL_FALSE) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowGrab ( NULL , SDL_TRUE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowGrab(window=NULL,SDL_TRUE) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowKeyboardGrab ( NULL , SDL_TRUE ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowKeyboardGrab(window=NULL,SDL_TRUE) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
/* Restore state */
2022-12-30 05:58:16 +08:00
setAndCheckWindowMouseGrabState ( window , originalMouseState ) ;
setAndCheckWindowKeyboardGrabState ( window , originalKeyboardState ) ;
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
}
2015-06-21 23:33:46 +08:00
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowID and SDL_GetWindowFromID
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowID
* \ sa SDL_SetWindowFromID
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getWindowId ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getWindowId Test Window " ;
SDL_Window * window ;
SDL_Window * result ;
Uint32 id , randomId ;
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
/* Get ID */
id = SDL_GetWindowID ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID() " ) ;
/* Get window from ID */
result = SDL_GetWindowFromID ( id ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(% " SDL_PRIu32 " ) " , id ) ;
SDLTest_AssertCheck ( result = = window , " Verify result matches window pointer " ) ;
/* Get window from random large ID, no result check */
randomId = SDLTest_RandomIntegerInRange ( UINT8_MAX , UINT16_MAX ) ;
result = SDL_GetWindowFromID ( randomId ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(% " SDL_PRIu32 " /random_large) " , randomId ) ;
/* Get window from 0 and Uint32 max ID, no result check */
result = SDL_GetWindowFromID ( 0 ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(0) " ) ;
result = SDL_GetWindowFromID ( UINT32_MAX ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(UINT32_MAX) " ) ;
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Get window from ID for closed window */
result = SDL_GetWindowFromID ( id ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(% " SDL_PRIu32 " /closed_window) " , id ) ;
SDLTest_AssertCheck ( result = = NULL , " Verify result is NULL " ) ;
/* Negative test */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
id = SDL_GetWindowID ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowID(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowPixelFormat
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowPixelFormat
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getWindowPixelFormat ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getWindowPixelFormat Test Window " ;
SDL_Window * window ;
Uint32 format ;
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
/* Get format */
format = SDL_GetWindowPixelFormat ( window ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPixelFormat() " ) ;
SDLTest_AssertCheck ( format ! = SDL_PIXELFORMAT_UNKNOWN , " Verify that returned format is valid; expected: != %d, got: % " SDL_PRIu32 , SDL_PIXELFORMAT_UNKNOWN , format ) ;
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Negative test */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
format = SDL_GetWindowPixelFormat ( NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPixelFormat(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowPosition and SDL_SetWindowPosition
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowPosition
* \ sa SDL_SetWindowPosition
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowPosition ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getSetWindowPosition Test Window " ;
SDL_Window * window ;
int xVariation , yVariation ;
int referenceX , referenceY ;
int currentX , currentY ;
int desiredX , desiredY ;
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
for ( xVariation = 0 ; xVariation < 4 ; xVariation + + ) {
for ( yVariation = 0 ; yVariation < 4 ; yVariation + + ) {
switch ( xVariation ) {
default :
case 0 :
/* Zero X Position */
desiredX = 0 ;
break ;
case 1 :
/* Random X position inside screen */
desiredX = SDLTest_RandomIntegerInRange ( 1 , 100 ) ;
break ;
case 2 :
/* Random X position outside screen (positive) */
desiredX = SDLTest_RandomIntegerInRange ( 10000 , 11000 ) ;
break ;
case 3 :
/* Random X position outside screen (negative) */
desiredX = SDLTest_RandomIntegerInRange ( - 1000 , - 100 ) ;
break ;
}
switch ( yVariation ) {
default :
case 0 :
/* Zero X Position */
desiredY = 0 ;
break ;
case 1 :
/* Random X position inside screen */
desiredY = SDLTest_RandomIntegerInRange ( 1 , 100 ) ;
break ;
case 2 :
/* Random X position outside screen (positive) */
desiredY = SDLTest_RandomIntegerInRange ( 10000 , 11000 ) ;
break ;
case 3 :
/* Random Y position outside screen (negative) */
desiredY = SDLTest_RandomIntegerInRange ( - 1000 , - 100 ) ;
break ;
}
/* Set position */
SDL_SetWindowPosition ( window , desiredX , desiredY ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowPosition(...,%d,%d) " , desiredX , desiredY ) ;
/* Get position */
currentX = desiredX + 1 ;
currentY = desiredY + 1 ;
SDL_GetWindowPosition ( window , & currentX , & currentY ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition() " ) ;
SDLTest_AssertCheck ( desiredX = = currentX , " Verify returned X position; expected: %d, got: %d " , desiredX , currentX ) ;
SDLTest_AssertCheck ( desiredY = = currentY , " Verify returned Y position; expected: %d, got: %d " , desiredY , currentY ) ;
/* Get position X */
currentX = desiredX + 1 ;
SDL_GetWindowPosition ( window , & currentX , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition(&y=NULL) " ) ;
SDLTest_AssertCheck ( desiredX = = currentX , " Verify returned X position; expected: %d, got: %d " , desiredX , currentX ) ;
/* Get position Y */
currentY = desiredY + 1 ;
SDL_GetWindowPosition ( window , NULL , & currentY ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition(&x=NULL) " ) ;
SDLTest_AssertCheck ( desiredY = = currentY , " Verify returned Y position; expected: %d, got: %d " , desiredY , currentY ) ;
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Dummy call with both pointers NULL */
SDL_GetWindowPosition ( window , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition(&x=NULL,&y=NULL) " ) ;
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Set some 'magic' value for later check that nothing was changed */
referenceX = SDLTest_RandomSint32 ( ) ;
referenceY = SDLTest_RandomSint32 ( ) ;
currentX = referenceX ;
currentY = referenceY ;
desiredX = SDLTest_RandomSint32 ( ) ;
desiredY = SDLTest_RandomSint32 ( ) ;
/* Negative tests */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
SDL_GetWindowPosition ( NULL , & currentX , & currentY ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition(window=NULL) " ) ;
SDLTest_AssertCheck (
currentX = = referenceX & & currentY = = referenceY ,
" Verify that content of X and Y pointers has not been modified; expected: %d,%d; got: %d,%d " ,
referenceX , referenceY ,
currentX , currentY ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_GetWindowPosition ( NULL , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowPosition(NULL, NULL, NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowPosition ( NULL , desiredX , desiredY ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowPosition(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/* Helper function that checks for an 'Invalid parameter' error */
2023-03-08 23:12:45 +08:00
static void checkInvalidParameterError ( void )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * invalidParameterError = " Parameter " ;
2023-03-09 04:18:02 +08:00
const char * lastError ;
2022-12-01 04:51:59 +08:00
2023-03-09 04:18:02 +08:00
lastError = SDL_GetError ( ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " SDL_GetError() " ) ;
SDLTest_AssertCheck ( lastError ! = NULL , " Verify error message is not NULL " ) ;
if ( lastError ! = NULL ) {
SDLTest_AssertCheck ( SDL_strncmp ( lastError , invalidParameterError , SDL_strlen ( invalidParameterError ) ) = = 0 ,
" SDL_GetError(): expected message starts with '%s', was message: '%s' " ,
invalidParameterError ,
lastError ) ;
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
}
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowSize and SDL_SetWindowSize
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_GetWindowSize
* \ sa SDL_SetWindowSize
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowSize ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getSetWindowSize Test Window " ;
SDL_Window * window ;
int result ;
SDL_Rect display ;
int maxwVariation , maxhVariation ;
int wVariation , hVariation ;
int referenceW , referenceH ;
int currentW , currentH ;
int desiredW , desiredH ;
/* Get display bounds for size range */
2023-01-30 05:30:55 +08:00
result = SDL_GetDisplayBounds ( SDL_GetPrimaryDisplay ( ) , & display ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " SDL_GetDisplayBounds() " ) ;
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
if ( result ! = 0 ) {
return TEST_ABORTED ;
}
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
2015-06-21 23:33:46 +08:00
# ifdef __WIN32__
2022-12-01 04:51:59 +08:00
/* Platform clips window size to screen size */
maxwVariation = 4 ;
maxhVariation = 4 ;
2015-06-21 23:33:46 +08:00
# else
2022-12-01 04:51:59 +08:00
/* Platform allows window size >= screen size */
maxwVariation = 5 ;
maxhVariation = 5 ;
2015-06-21 23:33:46 +08:00
# endif
2022-12-01 04:51:59 +08:00
for ( wVariation = 0 ; wVariation < maxwVariation ; wVariation + + ) {
for ( hVariation = 0 ; hVariation < maxhVariation ; hVariation + + ) {
switch ( wVariation ) {
default :
case 0 :
/* 1 Pixel Wide */
desiredW = 1 ;
break ;
case 1 :
/* Random width inside screen */
desiredW = SDLTest_RandomIntegerInRange ( 1 , 100 ) ;
break ;
case 2 :
/* Width 1 pixel smaller than screen */
desiredW = display . w - 1 ;
break ;
case 3 :
/* Width at screen size */
desiredW = display . w ;
break ;
case 4 :
/* Width 1 pixel larger than screen */
desiredW = display . w + 1 ;
break ;
}
switch ( hVariation ) {
default :
case 0 :
/* 1 Pixel High */
desiredH = 1 ;
break ;
case 1 :
/* Random height inside screen */
desiredH = SDLTest_RandomIntegerInRange ( 1 , 100 ) ;
break ;
case 2 :
/* Height 1 pixel smaller than screen */
desiredH = display . h - 1 ;
break ;
case 3 :
/* Height at screen size */
desiredH = display . h ;
break ;
case 4 :
/* Height 1 pixel larger than screen */
desiredH = display . h + 1 ;
break ;
}
/* Set size */
SDL_SetWindowSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowSize(...,%d,%d) " , desiredW , desiredH ) ;
/* Get size */
currentW = desiredW + 1 ;
currentH = desiredH + 1 ;
SDL_GetWindowSize ( window , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize() " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentW ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredH , currentH ) ;
/* Get just width */
currentW = desiredW + 1 ;
SDL_GetWindowSize ( window , & currentW , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize(&h=NULL) " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentW ) ;
/* Get just height */
currentH = desiredH + 1 ;
SDL_GetWindowSize ( window , NULL , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize(&w=NULL) " ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredH , currentH ) ;
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Dummy call with both pointers NULL */
SDL_GetWindowSize ( window , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize(&w=NULL,&h=NULL) " ) ;
/* Negative tests for parameter input */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
for ( desiredH = - 2 ; desiredH < 2 ; desiredH + + ) {
for ( desiredW = - 2 ; desiredW < 2 ; desiredW + + ) {
if ( desiredW < = 0 | | desiredH < = 0 ) {
SDL_SetWindowSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowSize(...,%d,%d) " , desiredW , desiredH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
}
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Set some 'magic' value for later check that nothing was changed */
referenceW = SDLTest_RandomSint32 ( ) ;
referenceH = SDLTest_RandomSint32 ( ) ;
currentW = referenceW ;
currentH = referenceH ;
desiredW = SDLTest_RandomSint32 ( ) ;
desiredH = SDLTest_RandomSint32 ( ) ;
/* Negative tests for window input */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
SDL_GetWindowSize ( NULL , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize(window=NULL) " ) ;
SDLTest_AssertCheck (
currentW = = referenceW & & currentH = = referenceH ,
" Verify that content of W and H pointers has not been modified; expected: %d,%d; got: %d,%d " ,
referenceW , referenceH ,
currentW , currentH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_GetWindowSize ( NULL , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowSize(NULL, NULL, NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowSize ( NULL , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowSize(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowMinimumSize and SDL_SetWindowMinimumSize
2015-06-21 23:33:46 +08:00
*
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowMinimumSize ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getSetWindowMinimumSize Test Window " ;
SDL_Window * window ;
int result ;
SDL_Rect display ;
int wVariation , hVariation ;
int referenceW , referenceH ;
int currentW , currentH ;
int desiredW = 1 ;
int desiredH = 1 ;
/* Get display bounds for size range */
2023-01-30 05:30:55 +08:00
result = SDL_GetDisplayBounds ( SDL_GetPrimaryDisplay ( ) , & display ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " SDL_GetDisplayBounds() " ) ;
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
if ( result ! = 0 ) {
return TEST_ABORTED ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
for ( wVariation = 0 ; wVariation < 5 ; wVariation + + ) {
for ( hVariation = 0 ; hVariation < 5 ; hVariation + + ) {
switch ( wVariation ) {
case 0 :
/* 1 Pixel Wide */
desiredW = 1 ;
break ;
case 1 :
/* Random width inside screen */
desiredW = SDLTest_RandomIntegerInRange ( 2 , display . w - 1 ) ;
break ;
case 2 :
/* Width at screen size */
desiredW = display . w ;
break ;
}
switch ( hVariation ) {
case 0 :
/* 1 Pixel High */
desiredH = 1 ;
break ;
case 1 :
/* Random height inside screen */
desiredH = SDLTest_RandomIntegerInRange ( 2 , display . h - 1 ) ;
break ;
case 2 :
/* Height at screen size */
desiredH = display . h ;
break ;
case 4 :
/* Height 1 pixel larger than screen */
desiredH = display . h + 1 ;
break ;
}
/* Set size */
SDL_SetWindowMinimumSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMinimumSize(...,%d,%d) " , desiredW , desiredH ) ;
/* Get size */
currentW = desiredW + 1 ;
currentH = desiredH + 1 ;
SDL_GetWindowMinimumSize ( window , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize() " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentW ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredH , currentH ) ;
/* Get just width */
currentW = desiredW + 1 ;
SDL_GetWindowMinimumSize ( window , & currentW , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize(&h=NULL) " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentH ) ;
/* Get just height */
currentH = desiredH + 1 ;
SDL_GetWindowMinimumSize ( window , NULL , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize(&w=NULL) " ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredW , currentH ) ;
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Dummy call with both pointers NULL */
SDL_GetWindowMinimumSize ( window , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize(&w=NULL,&h=NULL) " ) ;
/* Negative tests for parameter input */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
for ( desiredH = - 2 ; desiredH < 2 ; desiredH + + ) {
for ( desiredW = - 2 ; desiredW < 2 ; desiredW + + ) {
if ( desiredW < = 0 | | desiredH < = 0 ) {
SDL_SetWindowMinimumSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMinimumSize(...,%d,%d) " , desiredW , desiredH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
}
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Set some 'magic' value for later check that nothing was changed */
referenceW = SDLTest_RandomSint32 ( ) ;
referenceH = SDLTest_RandomSint32 ( ) ;
currentW = referenceW ;
currentH = referenceH ;
desiredW = SDLTest_RandomSint32 ( ) ;
desiredH = SDLTest_RandomSint32 ( ) ;
/* Negative tests for window input */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
SDL_GetWindowMinimumSize ( NULL , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize(window=NULL) " ) ;
SDLTest_AssertCheck (
currentW = = referenceW & & currentH = = referenceH ,
" Verify that content of W and H pointers has not been modified; expected: %d,%d; got: %d,%d " ,
referenceW , referenceH ,
currentW , currentH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_GetWindowMinimumSize ( NULL , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMinimumSize(NULL, NULL, NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowMinimumSize ( NULL , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMinimumSize(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
2015-06-21 23:33:46 +08:00
}
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_GetWindowMaximumSize and SDL_SetWindowMaximumSize
2015-06-21 23:33:46 +08:00
*
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowMaximumSize ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
const char * title = " video_getSetWindowMaximumSize Test Window " ;
SDL_Window * window ;
int result ;
SDL_Rect display ;
int wVariation , hVariation ;
int referenceW , referenceH ;
int currentW , currentH ;
2023-03-08 23:12:45 +08:00
int desiredW = 0 , desiredH = 0 ;
2022-12-01 04:51:59 +08:00
/* Get display bounds for size range */
2023-01-30 05:30:55 +08:00
result = SDL_GetDisplayBounds ( SDL_GetPrimaryDisplay ( ) , & display ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " SDL_GetDisplayBounds() " ) ;
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
if ( result ! = 0 ) {
return TEST_ABORTED ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
for ( wVariation = 0 ; wVariation < 3 ; wVariation + + ) {
for ( hVariation = 0 ; hVariation < 3 ; hVariation + + ) {
switch ( wVariation ) {
case 0 :
/* 1 Pixel Wide */
desiredW = 1 ;
break ;
case 1 :
/* Random width inside screen */
desiredW = SDLTest_RandomIntegerInRange ( 2 , display . w - 1 ) ;
break ;
case 2 :
/* Width at screen size */
desiredW = display . w ;
break ;
}
switch ( hVariation ) {
case 0 :
/* 1 Pixel High */
desiredH = 1 ;
break ;
case 1 :
/* Random height inside screen */
desiredH = SDLTest_RandomIntegerInRange ( 2 , display . h - 1 ) ;
break ;
case 2 :
/* Height at screen size */
desiredH = display . h ;
break ;
}
/* Set size */
SDL_SetWindowMaximumSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMaximumSize(...,%d,%d) " , desiredW , desiredH ) ;
/* Get size */
currentW = desiredW + 1 ;
currentH = desiredH + 1 ;
SDL_GetWindowMaximumSize ( window , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize() " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentW ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredH , currentH ) ;
/* Get just width */
currentW = desiredW + 1 ;
SDL_GetWindowMaximumSize ( window , & currentW , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize(&h=NULL) " ) ;
SDLTest_AssertCheck ( desiredW = = currentW , " Verify returned width; expected: %d, got: %d " , desiredW , currentH ) ;
/* Get just height */
currentH = desiredH + 1 ;
SDL_GetWindowMaximumSize ( window , NULL , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize(&w=NULL) " ) ;
SDLTest_AssertCheck ( desiredH = = currentH , " Verify returned height; expected: %d, got: %d " , desiredW , currentH ) ;
}
}
/* Dummy call with both pointers NULL */
SDL_GetWindowMaximumSize ( window , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize(&w=NULL,&h=NULL) " ) ;
/* Negative tests for parameter input */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
for ( desiredH = - 2 ; desiredH < 2 ; desiredH + + ) {
for ( desiredW = - 2 ; desiredW < 2 ; desiredW + + ) {
if ( desiredW < = 0 | | desiredH < = 0 ) {
SDL_SetWindowMaximumSize ( window , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMaximumSize(...,%d,%d) " , desiredW , desiredH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
}
}
2015-06-21 23:33:46 +08:00
}
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
/* Set some 'magic' value for later check that nothing was changed */
referenceW = SDLTest_RandomSint32 ( ) ;
referenceH = SDLTest_RandomSint32 ( ) ;
currentW = referenceW ;
currentH = referenceH ;
desiredW = SDLTest_RandomSint32 ( ) ;
desiredH = SDLTest_RandomSint32 ( ) ;
/* Negative tests */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
SDL_GetWindowMaximumSize ( NULL , & currentW , & currentH ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize(window=NULL) " ) ;
SDLTest_AssertCheck (
currentW = = referenceW & & currentH = = referenceH ,
" Verify that content of W and H pointers has not been modified; expected: %d,%d; got: %d,%d " ,
referenceW , referenceH ,
currentW , currentH ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_GetWindowMaximumSize ( NULL , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowMaximumSize(NULL, NULL, NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
SDL_SetWindowMaximumSize ( NULL , desiredW , desiredH ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowMaximumSize(window=NULL) " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
return TEST_COMPLETED ;
}
2015-06-21 23:33:46 +08:00
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests call to SDL_SetWindowData and SDL_GetWindowData
2015-06-21 23:33:46 +08:00
*
2023-02-02 07:21:53 +08:00
* \ sa SDL_SetWindowData
* \ sa SDL_GetWindowData
2015-06-21 23:33:46 +08:00
*/
2023-03-08 23:12:45 +08:00
static int video_getSetWindowData ( void * arg )
2015-06-21 23:33:46 +08:00
{
2022-12-01 04:51:59 +08:00
int returnValue = TEST_COMPLETED ;
const char * title = " video_setGetWindowData Test Window " ;
SDL_Window * window ;
const char * referenceName = " TestName " ;
const char * name = " TestName " ;
const char * referenceName2 = " TestName2 " ;
const char * name2 = " TestName2 " ;
int datasize ;
char * referenceUserdata = NULL ;
char * userdata = NULL ;
char * referenceUserdata2 = NULL ;
char * userdata2 = NULL ;
char * result ;
int iteration ;
/* Call against new test window */
2022-12-30 05:58:16 +08:00
window = createVideoSuiteTestWindow ( title ) ;
2022-12-01 04:51:59 +08:00
if ( window = = NULL ) {
return TEST_ABORTED ;
}
/* Create testdata */
datasize = SDLTest_RandomIntegerInRange ( 1 , 32 ) ;
referenceUserdata = SDLTest_RandomAsciiStringOfSize ( datasize ) ;
if ( referenceUserdata = = NULL ) {
returnValue = TEST_ABORTED ;
goto cleanup ;
}
userdata = SDL_strdup ( referenceUserdata ) ;
if ( userdata = = NULL ) {
returnValue = TEST_ABORTED ;
goto cleanup ;
}
datasize = SDLTest_RandomIntegerInRange ( 1 , 32 ) ;
referenceUserdata2 = SDLTest_RandomAsciiStringOfSize ( datasize ) ;
if ( referenceUserdata2 = = NULL ) {
returnValue = TEST_ABORTED ;
goto cleanup ;
}
2022-12-02 05:07:03 +08:00
userdata2 = SDL_strdup ( referenceUserdata2 ) ;
2022-12-01 04:51:59 +08:00
if ( userdata2 = = NULL ) {
returnValue = TEST_ABORTED ;
goto cleanup ;
}
/* Get non-existent data */
2015-06-21 23:33:46 +08:00
result = ( char * ) SDL_GetWindowData ( window , name ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) " , name ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2015-06-21 23:33:46 +08:00
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
2022-12-01 04:51:59 +08:00
/* Set data */
2015-06-21 23:33:46 +08:00
result = ( char * ) SDL_SetWindowData ( window , name , userdata ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,%s) " , name , userdata ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
/* Get data (twice) */
for ( iteration = 1 ; iteration < = 2 ; iteration + + ) {
result = ( char * ) SDL_GetWindowData ( window , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) [iteration %d] " , name , iteration ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
}
/* Set data again twice */
for ( iteration = 1 ; iteration < = 2 ; iteration + + ) {
result = ( char * ) SDL_SetWindowData ( window , name , userdata ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,%s) [iteration %d] " , name , userdata , iteration ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
}
/* Get data again */
result = ( char * ) SDL_GetWindowData ( window , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) [again] " , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
/* Set data with new data */
result = ( char * ) SDL_SetWindowData ( window , name , userdata2 ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,%s) [new userdata] " , name , userdata2 ) ;
2015-06-21 23:33:46 +08:00
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
2022-12-01 04:51:59 +08:00
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , userdata2 ) = = 0 , " Validate that userdata2 was not changed, expected: %s, got: %s " , referenceUserdata2 , userdata2 ) ;
/* Set data with new data again */
result = ( char * ) SDL_SetWindowData ( window , name , userdata2 ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,%s) [new userdata again] " , name , userdata2 ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata2 , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , userdata2 ) = = 0 , " Validate that userdata2 was not changed, expected: %s, got: %s " , referenceUserdata2 , userdata2 ) ;
/* Get new data */
result = ( char * ) SDL_GetWindowData ( window , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) " , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata2 , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
/* Set data with NULL to clear */
result = ( char * ) SDL_SetWindowData ( window , name , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,NULL) " , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata2 , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , userdata2 ) = = 0 , " Validate that userdata2 was not changed, expected: %s, got: %s " , referenceUserdata2 , userdata2 ) ;
/* Set data with NULL to clear again */
result = ( char * ) SDL_SetWindowData ( window , name , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,NULL) [again] " , name ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata2 , userdata2 ) = = 0 , " Validate that userdata2 was not changed, expected: %s, got: %s " , referenceUserdata2 , userdata2 ) ;
/* Get non-existent data */
result = ( char * ) SDL_GetWindowData ( window , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) " , name ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
/* Get non-existent data new name */
result = ( char * ) SDL_GetWindowData ( window , name2 ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) " , name2 ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName2 , name2 ) = = 0 , " Validate that name2 was not changed, expected: %s, got: %s " , referenceName2 , name2 ) ;
/* Set data (again) */
result = ( char * ) SDL_SetWindowData ( window , name , userdata ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(...%s,%s) [again, after clear] " , name , userdata ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , userdata ) = = 0 , " Validate that userdata was not changed, expected: %s, got: %s " , referenceUserdata , userdata ) ;
/* Get data (again) */
result = ( char * ) SDL_GetWindowData ( window , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(..,%s) [again, after clear] " , name ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceUserdata , result ) = = 0 , " Validate that correct result was returned; expected: %s, got: %s " , referenceUserdata , result ) ;
SDLTest_AssertCheck ( SDL_strcmp ( referenceName , name ) = = 0 , " Validate that name was not changed, expected: %s, got: %s " , referenceName , name ) ;
/* Negative test */
SDL_ClearError ( ) ;
SDLTest_AssertPass ( " Call to SDL_ClearError() " ) ;
/* Set with invalid window */
result = ( char * ) SDL_SetWindowData ( NULL , name , userdata ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(window=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
/* Set data with NULL name, valid userdata */
result = ( char * ) SDL_SetWindowData ( window , NULL , userdata ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(name=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Set data with empty name, valid userdata */
result = ( char * ) SDL_SetWindowData ( window , " " , userdata ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(name='') " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Set data with NULL name, NULL userdata */
result = ( char * ) SDL_SetWindowData ( window , NULL , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(name=NULL,userdata=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Set data with empty name, NULL userdata */
result = ( char * ) SDL_SetWindowData ( window , " " , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_SetWindowData(name='',userdata=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Get with invalid window */
result = ( char * ) SDL_GetWindowData ( NULL , name ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(window=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidWindowError ( ) ;
2022-12-01 04:51:59 +08:00
/* Get data with NULL name */
result = ( char * ) SDL_GetWindowData ( window , NULL ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(name=NULL) " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Get data with empty name */
result = ( char * ) SDL_GetWindowData ( window , " " ) ;
SDLTest_AssertPass ( " Call to SDL_GetWindowData(name='') " ) ;
SDLTest_AssertCheck ( result = = NULL , " Validate that result is NULL " ) ;
2022-12-30 05:58:16 +08:00
checkInvalidParameterError ( ) ;
2022-12-01 04:51:59 +08:00
/* Clean up */
2022-12-30 05:58:16 +08:00
destroyVideoSuiteTestWindow ( window ) ;
2022-12-01 04:51:59 +08:00
cleanup :
SDL_free ( referenceUserdata ) ;
SDL_free ( referenceUserdata2 ) ;
SDL_free ( userdata ) ;
SDL_free ( userdata2 ) ;
return returnValue ;
2015-06-21 23:33:46 +08:00
}
2022-06-06 04:44:30 +08:00
/**
2023-02-02 07:21:53 +08:00
* \ brief Tests the functionality of the SDL_WINDOWPOS_CENTERED_DISPLAY along with SDL_WINDOW_FULLSCREEN .
2022-12-01 04:51:59 +08:00
*
* Espeically useful when run on a multi - monitor system with different DPI scales per monitor ,
* to test that the window size is maintained when moving between monitors .
*/
2023-03-08 23:12:45 +08:00
static int video_setWindowCenteredOnDisplay ( void * arg )
2022-06-06 04:44:30 +08:00
{
2023-01-30 05:30:55 +08:00
SDL_DisplayID * displays ;
2022-06-06 04:44:30 +08:00
SDL_Window * window ;
const char * title = " video_setWindowCenteredOnDisplay Test Window " ;
int x , y , w , h ;
int xVariation , yVariation ;
int displayNum ;
int result ;
SDL_Rect display0 , display1 ;
2023-01-30 05:30:55 +08:00
displays = SDL_GetDisplays ( & displayNum ) ;
if ( displays ) {
2022-06-06 04:44:30 +08:00
2023-01-30 05:30:55 +08:00
/* Get display bounds */
result = SDL_GetDisplayBounds ( displays [ 0 % displayNum ] , & display0 ) ;
SDLTest_AssertPass ( " SDL_GetDisplayBounds() " ) ;
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
if ( result ! = 0 ) {
return TEST_ABORTED ;
}
2022-06-06 04:44:30 +08:00
2023-01-30 05:30:55 +08:00
result = SDL_GetDisplayBounds ( displays [ 1 % displayNum ] , & display1 ) ;
SDLTest_AssertPass ( " SDL_GetDisplayBounds() " ) ;
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
if ( result ! = 0 ) {
return TEST_ABORTED ;
}
2022-06-06 04:44:30 +08:00
2023-01-30 05:30:55 +08:00
for ( xVariation = 0 ; xVariation < 2 ; xVariation + + ) {
for ( yVariation = 0 ; yVariation < 2 ; yVariation + + ) {
int currentX = 0 , currentY = 0 ;
int currentW = 0 , currentH = 0 ;
int expectedX = 0 , expectedY = 0 ;
int currentDisplay ;
int expectedDisplay ;
SDL_Rect expectedDisplayRect ;
/* xVariation is the display we start on */
2023-03-16 07:12:54 +08:00
expectedDisplay = displays [ xVariation % displayNum ] ;
2023-01-30 05:30:55 +08:00
x = SDL_WINDOWPOS_CENTERED_DISPLAY ( expectedDisplay ) ;
y = SDL_WINDOWPOS_CENTERED_DISPLAY ( expectedDisplay ) ;
w = SDLTest_RandomIntegerInRange ( 640 , 800 ) ;
h = SDLTest_RandomIntegerInRange ( 400 , 600 ) ;
expectedDisplayRect = ( xVariation = = 0 ) ? display0 : display1 ;
expectedX = ( expectedDisplayRect . x + ( ( expectedDisplayRect . w - w ) / 2 ) ) ;
expectedY = ( expectedDisplayRect . y + ( ( expectedDisplayRect . h - h ) / 2 ) ) ;
2023-03-06 06:44:38 +08:00
window = SDL_CreateWindow ( title , w , h , SDL_WINDOW_HIDDEN ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertPass ( " Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN) " , x , y , w , h ) ;
SDLTest_AssertCheck ( window ! = NULL , " Validate that returned window struct is not NULL " ) ;
2023-03-06 06:44:38 +08:00
/* Set the desired position */
SDL_SetWindowPosition ( window , x , y ) ;
SDL_ShowWindow ( window ) ;
2023-01-30 05:30:55 +08:00
/* Check the window is centered on the requested display */
currentDisplay = SDL_GetDisplayForWindow ( window ) ;
SDL_GetWindowSize ( window , & currentW , & currentH ) ;
SDL_GetWindowPosition ( window , & currentX , & currentY ) ;
2023-03-16 07:12:54 +08:00
SDLTest_AssertCheck ( currentDisplay = = expectedDisplay , " Validate display ID (current: %d, expected: %d) " , currentDisplay , expectedDisplay ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertCheck ( currentW = = w , " Validate width (current: %d, expected: %d) " , currentW , w ) ;
SDLTest_AssertCheck ( currentH = = h , " Validate height (current: %d, expected: %d) " , currentH , h ) ;
SDLTest_AssertCheck ( currentX = = expectedX , " Validate x (current: %d, expected: %d) " , currentX , expectedX ) ;
SDLTest_AssertCheck ( currentY = = expectedY , " Validate y (current: %d, expected: %d) " , currentY , expectedY ) ;
/* Enter fullscreen desktop */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
result = SDL_SetWindowFullscreen ( window , SDL_TRUE ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
/* Check we are filling the full display */
currentDisplay = SDL_GetDisplayForWindow ( window ) ;
SDL_GetWindowSize ( window , & currentW , & currentH ) ;
SDL_GetWindowPosition ( window , & currentX , & currentY ) ;
2023-03-16 07:12:54 +08:00
SDLTest_AssertCheck ( currentDisplay = = expectedDisplay , " Validate display ID (current: %d, expected: %d) " , currentDisplay , expectedDisplay ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertCheck ( currentW = = expectedDisplayRect . w , " Validate width (current: %d, expected: %d) " , currentW , expectedDisplayRect . w ) ;
SDLTest_AssertCheck ( currentH = = expectedDisplayRect . h , " Validate height (current: %d, expected: %d) " , currentH , expectedDisplayRect . h ) ;
SDLTest_AssertCheck ( currentX = = expectedDisplayRect . x , " Validate x (current: %d, expected: %d) " , currentX , expectedDisplayRect . x ) ;
SDLTest_AssertCheck ( currentY = = expectedDisplayRect . y , " Validate y (current: %d, expected: %d) " , currentY , expectedDisplayRect . y ) ;
/* Leave fullscreen desktop */
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
result = SDL_SetWindowFullscreen ( window , SDL_FALSE ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertCheck ( result = = 0 , " Verify return value; expected: 0, got: %d " , result ) ;
/* Check window was restored correctly */
currentDisplay = SDL_GetDisplayForWindow ( window ) ;
SDL_GetWindowSize ( window , & currentW , & currentH ) ;
SDL_GetWindowPosition ( window , & currentX , & currentY ) ;
SDLTest_AssertCheck ( currentDisplay = = expectedDisplay , " Validate display index (current: %d, expected: %d) " , currentDisplay , expectedDisplay ) ;
SDLTest_AssertCheck ( currentW = = w , " Validate width (current: %d, expected: %d) " , currentW , w ) ;
SDLTest_AssertCheck ( currentH = = h , " Validate height (current: %d, expected: %d) " , currentH , h ) ;
SDLTest_AssertCheck ( currentX = = expectedX , " Validate x (current: %d, expected: %d) " , currentX , expectedX ) ;
SDLTest_AssertCheck ( currentY = = expectedY , " Validate y (current: %d, expected: %d) " , currentY , expectedY ) ;
/* Center on display yVariation, and check window properties */
2023-03-16 07:12:54 +08:00
expectedDisplay = displays [ yVariation % displayNum ] ;
2023-01-30 05:30:55 +08:00
x = SDL_WINDOWPOS_CENTERED_DISPLAY ( expectedDisplay ) ;
y = SDL_WINDOWPOS_CENTERED_DISPLAY ( expectedDisplay ) ;
2023-03-16 07:12:54 +08:00
expectedDisplayRect = ( yVariation = = 0 ) ? display0 : display1 ;
2023-01-30 05:30:55 +08:00
expectedX = ( expectedDisplayRect . x + ( ( expectedDisplayRect . w - w ) / 2 ) ) ;
expectedY = ( expectedDisplayRect . y + ( ( expectedDisplayRect . h - h ) / 2 ) ) ;
SDL_SetWindowPosition ( window , x , y ) ;
currentDisplay = SDL_GetDisplayForWindow ( window ) ;
SDL_GetWindowSize ( window , & currentW , & currentH ) ;
SDL_GetWindowPosition ( window , & currentX , & currentY ) ;
2023-03-16 07:12:54 +08:00
SDLTest_AssertCheck ( currentDisplay = = expectedDisplay , " Validate display ID (current: %d, expected: %d) " , currentDisplay , expectedDisplay ) ;
2023-01-30 05:30:55 +08:00
SDLTest_AssertCheck ( currentW = = w , " Validate width (current: %d, expected: %d) " , currentW , w ) ;
SDLTest_AssertCheck ( currentH = = h , " Validate height (current: %d, expected: %d) " , currentH , h ) ;
SDLTest_AssertCheck ( currentX = = expectedX , " Validate x (current: %d, expected: %d) " , currentX , expectedX ) ;
SDLTest_AssertCheck ( currentY = = expectedY , " Validate y (current: %d, expected: %d) " , currentY , expectedY ) ;
/* Clean up */
destroyVideoSuiteTestWindow ( window ) ;
}
2022-06-06 04:44:30 +08:00
}
2023-01-30 05:30:55 +08:00
SDL_free ( displays ) ;
2022-06-06 04:44:30 +08:00
}
return TEST_COMPLETED ;
}
2015-06-21 23:33:46 +08:00
/* ================= Test References ================== */
/* Video test cases */
2022-12-01 04:51:59 +08:00
static const SDLTest_TestCaseReference videoTest1 = {
( SDLTest_TestCaseFp ) video_enableDisableScreensaver , " video_enableDisableScreensaver " , " Enable and disable screenaver while checking state " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2022-12-01 04:51:59 +08:00
static const SDLTest_TestCaseReference videoTest2 = {
( SDLTest_TestCaseFp ) video_createWindowVariousSizes , " video_createWindowVariousSizes " , " Create windows with various sizes " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest3 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_createWindowVariousFlags , " video_createWindowVariousFlags " , " Create windows using various flags " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest4 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getWindowFlags , " video_getWindowFlags " , " Get window flags set during SDL_CreateWindow " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest5 = {
Windows default to fullscreen desktop mode if they don't pick an explicit video mode
Rather than iterating over display modes using an index, there is a new function SDL_GetFullscreenDisplayModes() to get the list of available fullscreen modes on a display.
{
SDL_DisplayID display = SDL_GetPrimaryDisplay();
int num_modes = 0;
SDL_DisplayMode **modes = SDL_GetFullscreenDisplayModes(display, &num_modes);
if (modes) {
for (i = 0; i < num_modes; ++i) {
SDL_DisplayMode *mode = modes[i];
SDL_Log("Display %" SDL_PRIu32 " mode %d: %dx%d@%gHz, %d%% scale\n",
display, i, mode->pixel_w, mode->pixel_h, mode->refresh_rate, (int)(mode->display_scale * 100.0f));
}
SDL_free(modes);
}
}
SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() return pointers to display modes rather than filling in application memory.
Windows now have an explicit fullscreen mode that is set, using SDL_SetWindowFullscreenMode(). The fullscreen mode for a window can be queried with SDL_GetWindowFullscreenMode(), which returns a pointer to the mode, or NULL if the window will be fullscreen desktop. SDL_SetWindowFullscreen() just takes a boolean value, setting the correct fullscreen state based on the selected mode.
2023-02-01 13:23:14 +08:00
( SDLTest_TestCaseFp ) video_getFullscreenDisplayModes , " video_getFullscreenDisplayModes " , " Use SDL_GetFullscreenDisplayModes function to get number of display modes " , TEST_ENABLED
2022-12-01 04:51:59 +08:00
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest6 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getClosestDisplayModeCurrentResolution , " video_getClosestDisplayModeCurrentResolution " , " Use function to get closes match to requested display mode for current resolution " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest7 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getClosestDisplayModeRandomResolution , " video_getClosestDisplayModeRandomResolution " , " Use function to get closes match to requested display mode for random resolution " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest8 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getWindowDisplayMode , " video_getWindowDisplayMode " , " Get window display mode " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest9 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getWindowDisplayModeNegative , " video_getWindowDisplayModeNegative " , " Get window display mode with invalid input " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest10 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowGrab , " video_getSetWindowGrab " , " Checks SDL_GetWindowGrab and SDL_SetWindowGrab positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest11 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getWindowId , " video_getWindowId " , " Checks SDL_GetWindowID and SDL_GetWindowFromID " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest12 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getWindowPixelFormat , " video_getWindowPixelFormat " , " Checks SDL_GetWindowPixelFormat " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest13 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowPosition , " video_getSetWindowPosition " , " Checks SDL_GetWindowPosition and SDL_SetWindowPosition positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest14 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowSize , " video_getSetWindowSize " , " Checks SDL_GetWindowSize and SDL_SetWindowSize positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest15 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowMinimumSize , " video_getSetWindowMinimumSize " , " Checks SDL_GetWindowMinimumSize and SDL_SetWindowMinimumSize positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest16 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowMaximumSize , " video_getSetWindowMaximumSize " , " Checks SDL_GetWindowMaximumSize and SDL_SetWindowMaximumSize positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest17 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_getSetWindowData , " video_getSetWindowData " , " Checks SDL_SetWindowData and SDL_GetWindowData positive and negative cases " , TEST_ENABLED
} ;
2015-06-21 23:33:46 +08:00
2023-03-06 06:44:38 +08:00
static const SDLTest_TestCaseReference videoTest18 = {
2022-12-01 04:51:59 +08:00
( SDLTest_TestCaseFp ) video_setWindowCenteredOnDisplay , " video_setWindowCenteredOnDisplay " , " Checks using SDL_WINDOWPOS_CENTERED_DISPLAY centers the window on a display " , TEST_ENABLED
} ;
2022-06-06 04:44:30 +08:00
2015-06-21 23:33:46 +08:00
/* Sequence of Video test cases */
2022-12-01 04:51:59 +08:00
static const SDLTest_TestCaseReference * videoTests [ ] = {
2015-06-21 23:33:46 +08:00
& videoTest1 , & videoTest2 , & videoTest3 , & videoTest4 , & videoTest5 , & videoTest6 ,
& videoTest7 , & videoTest8 , & videoTest9 , & videoTest10 , & videoTest11 , & videoTest12 ,
& videoTest13 , & videoTest14 , & videoTest15 , & videoTest16 , & videoTest17 ,
2023-03-06 06:44:38 +08:00
& videoTest18 , NULL
2015-06-21 23:33:46 +08:00
} ;
/* Video test suite (global) */
SDLTest_TestSuiteReference videoTestSuite = {
" Video " ,
NULL ,
videoTests ,
NULL
} ;