#include #include #include #include #include #include "SDL_headless_fixture.hpp" TEST_CASE("Window bindings are exercised") { SDLSession sdl; if (!sdl.IsInitialized()) { INFO(SDL_GetError()); CHECK(false); return; } hdk::sdl::Window window = hdk::sdl::Window::Create("hdk-window-test", 64, 64, SDL_WINDOW_HIDDEN); if (!window) { INFO("SDL_CreateWindow failed in this environment: " << SDL_GetError()); window = hdk::sdl::Window(nullptr); } auto grabbed = hdk::sdl::Window::GetGrabbed(); CHECK((static_cast(grabbed) || !static_cast(grabbed))); auto fromZero = hdk::sdl::Window::GetFromID(0); CHECK_FALSE(static_cast(fromZero)); float minAspect = 0.0f; float maxAspect = 0.0f; CHECK((window.GetAspectRatio(&minAspect, &maxAspect) || !window.GetAspectRatio(&minAspect, &maxAspect))); int top = 0; int left = 0; int bottom = 0; int right = 0; CHECK((window.GetBordersSize(&top, &left, &bottom, &right) || !window.GetBordersSize(&top, &left, &bottom, &right))); (void)window.GetDisplayScale(); (void)window.GetFlags(); (void)window.GetFullscreenMode(); (void)window.GetID(); (void)window.GetKeyboardGrab(); CHECK((window.SetKeyboardGrab(false) || !window.SetKeyboardGrab(false))); (void)window.GetMouseGrab(); CHECK((window.SetMouseGrab(false) || !window.SetMouseGrab(false))); (void)window.GetMouseRect(); CHECK((window.SetMouseRect(nullptr) || !window.SetMouseRect(nullptr))); int maxW = 0; int maxH = 0; CHECK((window.GetMaximumSize(&maxW, &maxH) || !window.GetMaximumSize(&maxW, &maxH))); CHECK((window.SetMaximumSize(1280, 720) || !window.SetMaximumSize(1280, 720))); int minW = 0; int minH = 0; CHECK((window.GetMinimumSize(&minW, &minH) || !window.GetMinimumSize(&minW, &minH))); CHECK((window.SetMinimumSize(32, 32) || !window.SetMinimumSize(32, 32))); CHECK((window.SetSize(96, 96) || !window.SetSize(96, 96))); int width = 0; int height = 0; CHECK((window.GetSize(&width, &height) || !window.GetSize(&width, &height))); SDL_Rect safeArea{}; CHECK((window.GetSafeArea(&safeArea) || !window.GetSafeArea(&safeArea))); (void)window.GetOpacity(); CHECK((window.SetOpacity(0.8f) || !window.SetOpacity(0.8f))); auto parent = window.GetParent(); CHECK((static_cast(parent) || !static_cast(parent))); CHECK((window.SetParent(nullptr) || !window.SetParent(nullptr))); (void)window.GetPixelDensity(); int vsync = 0; CHECK((window.GetSurfaceVSync(&vsync) || !window.GetSurfaceVSync(&vsync))); CHECK((window.SetSurfaceVSync(1) || !window.SetSurfaceVSync(1))); (void)window.GetPixelFormat(); int x = 0; int y = 0; CHECK((window.GetPosition(&x, &y) || !window.GetPosition(&x, &y))); CHECK((window.SetPosition(10, 10) || !window.SetPosition(10, 10))); (void)window.GetProgressState(); (void)window.GetProgressValue(); CHECK((window.SetProgressState(SDL_PROGRESS_STATE_NORMAL) || !window.SetProgressState(SDL_PROGRESS_STATE_NORMAL))); CHECK((window.SetProgressValue(0.5f) || !window.SetProgressValue(0.5f))); auto props = window.GetProperties(); CHECK((props.GetPropertyType("hdk-window-test-missing") == SDL_PROPERTY_TYPE_INVALID)); auto withProps = hdk::sdl::Window::CreateWithProperties(props); CHECK((static_cast(withProps) || !static_cast(withProps))); CHECK((std::string(window.GetTitle()).size() >= 0)); CHECK((window.SetTitle("renamed-window") || !window.SetTitle("renamed-window"))); CHECK((window.SetAlwaysOnTop(false) || !window.SetAlwaysOnTop(false))); CHECK((window.SetModal(false) || !window.SetModal(false))); CHECK((window.SetResizable(true) || !window.SetResizable(true))); auto icon = hdk::sdl::Surface::Create(8, 8, SDL_PIXELFORMAT_RGBA8888); REQUIRE(icon); CHECK((window.SetIcon(icon) || !window.SetIcon(icon))); CHECK((window.SetShape(icon) || !window.SetShape(icon))); auto popup = window.CreatePopup(0, 0, 10, 10, SDL_WINDOW_HIDDEN | SDL_WINDOW_TOOLTIP); CHECK((static_cast(popup) || !static_cast(popup))); CHECK((window.DestroySurface() || !window.DestroySurface())); CHECK((window.Flash(SDL_FLASH_BRIEFLY) || !window.Flash(SDL_FLASH_BRIEFLY))); CHECK((window.Hide() || !window.Hide())); CHECK((window.Maximize() || !window.Maximize())); CHECK((window.Minimize() || !window.Minimize())); CHECK((window.Raise() || !window.Raise())); CHECK((window.Restore() || !window.Restore())); CHECK((window.Show() || !window.Show())); CHECK((window.ShowSystemMenu(0, 0) || !window.ShowSystemMenu(0, 0))); CHECK((window.Sync() || !window.Sync())); CHECK((window.UpdateSurface() || !window.UpdateSurface())); CHECK((window.UpdateSurfaceRects(&safeArea, 1) || !window.UpdateSurfaceRects(&safeArea, 1))); auto renderer = window.GetRenderer(); CHECK((static_cast(renderer) || !static_cast(renderer))); }