From 66ddabde860282ba92792b2164ae7f2bb92e35e3 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 26 Jan 2024 22:53:07 -0800
Subject: [PATCH] Added an automated test to check creation of minimized and
maximized windows
---
test/testautomation_video.c | 153 ++++++++++++++++++++++++++++++------
1 file changed, 129 insertions(+), 24 deletions(-)
diff --git a/test/testautomation_video.c b/test/testautomation_video.c
index e40254689fd18..e1cb1293de3f5 100644
--- a/test/testautomation_video.c
+++ b/test/testautomation_video.c
@@ -2238,6 +2238,84 @@ static int video_getSetWindowState(void *arg)
return skipFlags != (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED) ? TEST_COMPLETED : TEST_SKIPPED;
}
+static int video_createMinimized(void *arg)
+{
+ const char *title = "video_createMinimized Test Window";
+ int result;
+ SDL_Window *window;
+ int windowedX, windowedY;
+ int windowedW, windowedH;
+
+ /* Call against new test window */
+ window = SDL_CreateWindow(title, 320, 200, SDL_WINDOW_MINIMIZED);
+ if (!window) {
+ return TEST_ABORTED;
+ }
+
+ SDL_GetWindowSize(window, &windowedW, &windowedH);
+ SDLTest_AssertPass("SDL_GetWindowSize()");
+ SDLTest_AssertCheck(windowedW > 0 && windowedH > 0, "Verify return value; expected: 320x200, got: %dx%d", windowedW, windowedH);
+
+ SDL_GetWindowSizeInPixels(window, &windowedW, &windowedH);
+ SDLTest_AssertPass("SDL_GetWindowSizeInPixels()");
+ SDLTest_AssertCheck(windowedW > 0 && windowedH > 0, "Verify return value; expected: > 0, got: %dx%d", windowedW, windowedH);
+
+ SDL_GetWindowPosition(window, &windowedX, &windowedY);
+ SDLTest_AssertPass("SDL_GetWindowPosition()");
+ SDLTest_AssertCheck(windowedX >= 0 && windowedY >= 0, "Verify return value; expected: >= 0, got: %d,%d", windowedX, windowedY);
+
+ if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED) {
+ result = SDL_RestoreWindow(window);
+ SDLTest_AssertPass("SDL_RestoreWindow()");
+ SDLTest_AssertCheck(result == 0, "Verify return value; expected: 0, got: %d", result);
+ } else {
+ SDLTest_Log("Requested minimized window on creation, but that isn't supported on this platform.");
+ }
+
+ SDL_DestroyWindow(window);
+
+ return TEST_COMPLETED;
+}
+
+static int video_createMaximized(void *arg)
+{
+ const char *title = "video_createMaximized Test Window";
+ int result;
+ SDL_Window *window;
+ int windowedX, windowedY;
+ int windowedW, windowedH;
+
+ /* Call against new test window */
+ window = SDL_CreateWindow(title, 320, 200, SDL_WINDOW_MAXIMIZED);
+ if (!window) {
+ return TEST_ABORTED;
+ }
+
+ SDL_GetWindowSize(window, &windowedW, &windowedH);
+ SDLTest_AssertPass("SDL_GetWindowSize()");
+ SDLTest_AssertCheck(windowedW > 0 && windowedH > 0, "Verify return value; expected: 320x200, got: %dx%d", windowedW, windowedH);
+
+ SDL_GetWindowSizeInPixels(window, &windowedW, &windowedH);
+ SDLTest_AssertPass("SDL_GetWindowSizeInPixels()");
+ SDLTest_AssertCheck(windowedW > 0 && windowedH > 0, "Verify return value; expected: > 0, got: %dx%d", windowedW, windowedH);
+
+ SDL_GetWindowPosition(window, &windowedX, &windowedY);
+ SDLTest_AssertPass("SDL_GetWindowPosition()");
+ SDLTest_AssertCheck(windowedX >= 0 && windowedY >= 0, "Verify return value; expected: >= 0, got: %d,%d", windowedX, windowedY);
+
+ if (SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED) {
+ result = SDL_RestoreWindow(window);
+ SDLTest_AssertPass("SDL_RestoreWindow()");
+ SDLTest_AssertCheck(result == 0, "Verify return value; expected: 0, got: %d", result);
+ } else {
+ SDLTest_Log("Requested maximized window on creation, but that isn't supported on this platform.");
+ }
+
+ SDL_DestroyWindow(window);
+
+ return TEST_COMPLETED;
+}
+
/**
* Tests window surface functionality
*/
@@ -2311,92 +2389,119 @@ static int video_getWindowSurface(void *arg)
/* ================= Test References ================== */
/* Video test cases */
-static const SDLTest_TestCaseReference videoTest1 = {
+static const SDLTest_TestCaseReference videoTestEnableDisableScreensaver = {
(SDLTest_TestCaseFp)video_enableDisableScreensaver, "video_enableDisableScreensaver", "Enable and disable screenaver while checking state", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest2 = {
+static const SDLTest_TestCaseReference videoTestCreateWindowVariousSizes = {
(SDLTest_TestCaseFp)video_createWindowVariousSizes, "video_createWindowVariousSizes", "Create windows with various sizes", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest3 = {
+static const SDLTest_TestCaseReference videoTestCreateWindowVariousFlags = {
(SDLTest_TestCaseFp)video_createWindowVariousFlags, "video_createWindowVariousFlags", "Create windows using various flags", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest4 = {
+static const SDLTest_TestCaseReference videoTestGetWindowFlags = {
(SDLTest_TestCaseFp)video_getWindowFlags, "video_getWindowFlags", "Get window flags set during SDL_CreateWindow", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest5 = {
+static const SDLTest_TestCaseReference videoTestGetFullscreenDisplayModes = {
(SDLTest_TestCaseFp)video_getFullscreenDisplayModes, "video_getFullscreenDisplayModes", "Use SDL_GetFullscreenDisplayModes function to get number of display modes", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest6 = {
+static const SDLTest_TestCaseReference videoTestGetClosestDisplayModeCurrentResolution = {
(SDLTest_TestCaseFp)video_getClosestDisplayModeCurrentResolution, "video_getClosestDisplayModeCurrentResolution", "Use function to get closes match to requested display mode for current resolution", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest7 = {
+static const SDLTest_TestCaseReference videoTestGetClosestDisplayModeRandomResolution = {
(SDLTest_TestCaseFp)video_getClosestDisplayModeRandomResolution, "video_getClosestDisplayModeRandomResolution", "Use function to get closes match to requested display mode for random resolution", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest8 = {
+static const SDLTest_TestCaseReference videoTestGetWindowDisplayMode = {
(SDLTest_TestCaseFp)video_getWindowDisplayMode, "video_getWindowDisplayMode", "Get window display mode", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest9 = {
+static const SDLTest_TestCaseReference videoTestGetWindowDisplayModeNegative = {
(SDLTest_TestCaseFp)video_getWindowDisplayModeNegative, "video_getWindowDisplayModeNegative", "Get window display mode with invalid input", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest10 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowGrab = {
(SDLTest_TestCaseFp)video_getSetWindowGrab, "video_getSetWindowGrab", "Checks input grab positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest11 = {
+static const SDLTest_TestCaseReference videoTestGetWindowID = {
(SDLTest_TestCaseFp)video_getWindowId, "video_getWindowId", "Checks SDL_GetWindowID and SDL_GetWindowFromID", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest12 = {
+static const SDLTest_TestCaseReference videoTestGetWindowPixelFormat = {
(SDLTest_TestCaseFp)video_getWindowPixelFormat, "video_getWindowPixelFormat", "Checks SDL_GetWindowPixelFormat", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest13 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowPosition = {
(SDLTest_TestCaseFp)video_getSetWindowPosition, "video_getSetWindowPosition", "Checks SDL_GetWindowPosition and SDL_SetWindowPosition positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest14 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowSize = {
(SDLTest_TestCaseFp)video_getSetWindowSize, "video_getSetWindowSize", "Checks SDL_GetWindowSize and SDL_SetWindowSize positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest15 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowMinimumSize = {
(SDLTest_TestCaseFp)video_getSetWindowMinimumSize, "video_getSetWindowMinimumSize", "Checks SDL_GetWindowMinimumSize and SDL_SetWindowMinimumSize positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest16 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowMaximumSize = {
(SDLTest_TestCaseFp)video_getSetWindowMaximumSize, "video_getSetWindowMaximumSize", "Checks SDL_GetWindowMaximumSize and SDL_SetWindowMaximumSize positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest17 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowData = {
(SDLTest_TestCaseFp)video_getSetWindowData, "video_getSetWindowData", "Checks SDL_SetWindowData and SDL_GetWindowData positive and negative cases", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest18 = {
+static const SDLTest_TestCaseReference videoTestSetWindowCenteredOnDisplay = {
(SDLTest_TestCaseFp)video_setWindowCenteredOnDisplay, "video_setWindowCenteredOnDisplay", "Checks using SDL_WINDOWPOS_CENTERED_DISPLAY centers the window on a display", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest19 = {
+static const SDLTest_TestCaseReference videoTestGetSetWindowState = {
(SDLTest_TestCaseFp)video_getSetWindowState, "video_getSetWindowState", "Checks transitioning between windowed, minimized, maximized, and fullscreen states", TEST_ENABLED
};
-static const SDLTest_TestCaseReference videoTest20 = {
+static const SDLTest_TestCaseReference videoTestCreateMinimized = {
+ (SDLTest_TestCaseFp)video_createMinimized, "video_createMinimized", "Checks window state for windows created minimized", TEST_ENABLED
+};
+
+static const SDLTest_TestCaseReference videoTestCreateMaximized = {
+ (SDLTest_TestCaseFp)video_createMaximized, "video_createMaximized", "Checks window state for windows created maximized", TEST_ENABLED
+};
+
+static const SDLTest_TestCaseReference videoTestGetWindowSurface = {
(SDLTest_TestCaseFp)video_getWindowSurface, "video_getWindowSurface", "Checks window surface functionality", TEST_ENABLED
};
/* Sequence of Video test cases */
static const SDLTest_TestCaseReference *videoTests[] = {
- &videoTest1, &videoTest2, &videoTest3, &videoTest4, &videoTest5, &videoTest6,
- &videoTest7, &videoTest8, &videoTest9, &videoTest10, &videoTest11, &videoTest12,
- &videoTest13, &videoTest14, &videoTest15, &videoTest16, &videoTest17,
- &videoTest18, &videoTest19, &videoTest20, NULL
+ &videoTestEnableDisableScreensaver,
+ &videoTestCreateWindowVariousSizes,
+ &videoTestCreateWindowVariousFlags,
+ &videoTestGetWindowFlags,
+ &videoTestGetFullscreenDisplayModes,
+ &videoTestGetClosestDisplayModeCurrentResolution,
+ &videoTestGetClosestDisplayModeRandomResolution,
+ &videoTestGetWindowDisplayMode,
+ &videoTestGetWindowDisplayModeNegative,
+ &videoTestGetSetWindowGrab,
+ &videoTestGetWindowID,
+ &videoTestGetWindowPixelFormat,
+ &videoTestGetSetWindowPosition,
+ &videoTestGetSetWindowSize,
+ &videoTestGetSetWindowMinimumSize,
+ &videoTestGetSetWindowMaximumSize,
+ &videoTestGetSetWindowData,
+ &videoTestSetWindowCenteredOnDisplay,
+ &videoTestGetSetWindowState,
+ &videoTestCreateMinimized,
+ &videoTestCreateMaximized,
+ &videoTestGetWindowSurface,
+ NULL
};
/* Video test suite (global) */