More window tests

This commit is contained in:
Dmitry Marakasov 2016-01-24 19:53:04 +03:00
parent 317cf6b391
commit 0e8331bbab

View File

@ -1,4 +1,4 @@
#include <vector> #include <ios>
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include <SDL2pp/SDL2pp.hh> #include <SDL2pp/SDL2pp.hh>
@ -7,29 +7,37 @@
using namespace SDL2pp; using namespace SDL2pp;
static void ProcessEvents() { static void EventSleep(Uint32 ms) {
Uint32 now = SDL_GetTicks();
Uint32 deadline = now + ms;
SDL_Event event; SDL_Event event;
while (SDL_PollEvent(&event)) { while ((now = SDL_GetTicks()) < deadline)
} SDL_WaitEventTimeout(&event, deadline - now);
} }
BEGIN_TEST(int, char*[]) BEGIN_TEST(int, char*[])
SDL sdl(SDL_INIT_VIDEO); SDL sdl(SDL_INIT_VIDEO);
Window window("libSDL2pp test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 320, 240, 0); Window window("libSDL2pp test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 320, 240, SDL_WINDOW_RESIZABLE);
ProcessEvents(); EventSleep(0);
{ {
// Size // Size
EXPECT_EQUAL(window.GetSize(), Point(320, 240)); EXPECT_EQUAL(window.GetSize(), Point(320, 240), "May fail on tiled WMs", NON_FATAL);
EXPECT_EQUAL(window.GetWidth(), 320); EXPECT_EQUAL(window.GetWidth(), 320, "May fail on tiled WMs", NON_FATAL);
EXPECT_EQUAL(window.GetHeight(), 240); EXPECT_EQUAL(window.GetHeight(), 240, "May fail on tiled WMs", NON_FATAL);
window.SetSize(400, 300); window.SetSize(400, 300);
EXPECT_EQUAL(window.GetSize(), Point(400, 300)); EXPECT_EQUAL(window.GetSize(), Point(400, 300));
EXPECT_EQUAL(window.GetWidth(), 400); EXPECT_EQUAL(window.GetWidth(), 400);
EXPECT_EQUAL(window.GetHeight(), 300); EXPECT_EQUAL(window.GetHeight(), 300);
EventSleep(1000);
window.SetSize(Point(500, 400));
EXPECT_EQUAL(window.GetWidth(), 500);
EXPECT_EQUAL(window.GetHeight(), 400);
EventSleep(1000);
} }
{ {
@ -37,8 +45,8 @@ BEGIN_TEST(int, char*[])
EXPECT_EQUAL(window.GetTitle(), "libSDL2pp test"); EXPECT_EQUAL(window.GetTitle(), "libSDL2pp test");
window.SetTitle("libSDL2pp window test"); window.SetTitle("libSDL2pp window test");
EXPECT_EQUAL(window.GetTitle(), "libSDL2pp window test"); EXPECT_EQUAL(window.GetTitle(), "libSDL2pp window test");
EventSleep(1000);
} }
{ {
@ -57,12 +65,12 @@ BEGIN_TEST(int, char*[])
Point old_pos = window.GetPosition(); Point old_pos = window.GetPosition();
window.SetPosition(old_pos + Point(2, 1)); window.SetPosition(old_pos + Point(2, 1));
EXPECT_EQUAL(window.GetPosition(), old_pos + Point(2, 1)); EXPECT_EQUAL(window.GetPosition(), old_pos + Point(2, 1));
EventSleep(1000);
window.SetPosition(old_pos.x + 4, old_pos.y + 2); window.SetPosition(old_pos.x + 4, old_pos.y + 2);
EXPECT_EQUAL(window.GetPosition(), old_pos + Point(4, 2)); EXPECT_EQUAL(window.GetPosition(), old_pos + Point(4, 2));
EventSleep(1000);
} }
{ {
@ -83,14 +91,13 @@ BEGIN_TEST(int, char*[])
{ {
// Grab // Grab
EXPECT_TRUE(!window.GetGrab()); EXPECT_TRUE(!window.GetGrab());
window.SetGrab(true); window.SetGrab(true);
EXPECT_TRUE(window.GetGrab()); EXPECT_TRUE(window.GetGrab());
EventSleep(1000);
window.SetGrab(false); window.SetGrab(false);
EXPECT_TRUE(!window.GetGrab()); EXPECT_TRUE(!window.GetGrab());
EventSleep(1000);
} }
{ {
@ -98,12 +105,82 @@ BEGIN_TEST(int, char*[])
EXPECT_EQUAL(window.GetBrightness(), 1.0f); EXPECT_EQUAL(window.GetBrightness(), 1.0f);
window.SetBrightness(1.2f); window.SetBrightness(1.2f);
EXPECT_EQUAL(window.GetBrightness(), 1.2f); EXPECT_EQUAL(window.GetBrightness(), 1.2f);
EventSleep(1000);
window.SetBrightness(1.0f); window.SetBrightness(1.0f);
EXPECT_EQUAL(window.GetBrightness(), 1.0f); EXPECT_EQUAL(window.GetBrightness(), 1.0f);
EventSleep(1000);
}
{
// Flags
std::cerr << "Window flags: " << std::hex << "0x" << window.GetFlags() << std::dec << std::endl;
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_SHOWN);
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_RESIZABLE);
window.Hide();
EXPECT_TRUE(!(window.GetFlags() & SDL_WINDOW_SHOWN));
EventSleep(1000);
window.Show();
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_SHOWN);
EventSleep(1000);
window.Maximize();
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_MAXIMIZED);
EventSleep(1000);
window.Restore();
EXPECT_TRUE(!(window.GetFlags() & SDL_WINDOW_MAXIMIZED));
EventSleep(1000);
window.Minimize();
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_MINIMIZED, "May fail on tiled WMs", NON_FATAL);
EventSleep(1000);
window.Restore();
EXPECT_TRUE(!(window.GetFlags() & SDL_WINDOW_MINIMIZED));
EventSleep(1000);
window.SetBordered(false);
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_BORDERLESS);
EventSleep(1000);
window.SetBordered(true);
EXPECT_TRUE(!(window.GetFlags() & SDL_WINDOW_BORDERLESS));
EventSleep(1000);
window.Raise();
EventSleep(1000);
}
{
// Display index & mode
// XXX: may throw
std::cerr << "Display index: " << window.GetDisplayIndex() << std::endl;
SDL_DisplayMode mode;
window.GetDisplayMode(mode);
std::cerr << "Display mode:" << std::endl;
std::cerr << " Format: 0x" << std::hex << mode.format << std::dec << std::endl;
std::cerr << " Width: " << mode.w << std::endl;
std::cerr << " Height: " << mode.h << std::endl;
std::cerr << " Refresh rate: " << mode.refresh_rate << std::endl;
}
{
// Fullscreen
window.SetFullscreen(SDL_WINDOW_FULLSCREEN_DESKTOP);
EXPECT_TRUE(window.GetFlags() & SDL_WINDOW_FULLSCREEN_DESKTOP);
EventSleep(1000);
window.SetFullscreen(0);
EXPECT_TRUE(!(window.GetFlags() & SDL_WINDOW_FULLSCREEN_DESKTOP));
EventSleep(1000);
} }
END_TEST() END_TEST()