22static const QString s_socketName = QStringLiteral(
"wayland_test_activation-0");
33 void testSwitchToWindowToLeft();
34 void testSwitchToWindowToRight();
35 void testSwitchToWindowAbove();
36 void testSwitchToWindowBelow();
37 void testSwitchToWindowMaximized();
38 void testSwitchToWindowFullScreen();
41 void stackScreensHorizontally();
42 void stackScreensVertically();
45void ActivationTest::initTestCase()
47 qRegisterMetaType<Window *>();
52 QRect(0, 0, 1280, 1024),
53 QRect(1280, 0, 1280, 1024),
57 QVERIFY(applicationStartedSpy.wait());
59 QCOMPARE(outputs.count(), 2);
60 QCOMPARE(outputs[0]->geometry(), QRect(0, 0, 1280, 1024));
61 QCOMPARE(outputs[1]->geometry(), QRect(1280, 0, 1280, 1024));
64void ActivationTest::init()
72void ActivationTest::cleanup()
76 stackScreensHorizontally();
79void ActivationTest::testSwitchToWindowToLeft()
84 stackScreensHorizontally();
91 QVERIFY(window1->isActive());
97 QVERIFY(window2->isActive());
99 window1->move(QPoint(300, 200));
100 window2->move(QPoint(500, 200));
107 QVERIFY(window3->isActive());
113 QVERIFY(window4->isActive());
115 window3->move(QPoint(1380, 200));
116 window4->move(QPoint(1580, 200));
120 QVERIFY(window3->isActive());
124 QVERIFY(window2->isActive());
128 QVERIFY(window1->isActive());
132 QVERIFY(window4->isActive());
135 shellSurface1.reset();
137 shellSurface2.reset();
139 shellSurface3.reset();
141 shellSurface4.reset();
145void ActivationTest::testSwitchToWindowToRight()
150 stackScreensHorizontally();
157 QVERIFY(window1->isActive());
163 QVERIFY(window2->isActive());
165 window1->move(QPoint(300, 200));
166 window2->move(QPoint(500, 200));
173 QVERIFY(window3->isActive());
179 QVERIFY(window4->isActive());
181 window3->move(QPoint(1380, 200));
182 window4->move(QPoint(1580, 200));
186 QVERIFY(window1->isActive());
190 QVERIFY(window2->isActive());
194 QVERIFY(window3->isActive());
198 QVERIFY(window4->isActive());
201 shellSurface1.reset();
203 shellSurface2.reset();
205 shellSurface3.reset();
207 shellSurface4.reset();
211void ActivationTest::testSwitchToWindowAbove()
216 stackScreensVertically();
223 QVERIFY(window1->isActive());
229 QVERIFY(window2->isActive());
231 window1->move(QPoint(200, 300));
232 window2->move(QPoint(200, 500));
239 QVERIFY(window3->isActive());
245 QVERIFY(window4->isActive());
247 window3->move(QPoint(200, 1224));
248 window4->move(QPoint(200, 1424));
252 QVERIFY(window3->isActive());
256 QVERIFY(window2->isActive());
260 QVERIFY(window1->isActive());
264 QVERIFY(window4->isActive());
267 shellSurface1.reset();
269 shellSurface2.reset();
271 shellSurface3.reset();
273 shellSurface4.reset();
277void ActivationTest::testSwitchToWindowBelow()
282 stackScreensVertically();
289 QVERIFY(window1->isActive());
295 QVERIFY(window2->isActive());
297 window1->move(QPoint(200, 300));
298 window2->move(QPoint(200, 500));
305 QVERIFY(window3->isActive());
311 QVERIFY(window4->isActive());
313 window3->move(QPoint(200, 1224));
314 window4->move(QPoint(200, 1424));
318 QVERIFY(window1->isActive());
322 QVERIFY(window2->isActive());
326 QVERIFY(window3->isActive());
330 QVERIFY(window4->isActive());
333 shellSurface1.reset();
335 shellSurface2.reset();
337 shellSurface3.reset();
339 shellSurface4.reset();
343void ActivationTest::testSwitchToWindowMaximized()
349 stackScreensHorizontally();
358 QVERIFY(window1->isActive());
359 QVERIFY(surfaceConfigureRequestedSpy1.wait());
361 QVERIFY(surfaceConfigureRequestedSpy1.wait());
363 shellSurface1->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy1.last().at(0).value<quint32>());
364 Test::render(surface1.get(), toplevelConfigureRequestedSpy1.last().at(0).toSize(), Qt::red);
365 QVERIFY(frameGeometryChangedSpy1.wait());
373 QVERIFY(window2->isActive());
374 QVERIFY(surfaceConfigureRequestedSpy2.wait());
376 QVERIFY(surfaceConfigureRequestedSpy2.wait());
378 shellSurface2->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy2.last().at(0).value<quint32>());
379 Test::render(surface2.get(), toplevelConfigureRequestedSpy2.last().at(0).toSize(), Qt::red);
380 QVERIFY(frameGeometryChangedSpy2.wait());
383 QVERIFY(stackingOrder.indexOf(window1) < stackingOrder.indexOf(window2));
392 QVERIFY(window3->isActive());
398 QVERIFY(window4->isActive());
400 window3->move(QPoint(1380, 200));
401 window4->move(QPoint(1580, 200));
405 QVERIFY(window3->isActive());
409 QVERIFY(window2->isActive());
413 QVERIFY(window4->isActive());
416 shellSurface1.reset();
418 shellSurface2.reset();
420 shellSurface3.reset();
422 shellSurface4.reset();
426void ActivationTest::testSwitchToWindowFullScreen()
432 stackScreensVertically();
441 QVERIFY(window1->isActive());
442 QVERIFY(surfaceConfigureRequestedSpy1.wait());
444 QVERIFY(surfaceConfigureRequestedSpy1.wait());
446 shellSurface1->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy1.last().at(0).value<quint32>());
447 Test::render(surface1.get(), toplevelConfigureRequestedSpy1.last().at(0).toSize(), Qt::red);
448 QVERIFY(frameGeometryChangedSpy1.wait());
456 QVERIFY(window2->isActive());
457 QVERIFY(surfaceConfigureRequestedSpy2.wait());
459 QVERIFY(surfaceConfigureRequestedSpy2.wait());
461 shellSurface2->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy2.last().at(0).value<quint32>());
462 Test::render(surface2.get(), toplevelConfigureRequestedSpy2.last().at(0).toSize(), Qt::red);
463 QVERIFY(frameGeometryChangedSpy2.wait());
466 QVERIFY(stackingOrder.indexOf(window1) < stackingOrder.indexOf(window2));
467 QVERIFY(window1->isFullScreen());
468 QVERIFY(window2->isFullScreen());
475 QVERIFY(window3->isActive());
481 QVERIFY(window4->isActive());
483 window3->move(QPoint(200, 1224));
484 window4->move(QPoint(200, 1424));
488 QVERIFY(window3->isActive());
492 QVERIFY(window2->isActive());
496 QVERIFY(window4->isActive());
499 shellSurface1.reset();
501 shellSurface2.reset();
503 shellSurface3.reset();
505 shellSurface4.reset();
509void ActivationTest::stackScreensHorizontally()
514 const QList<QRect> screenGeometries{
515 QRect(0, 0, 1280, 1024),
516 QRect(1280, 0, 1280, 1024),
521void ActivationTest::stackScreensVertically()
526 const QList<QRect> screenGeometries{
527 QRect(0, 0, 1280, 1024),
528 QRect(0, 1024, 1280, 1024),