132 lines
4.9 KiB
C++
132 lines
4.9 KiB
C++
#include <doctest/doctest.h>
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
#include <string>
|
|
|
|
#include <hdk/sdl/video.hpp>
|
|
#include <hdk/sdl/video/Window.hpp>
|
|
|
|
#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<bool>(grabbed) || !static_cast<bool>(grabbed)));
|
|
|
|
auto fromZero = hdk::sdl::Window::GetFromID(0);
|
|
CHECK_FALSE(static_cast<bool>(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<bool>(parent) || !static_cast<bool>(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<bool>(withProps) || !static_cast<bool>(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<bool>(popup) || !static_cast<bool>(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<bool>(renderer) || !static_cast<bool>(renderer)));
|
|
}
|