Client: Add removePrimaryScreen test

Test that removing the primary screen will not crash the application.

Task-number: QTBUG-62044
Change-Id: I8ba870e1d608629318ef897f88a6cc0d6e6aa85e
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
This commit is contained in:
Johan Klokkhammer Helsing 2017-08-29 14:40:05 +02:00 committed by Johan Helsing
parent f7e6a478b7
commit a5c79599c8

View File

@ -140,6 +140,7 @@ private slots:
void primaryScreen();
void screens();
void windowScreens();
void removePrimaryScreen();
void createDestroyWindow();
void events();
void backingStore();
@ -211,6 +212,38 @@ void tst_WaylandClient::windowScreens()
QTRY_VERIFY(!compositor->surface());
}
void tst_WaylandClient::removePrimaryScreen()
{
QSharedPointer<MockOutput> firstOutput;
QTRY_VERIFY(firstOutput = compositor->output());
TestWindow window;
window.show();
QSharedPointer<MockSurface> surface;
QTRY_VERIFY(surface = compositor->surface());
QTRY_COMPARE(QGuiApplication::screens().size(), 1);
QScreen *primaryScreen = QGuiApplication::screens().first();
QCOMPARE(window.screen(), primaryScreen);
compositor->sendAddOutput();
QTRY_COMPARE(QGuiApplication::screens().size(), 2);
QScreen *secondaryScreen = QGuiApplication::screens().at(1);
QVERIFY(secondaryScreen);
compositor->sendRemoveOutput(firstOutput);
QTRY_COMPARE(QGuiApplication::screens().size(), 1);
compositor->sendMousePress(surface, QPoint(10, 10));
QTRY_COMPARE(window.mousePressEventCount, 1);
compositor->sendMouseRelease(surface);
QTRY_COMPARE(window.mouseReleaseEventCount, 1);
window.destroy();
QTRY_VERIFY(!compositor->surface());
}
void tst_WaylandClient::createDestroyWindow()
{
TestWindow window;