From 8d9268c5c1a4e3346f4960cf239c822aca01fe83 Mon Sep 17 00:00:00 2001 From: Pier Luigi Fiorini Date: Tue, 28 Aug 2018 20:17:42 +0200 Subject: Test output related signals from QWaylandCompositor These signals were never tested, in fact there was a bug where outputAdded was not emitted if a new output was added with QWaylandCompositor::setDefaultOutput() that was fixed in 9875a14daaec12ca65d3cb4a2aaf2c4582e6191d. Also while we are here, set the default output for TestCompositor. Change-Id: I21c2ff2f51f52b38f2dc992bcc9c03fd3071e82d Reviewed-by: Johan Helsing --- tests/auto/compositor/compositor/testcompositor.cpp | 4 +++- tests/auto/compositor/compositor/tst_compositor.cpp | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/auto/compositor/compositor/testcompositor.cpp b/tests/auto/compositor/compositor/testcompositor.cpp index 22ecf28cb..d5967a416 100644 --- a/tests/auto/compositor/compositor/testcompositor.cpp +++ b/tests/auto/compositor/compositor/testcompositor.cpp @@ -41,7 +41,9 @@ TestCompositor::TestCompositor(bool createInputDev) void TestCompositor::create() { - new QWaylandOutput(this, nullptr); + auto output = new QWaylandOutput(this, nullptr); + setDefaultOutput(output); + QWaylandCompositor::create(); connect(this, &QWaylandCompositor::surfaceCreated, this, &TestCompositor::onSurfaceCreated); diff --git a/tests/auto/compositor/compositor/tst_compositor.cpp b/tests/auto/compositor/compositor/tst_compositor.cpp index 0e11618aa..6c4aa1070 100644 --- a/tests/auto/compositor/compositor/tst_compositor.cpp +++ b/tests/auto/compositor/compositor/tst_compositor.cpp @@ -79,7 +79,7 @@ private slots: void mapSurface(); void mapSurfaceHiDpi(); void frameCallback(); - void removeOutput(); + void outputs(); void customSurface(); void advertisesXdgShellSupport(); @@ -622,18 +622,33 @@ void tst_WaylandCompositor::frameCallback() wl_surface_destroy(surface); } -void tst_WaylandCompositor::removeOutput() +void tst_WaylandCompositor::outputs() { TestCompositor compositor; + + QSignalSpy defaultOutputSpy(&compositor, SIGNAL(defaultOutputChanged())); + + compositor.create(); + + QSignalSpy outputAddedSpy(&compositor, SIGNAL(outputAdded(QWaylandOutput*))); + QSignalSpy outputRemovedSpy(&compositor, SIGNAL(outputRemoved(QWaylandOutput*))); + QWindow window; window.resize(800, 600); + auto output = new QWaylandOutput(&compositor, &window); + QTRY_COMPARE(outputAddedSpy.count(), 1); + + compositor.setDefaultOutput(output); + QTRY_COMPARE(defaultOutputSpy.count(), 2); - compositor.create(); MockClient client; QTRY_COMPARE(client.m_outputs.size(), 2); delete output; + QTRY_COMPARE(outputRemovedSpy.count(), 1); + QEXPECT_FAIL("", "FIXME: defaultOutputChanged() is not emitted when the default output is removed", Continue); + QTRY_COMPARE(defaultOutputSpy.count(), 3); compositor.flushClients(); QTRY_COMPARE(client.m_outputs.size(), 1); } -- cgit v1.2.3