Skip to content

Commit b4e3408

Browse files
Add unit test for window title bar buttons
1 parent a09215d commit b4e3408

1 file changed

Lines changed: 125 additions & 0 deletions

File tree

tests/s25Main/UI/testIngameWindow.cpp

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,131 @@ BOOST_AUTO_TEST_CASE(SaveAndRestorePinned)
262262
}
263263
}
264264

265+
BOOST_AUTO_TEST_CASE(TitleBarButtons)
266+
{
267+
constexpr auto id = CGI_MINIMAP;
268+
auto it = SETTINGS.windows.persistentSettings.find(id);
269+
BOOST_REQUIRE(it != SETTINGS.windows.persistentSettings.end());
270+
auto& settings = it->second;
271+
272+
BOOST_TEST_CONTEXT("Window pinning disabled")
273+
{
274+
SETTINGS.interface.enableWindowPinning = false;
275+
settings.isMinimized = false;
276+
settings.isPinned = false;
277+
BOOST_TEST_CONTEXT("Left title bar button closes window")
278+
{
279+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
280+
const MouseCoords evLDown{wnd.GetPos() + DrawPoint(4, 4), true};
281+
282+
BOOST_TEST(!wnd.ShouldBeClosed());
283+
BOOST_TEST(!wnd.IsMinimized());
284+
BOOST_TEST(!wnd.IsPinned());
285+
wnd.MouseLeftUp(evLDown);
286+
BOOST_TEST(wnd.ShouldBeClosed());
287+
BOOST_TEST(!wnd.IsMinimized());
288+
BOOST_TEST(!wnd.IsPinned());
289+
BOOST_TEST(!settings.isOpen);
290+
BOOST_TEST(!settings.isMinimized);
291+
BOOST_TEST(!settings.isPinned);
292+
}
293+
294+
BOOST_TEST_CONTEXT("Double-click on the window title has no effect")
295+
{
296+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
297+
const MouseCoords evLDblDown{wnd.GetPos() + DrawPoint(wnd.GetSize().x / 2, 4), true, false, true};
298+
299+
BOOST_TEST(!wnd.ShouldBeClosed());
300+
BOOST_TEST(!wnd.IsMinimized());
301+
BOOST_TEST(!wnd.IsPinned());
302+
wnd.MouseLeftUp(evLDblDown);
303+
BOOST_TEST(!wnd.ShouldBeClosed());
304+
BOOST_TEST(!wnd.IsMinimized());
305+
BOOST_TEST(!wnd.IsPinned());
306+
BOOST_TEST(settings.isOpen);
307+
BOOST_TEST(!settings.isMinimized);
308+
BOOST_TEST(!settings.isPinned);
309+
}
310+
311+
settings.isMinimized = false;
312+
BOOST_TEST_CONTEXT("Right title bar button minimizes window")
313+
{
314+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
315+
const MouseCoords evLDown{wnd.GetPos() + DrawPoint(wnd.GetSize().x, 0) + DrawPoint(-4, 4), true};
316+
317+
BOOST_TEST(!wnd.ShouldBeClosed());
318+
BOOST_TEST(!wnd.IsMinimized());
319+
BOOST_TEST(!wnd.IsPinned());
320+
wnd.MouseLeftUp(evLDown);
321+
BOOST_TEST(!wnd.ShouldBeClosed());
322+
BOOST_TEST(wnd.IsMinimized());
323+
BOOST_TEST(!wnd.IsPinned());
324+
BOOST_TEST(settings.isOpen);
325+
BOOST_TEST(settings.isMinimized);
326+
BOOST_TEST(!settings.isPinned);
327+
}
328+
}
329+
330+
BOOST_TEST_CONTEXT("Window pinning enabled")
331+
{
332+
SETTINGS.interface.enableWindowPinning = true;
333+
settings.isMinimized = false;
334+
settings.isPinned = false;
335+
BOOST_TEST_CONTEXT("Left title bar button closes window")
336+
{
337+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
338+
const MouseCoords evLDown{wnd.GetPos() + DrawPoint(4, 4), true};
339+
340+
BOOST_TEST(!wnd.ShouldBeClosed());
341+
BOOST_TEST(!wnd.IsMinimized());
342+
BOOST_TEST(!wnd.IsPinned());
343+
wnd.MouseLeftUp(evLDown);
344+
BOOST_TEST(wnd.ShouldBeClosed());
345+
BOOST_TEST(!wnd.IsMinimized());
346+
BOOST_TEST(!wnd.IsPinned());
347+
BOOST_TEST(!settings.isOpen);
348+
BOOST_TEST(!settings.isMinimized);
349+
BOOST_TEST(!settings.isPinned);
350+
}
351+
352+
BOOST_TEST_CONTEXT("Double-click on the window title minimizes")
353+
{
354+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
355+
const MouseCoords evLDblDown{wnd.GetPos() + DrawPoint(wnd.GetSize().x / 2, 4), true, false, true};
356+
357+
BOOST_TEST(!wnd.ShouldBeClosed());
358+
BOOST_TEST(!wnd.IsMinimized());
359+
BOOST_TEST(!wnd.IsPinned());
360+
wnd.MouseLeftUp(evLDblDown);
361+
BOOST_TEST(!wnd.ShouldBeClosed());
362+
BOOST_TEST(wnd.IsMinimized());
363+
BOOST_TEST(!wnd.IsPinned());
364+
BOOST_TEST(settings.isOpen);
365+
BOOST_TEST(settings.isMinimized);
366+
BOOST_TEST(!settings.isPinned);
367+
}
368+
369+
settings.isMinimized = false;
370+
settings.isPinned = false;
371+
BOOST_TEST_CONTEXT("Right title bar button pins window")
372+
{
373+
IngameWindow wnd(id, IngameWindow::posLastOrCenter, Extent(100, 100), "Test Window", nullptr);
374+
const MouseCoords evLDown{wnd.GetPos() + DrawPoint(wnd.GetSize().x, 0) + DrawPoint(-4, 4), true};
375+
376+
BOOST_TEST(!wnd.ShouldBeClosed());
377+
BOOST_TEST(!wnd.IsMinimized());
378+
BOOST_TEST(!wnd.IsPinned());
379+
wnd.MouseLeftUp(evLDown);
380+
BOOST_TEST(!wnd.ShouldBeClosed());
381+
BOOST_TEST(!wnd.IsMinimized());
382+
BOOST_TEST(wnd.IsPinned());
383+
BOOST_TEST(settings.isOpen);
384+
BOOST_TEST(!settings.isMinimized);
385+
BOOST_TEST(settings.isPinned);
386+
}
387+
}
388+
}
389+
265390
namespace {
266391
void WindowPositioning_testOne(IngameWindow& wnd, const char* context, const std::function<void()>& checkNormal,
267392
const std::function<void()>& checkMinimized)

0 commit comments

Comments
 (0)