GCC Code Coverage Report


Directory: ./
File: autotests/client/output.cpp
Date: 2024-01-22 17:25:27
Exec Total Coverage
Lines: 482 484 99.6%
Branches: 884 1794 49.3%

Line Branch Exec Source
1 /********************************************************************
2 Copyright © 2020 Roman Gilg <subdiff@gmail.com>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) version 3, or any
8 later version accepted by the membership of KDE e.V. (or its
9 successor approved by the membership of KDE e.V.), which shall
10 act as a proxy defined in Section 6 of version 3 of the license.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library. If not, see <http://www.gnu.org/licenses/>.
19 *********************************************************************/
20 #include <QtTest>
21
22 #include "../../src/client/connection_thread.h"
23 #include "../../src/client/dpms.h"
24 #include "../../src/client/event_queue.h"
25 #include "../../src/client/output.h"
26 #include "../../src/client/registry.h"
27
28 #include "../../server/display.h"
29 #include "../../server/dpms.h"
30 #include "../../server/output_manager.h"
31
32 #include <wayland-client-protocol.h>
33
34 namespace Srv = Wrapland::Server;
35 namespace Clt = Wrapland::Client;
36
37 class TestOutput : public QObject
38 {
39 Q_OBJECT
40 public:
41 explicit TestOutput(QObject* parent = nullptr);
42 private Q_SLOTS:
43 void init();
44 void cleanup();
45
46 void testRegistry();
47 void testModeChanges();
48 void testScaleChange();
49
50 void testSubpixel_data();
51 void testSubpixel();
52
53 void testTransform_data();
54 void testTransform();
55
56 void testDpms_data();
57 void testDpms();
58
59 void testDpmsRequestMode_data();
60 void testDpmsRequestMode();
61
62 private:
63 struct {
64 std::unique_ptr<Wrapland::Server::Display> display;
65 std::unique_ptr<Wrapland::Server::output> output;
66 std::unique_ptr<Wrapland::Server::output_manager> output_manager;
67 } server;
68
69 Clt::ConnectionThread* m_connection;
70 Clt::EventQueue* m_queue;
71 QThread* m_thread;
72 };
73
74 constexpr auto socket_name{"wrapland-test-output-0"};
75
76 2 TestOutput::TestOutput(QObject* parent)
77 1 : QObject(parent)
78 1 , m_connection(nullptr)
79 1 , m_thread(nullptr)
80 1 {
81 1 }
82
83 22 void TestOutput::init()
84 {
85 22 server.display = std::make_unique<Wrapland::Server::Display>();
86
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
22 server.display->set_socket_name(std::string(socket_name));
87 22 server.display->start();
88
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 QVERIFY(server.display->running());
89
90 22 server.output_manager = std::make_unique<Wrapland::Server::output_manager>(*server.display);
91
3/12
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
22 Srv::output_metadata meta{.name = "HDMI-A", .make = "Foocorp", .model = "Barmodel"};
92
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output = std::make_unique<Wrapland::Server::output>(meta, *server.output_manager);
93
94
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->get_state().mode.size, QSize());
95
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QCOMPARE(server.output->get_state().mode.refresh_rate, 60000);
96
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->add_mode(Srv::output_mode{QSize(800, 600), 50000, true});
97
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->get_state().mode.size, QSize(800, 600));
98
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QCOMPARE(server.output->get_state().mode.refresh_rate, 50000);
99
100 22 auto mode = Srv::output_mode{QSize(1024, 768)};
101
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->add_mode(mode);
102
103
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->add_mode(Srv::output_mode{QSize(1280, 1024), 90000});
104
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->get_state().mode.size, QSize(1280, 1024));
105
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QCOMPARE(server.output->get_state().mode.refresh_rate, 90000);
106
107
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 auto state = server.output->get_state();
108 22 state.mode = mode;
109
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->set_state(state);
110
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->get_state().mode.size, QSize(1024, 768));
111
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QCOMPARE(server.output->get_state().mode.refresh_rate, 60000);
112
113
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->dpms_supported(), false);
114
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
22 QCOMPARE(server.output->dpms_mode(), Srv::output_dpms_mode::off);
115
116
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 state = server.output->get_state();
117 22 state.enabled = true;
118
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->set_state(state);
119
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 server.output->done();
120
121 // setup connection
122
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
22 m_connection = new Clt::ConnectionThread;
123
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 QSignalSpy connectedSpy(m_connection, &Clt::ConnectionThread::establishedChanged);
124
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QVERIFY(connectedSpy.isValid());
125
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 m_connection->setSocketName(QString::fromStdString(socket_name));
126
127
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
22 m_thread = new QThread(this);
128
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 m_connection->moveToThread(m_thread);
129
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 m_thread->start();
130
131
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 m_connection->establishConnection();
132
6/12
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 22 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 22 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 22 times.
22 QVERIFY(connectedSpy.count() || connectedSpy.wait());
133
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 22 times.
22 QCOMPARE(connectedSpy.count(), 1);
134
135
2/4
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 22 times.
22 m_queue = new Clt::EventQueue(this);
136
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QVERIFY(!m_queue->isValid());
137
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 m_queue->setup(m_connection);
138
3/6
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
22 QVERIFY(m_queue->isValid());
139
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 22 times.
22 }
140
141 22 void TestOutput::cleanup()
142 {
143
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 22 times.
22 if (m_queue) {
144
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 delete m_queue;
145 22 m_queue = nullptr;
146 22 }
147
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 22 times.
22 if (m_thread) {
148 22 m_thread->quit();
149 22 m_thread->wait();
150
1/2
✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
22 delete m_thread;
151 22 m_thread = nullptr;
152 22 }
153
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 22 times.
22 delete m_connection;
154 22 m_connection = nullptr;
155
156 22 server = {};
157 22 }
158
159 1 void TestOutput::testRegistry()
160 {
161
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QCOMPARE(server.output->get_state().geometry.topLeft(), QPoint(0, 0));
162
163 1 auto state = server.output->get_state();
164 1 state.geometry = QRectF(QPoint(100, 50), QSize());
165 1 server.output->set_state(state);
166
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QCOMPARE(server.output->get_state().geometry.topLeft(), QPoint(100, 50));
167
168 1 auto metadata = server.output->get_metadata();
169
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(metadata.physical_size, QSize());
170
171 1 metadata.physical_size = {200, 100};
172
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_metadata(metadata);
173
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(server.output->get_metadata().physical_size, QSize(200, 100));
174
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
175
176
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Registry registry;
177
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy announced(&registry, &Clt::Registry::outputAnnounced);
178
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
179
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(registry.isValid());
180
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
181
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
182
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(announced.wait());
183
184
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Output output;
185
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!output.isValid());
186
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.geometry(), QRect());
187
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.globalPosition(), QPoint());
188
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.manufacturer(), QString());
189
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.model(), QString());
190
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.physicalSize(), QSize());
191
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.pixelSize(), QSize());
192
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.refreshRate(), 0);
193
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 1);
194
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.subPixel(), Clt::Output::SubPixel::Unknown);
195
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.transform(), Clt::Output::Transform::Normal);
196
197
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy outputChanged(&output, &Clt::Output::changed);
198
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(outputChanged.isValid());
199
200
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 auto o = registry.bindOutput(announced.first().first().value<quint32>(),
201
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 announced.first().last().value<quint32>());
202
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!Clt::Output::get(o));
203
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 output.setup(o);
204
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(Clt::Output::get(o), &output);
205
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
206
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
207
208
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.geometry(), QRect(100, 50, 1024, 768));
209
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.globalPosition(), QPoint(100, 50));
210
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(output.manufacturer(), QStringLiteral("Foocorp"));
211
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(output.model(), QStringLiteral("Barmodel"));
212
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.physicalSize(), QSize(200, 100));
213
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.pixelSize(), QSize(1024, 768));
214
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.refreshRate(), 60000);
215
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 1);
216 // for xwayland output it's unknown
217
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.subPixel(), Clt::Output::SubPixel::Unknown);
218 // for xwayland transform is normal
219
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.transform(), Clt::Output::Transform::Normal);
220
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
221
222 1 void TestOutput::testModeChanges()
223 {
224 // verify the server modes
225 1 auto const serverModes = server.output->modes();
226
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(serverModes.size(), 3);
227
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverModes.at(0).size, QSize(800, 600));
228
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverModes.at(1).size, QSize(1024, 768));
229
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverModes.at(2).size, QSize(1280, 1024));
230
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverModes.at(0).refresh_rate, 50000);
231
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverModes.at(1).refresh_rate, 60000);
232
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverModes.at(2).refresh_rate, 90000);
233
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(serverModes.at(0).preferred);
234
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(serverModes.at(1).id, server.output->get_state().mode.id);
235
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!serverModes.at(2).preferred);
236
237 using namespace Clt;
238
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Registry registry;
239
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QSignalSpy announced(&registry, &Clt::Registry::outputAnnounced);
240
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setEventQueue(m_queue);
241
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
242
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(registry.isValid());
243
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
244
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
245
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(announced.wait());
246
247
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Output output;
248
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QSignalSpy outputChanged(&output, &Clt::Output::changed);
249
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(outputChanged.isValid());
250
251
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy modeAddedSpy(&output, &Clt::Output::modeAdded);
252
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(modeAddedSpy.isValid());
253
254
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
2 output.setup(registry.bindOutput(announced.first().first().value<quint32>(),
255
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 announced.first().last().value<quint32>()));
256
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
257
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
258
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modeAddedSpy.count(), 3);
259
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(0).first().value<Output::Mode>().size, QSize(800, 600));
260
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(0).first().value<Output::Mode>().refreshRate, 50000);
261
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(0).first().value<Output::Mode>().flags,
262 Output::Mode::Flags(Output::Mode::Flag::Preferred));
263
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(0).first().value<Output::Mode>().output, QPointer<Output>(&output));
264
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(1).first().value<Output::Mode>().size, QSize(1280, 1024));
265
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(1).first().value<Output::Mode>().refreshRate, 90000);
266
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(1).first().value<Output::Mode>().flags,
267 Output::Mode::Flags(Output::Mode::Flag::None));
268
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(1).first().value<Output::Mode>().output, QPointer<Output>(&output));
269
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(2).first().value<Output::Mode>().size, QSize(1024, 768));
270
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(2).first().value<Output::Mode>().refreshRate, 60000);
271
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(2).first().value<Output::Mode>().flags,
272 Output::Mode::Flags(Output::Mode::Flag::Current));
273
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(modeAddedSpy.at(2).first().value<Output::Mode>().output, QPointer<Output>(&output));
274
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QList<Output::Mode> const& modes = output.modes();
275
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes.size(), 3);
276
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modes.at(0), modeAddedSpy.at(0).first().value<Output::Mode>());
277
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modes.at(1), modeAddedSpy.at(1).first().value<Output::Mode>());
278
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(modes.at(2), modeAddedSpy.at(2).first().value<Output::Mode>());
279
280
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.pixelSize(), QSize(1024, 768));
281
282 // change the current mode
283
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 outputChanged.clear();
284
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy modeChangedSpy(&output, &Clt::Output::modeChanged);
285
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(modeChangedSpy.isValid());
286
287
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(server.output->get_state().mode.size, QSize(1024, 768));
288
289 // Setting a non-existing mode.
290
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto state = server.output->get_state();
291 1 state.mode = Srv::output_mode{QSize(800, 600)};
292
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
293
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(server.output->get_state().mode.size, QSize(1024, 768));
294
295
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 state = server.output->get_state();
296
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 state.mode = serverModes.at(0);
297
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
298
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(server.output->get_state().mode.size, QSize(800, 600));
299
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
300
301
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(modeChangedSpy.wait());
302
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (modeChangedSpy.size() == 1) {
303 QVERIFY(modeChangedSpy.wait());
304 }
305
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modeChangedSpy.size(), 2);
306 // the one which lost the current flag
307
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().size, QSize(1024, 768));
308
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().refreshRate, 60000);
309
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().flags, Output::Mode::Flags());
310 // the one which got the current flag
311
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().size, QSize(800, 600));
312
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().refreshRate, 50000);
313
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().flags,
314 Output::Mode::Flags(Output::Mode::Flag::Current | Output::Mode::Flag::Preferred));
315
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(!outputChanged.isEmpty());
316
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.pixelSize(), QSize(800, 600));
317
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QList<Output::Mode> const& modes2 = output.modes();
318
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(0).size, QSize(1280, 1024));
319
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QCOMPARE(modes2.at(0).refreshRate, 90000);
320
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(0).flags, Output::Mode::Flag::None);
321
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(1).size, QSize(1024, 768));
322
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QCOMPARE(modes2.at(1).refreshRate, 60000);
323
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(1).flags, Output::Mode::Flag::None);
324
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(2).size, QSize(800, 600));
325
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(2).refreshRate, 50000);
326
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modes2.at(2).flags, Output::Mode::Flag::Current | Output::Mode::Flag::Preferred);
327
328 // change once more
329
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 outputChanged.clear();
330
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 modeChangedSpy.clear();
331
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 state = server.output->get_state();
332 1 state.mode = Srv::output_mode{QSize(1280, 1024), 90000};
333
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
334
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server.output->get_state().mode.refresh_rate, 90000);
335
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
336
337
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(modeChangedSpy.wait());
338
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 if (modeChangedSpy.size() == 1) {
339 QVERIFY(modeChangedSpy.wait());
340 }
341
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modeChangedSpy.size(), 2);
342 // the one which lost the current flag
343
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().size, QSize(800, 600));
344
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().refreshRate, 50000);
345
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.first().first().value<Output::Mode>().flags,
346 Output::Mode::Flags(Output::Mode::Flag::Preferred));
347 // the one which got the current flag
348
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().size, QSize(1280, 1024));
349
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().refreshRate, 90000);
350
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(modeChangedSpy.last().first().value<Output::Mode>().flags,
351 Output::Mode::Flags(Output::Mode::Flag::Current));
352
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!outputChanged.isEmpty());
353
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(output.pixelSize(), QSize(1280, 1024));
354
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
355
356 1 void TestOutput::testScaleChange()
357 {
358 1 Clt::Registry registry;
359
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy announced(&registry, &Clt::Registry::outputAnnounced);
360
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
361
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(registry.isValid());
362
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
363
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
364
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(announced.wait());
365
366
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Output output;
367
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy outputChanged(&output, &Clt::Output::changed);
368
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(outputChanged.isValid());
369
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
2 output.setup(registry.bindOutput(announced.first().first().value<quint32>(),
370
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 announced.first().last().value<quint32>()));
371
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
372
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
373
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 1);
374
375 // change the scale
376
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 outputChanged.clear();
377
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto state = server.output->get_state();
378 1 state.mode = Srv::output_mode{QSize(1280, 1024), 90000};
379 1 state.geometry = QRectF(QPoint(0, 0), QSize(1280, 1024));
380
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
381
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server.output->get_state().client_scale, 1);
382
383 1 state.geometry = QRectF(QPoint(0, 0), QSize(640, 512));
384
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
385
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server.output->get_state().client_scale, 2);
386
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
387
388
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
389
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 2);
390
391 // changing to same value should not trigger
392 1 state.geometry = QRectF(QPoint(0, 0), QSize(640, 512));
393
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
394
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server.output->get_state().client_scale, 2);
395
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
396
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!outputChanged.wait(500));
397
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 2);
398
399 // changing to a different value with same scale should not trigger
400 1 state.geometry = QRectF(QPoint(0, 0), QSize(800, 600));
401
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
402
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server.output->get_state().client_scale, 2);
403
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
404
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!outputChanged.wait(500));
405
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 2);
406
407 // change once more
408
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 outputChanged.clear();
409 1 state.mode = Srv::output_mode{QSize(800, 600), 50000};
410
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
411
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
412
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
413
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 1);
414
415 // change once more
416
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 outputChanged.clear();
417 1 state.mode = Srv::output_mode{QSize(1280, 1024), 90000};
418 1 state.geometry = QRectF(QPoint(100, 200), QSize(1280, 1025));
419
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->set_state(state);
420
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.output->done();
421
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(outputChanged.wait());
422
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(output.scale(), 1);
423
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
424
425 1 void TestOutput::testSubpixel_data()
426 {
427 1 QTest::addColumn<Clt::Output::SubPixel>("expected");
428 1 QTest::addColumn<Srv::output_subpixel>("actual");
429
430 1 QTest::newRow("none") << Clt::Output::SubPixel::None << Srv::output_subpixel::none;
431 1 QTest::newRow("horizontal/rgb")
432 1 << Clt::Output::SubPixel::HorizontalRGB << Srv::output_subpixel::horizontal_rgb;
433 1 QTest::newRow("horizontal/bgr")
434 1 << Clt::Output::SubPixel::HorizontalBGR << Srv::output_subpixel::horizontal_bgr;
435 1 QTest::newRow("vertical/rgb") << Clt::Output::SubPixel::VerticalRGB
436 1 << Srv::output_subpixel::vertical_rgb;
437 1 QTest::newRow("vertical/bgr") << Clt::Output::SubPixel::VerticalBGR
438 1 << Srv::output_subpixel::vertical_bgr;
439 1 }
440
441 5 void TestOutput::testSubpixel()
442 {
443 5 QFETCH(Srv::output_subpixel, actual);
444
445 5 auto state = server.output->get_state();
446
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
5 QCOMPARE(state.subpixel, Srv::output_subpixel::unknown);
447
448 5 state.subpixel = actual;
449 5 server.output->set_state(state);
450
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 QCOMPARE(server.output->get_state().subpixel, actual);
451 5 server.output->done();
452
453 5 Clt::Registry registry;
454
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 QSignalSpy announced(&registry, &Clt::Registry::outputAnnounced);
455
2/4
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
5 registry.create(m_connection->display());
456
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
5 QVERIFY(registry.isValid());
457
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 registry.setup();
458
2/4
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
5 wl_display_flush(m_connection->display());
459
5/10
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
5 QVERIFY(announced.wait());
460
461
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 Clt::Output output;
462
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 QSignalSpy outputChanged(&output, &Clt::Output::changed);
463
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
5 QVERIFY(outputChanged.isValid());
464
5/10
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 5 times.
✗ Branch 9 not taken.
10 output.setup(registry.bindOutput(announced.first().first().value<quint32>(),
465
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
5 announced.first().last().value<quint32>()));
466
2/4
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
5 wl_display_flush(m_connection->display());
467
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
5 if (outputChanged.isEmpty()) {
468
5/10
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
5 QVERIFY(outputChanged.wait());
469 5 }
470
471
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
5 QTEST(output.subPixel(), "expected");
472
473 // change back to unknown
474
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 outputChanged.clear();
475 5 state.subpixel = Srv::output_subpixel::unknown;
476
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 server.output->set_state(state);
477
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
5 QCOMPARE(server.output->get_state().subpixel, Srv::output_subpixel::unknown);
478
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 server.output->done();
479
480
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
5 if (outputChanged.isEmpty()) {
481
5/10
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
5 QVERIFY(outputChanged.wait());
482 5 }
483
3/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
5 QCOMPARE(output.subPixel(), Clt::Output::SubPixel::Unknown);
484
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
5 }
485
486 1 void TestOutput::testTransform_data()
487 {
488 1 QTest::addColumn<Clt::Output::Transform>("expected");
489 1 QTest::addColumn<Srv::output_transform>("actual");
490
491 1 QTest::newRow("90") << Clt::Output::Transform::Rotated90 << Srv::output_transform::rotated_90;
492 1 QTest::newRow("180") << Clt::Output::Transform::Rotated180
493 1 << Srv::output_transform::rotated_180;
494 1 QTest::newRow("270") << Clt::Output::Transform::Rotated270
495 1 << Srv::output_transform::rotated_270;
496 1 QTest::newRow("Flipped") << Clt::Output::Transform::Flipped << Srv::output_transform::flipped;
497 1 QTest::newRow("Flipped 90") << Clt::Output::Transform::Flipped90
498 1 << Srv::output_transform::flipped_90;
499 1 QTest::newRow("Flipped 180") << Clt::Output::Transform::Flipped180
500 1 << Srv::output_transform::flipped_180;
501 1 QTest::newRow("Flipped 280") << Clt::Output::Transform::Flipped270
502 1 << Srv::output_transform::flipped_270;
503 1 }
504
505 7 void TestOutput::testTransform()
506 {
507 7 QFETCH(Srv::output_transform, actual);
508
509 7 auto state = server.output->get_state();
510
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 QCOMPARE(state.transform, Srv::output_transform::normal);
511
512 7 state.transform = actual;
513 7 server.output->set_state(state);
514
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 QCOMPARE(server.output->get_state().transform, actual);
515 7 server.output->done();
516
517 7 Clt::Registry registry;
518
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 QSignalSpy announced(&registry, &Clt::Registry::outputAnnounced);
519
2/4
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
7 registry.create(m_connection->display());
520
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
7 QVERIFY(registry.isValid());
521
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 registry.setup();
522
2/4
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
7 wl_display_flush(m_connection->display());
523
5/10
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7 times.
7 QVERIFY(announced.wait());
524
525
4/8
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
14 auto output = registry.createOutput(announced.first().first().value<quint32>(),
526
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
7 announced.first().last().value<quint32>(),
527 &registry);
528
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 QSignalSpy outputChanged(output, &Clt::Output::changed);
529
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
7 QVERIFY(outputChanged.isValid());
530
2/4
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
7 wl_display_flush(m_connection->display());
531
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 if (outputChanged.isEmpty()) {
532
5/10
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7 times.
7 QVERIFY(outputChanged.wait());
533 7 }
534
535
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 7 times.
7 QTEST(output->transform(), "expected");
536
537 // change back to normal
538
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 outputChanged.clear();
539 7 state.transform = Srv::output_transform::normal;
540
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 server.output->set_state(state);
541
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 7 times.
7 QCOMPARE(server.output->get_state().transform, Srv::output_transform::normal);
542
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 server.output->done();
543
544
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 if (outputChanged.isEmpty()) {
545
5/10
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 7 times.
7 QVERIFY(outputChanged.wait());
546 7 }
547
3/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 7 times.
7 QCOMPARE(output->transform(), Clt::Output::Transform::Normal);
548
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 7 times.
7 }
549
550 1 void TestOutput::testDpms_data()
551 {
552 1 QTest::addColumn<Clt::Dpms::Mode>("client_mode");
553 1 QTest::addColumn<Srv::output_dpms_mode>("server_mode");
554
555 1 QTest::newRow("Standby") << Clt::Dpms::Mode::Standby << Srv::output_dpms_mode::standby;
556 1 QTest::newRow("Suspend") << Clt::Dpms::Mode::Suspend << Srv::output_dpms_mode::suspend;
557 1 QTest::newRow("On") << Clt::Dpms::Mode::On << Srv::output_dpms_mode::on;
558 1 }
559
560 3 void TestOutput::testDpms()
561 {
562 3 auto serverDpmsManager = std::make_unique<Wrapland::Server::DpmsManager>(server.display.get());
563
564 // set Dpms on the Output
565
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy serverDpmsSupportedChangedSpy(server.output.get(),
566 &Srv::output::dpms_supported_changed);
567
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(serverDpmsSupportedChangedSpy.isValid());
568
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(server.output->dpms_supported(), false);
569
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.output->set_dpms_supported(true);
570
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(server.output->dpms_supported(), true);
571
572
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 Clt::Registry registry;
573
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 registry.setEventQueue(m_queue);
574
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy announced(&registry, &Clt::Registry::interfacesAnnounced);
575
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(announced.isValid());
576
577
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy dpmsAnnouncedSpy(&registry, &Clt::Registry::dpmsAnnounced);
578
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(dpmsAnnouncedSpy.isValid());
579
580
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 registry.create(m_connection->display());
581
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(registry.isValid());
582
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 registry.setup();
583
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 m_connection->flush();
584
585
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(announced.wait());
586
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(dpmsAnnouncedSpy.count(), 1);
587
588 3 auto output
589
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 = registry.createOutput(registry.interface(Clt::Registry::Interface::Output).name,
590
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 registry.interface(Clt::Registry::Interface::Output).version,
591 &registry);
592
593
4/8
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
6 auto dpmsManager = registry.createDpmsManager(dpmsAnnouncedSpy.first().first().value<quint32>(),
594
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 dpmsAnnouncedSpy.first().last().value<quint32>(),
595 &registry);
596
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(dpmsManager->isValid());
597
598
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 auto* dpms = dpmsManager->getDpms(output, &registry);
599
600
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy clientDpmsSupportedChangedSpy(dpms, &Clt::Dpms::supportedChanged);
601
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(clientDpmsSupportedChangedSpy.isValid());
602
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(dpms->isValid());
603
604
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(dpms->isSupported(), false);
605
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(dpms->mode(), Clt::Dpms::Mode::On);
606
607
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 m_connection->flush();
608
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(clientDpmsSupportedChangedSpy.wait());
609
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(clientDpmsSupportedChangedSpy.count(), 1);
610
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(dpms->isSupported(), true);
611
612 // and let's change to suspend
613
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy serverDpmsModeChangedSpy(server.output.get(), &Srv::output::dpms_mode_changed);
614
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(serverDpmsModeChangedSpy.isValid());
615
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy clientDpmsModeChangedSpy(dpms, &Clt::Dpms::modeChanged);
616
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(clientDpmsModeChangedSpy.isValid());
617
618
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(server.output->dpms_mode(), Srv::output_dpms_mode::off);
619
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 QFETCH(Srv::output_dpms_mode, server_mode);
620
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.output->set_dpms_mode(server_mode);
621
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(server.output->dpms_mode(), server_mode);
622
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(serverDpmsModeChangedSpy.count(), 1);
623
624
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(clientDpmsModeChangedSpy.wait());
625
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(clientDpmsModeChangedSpy.count(), 1);
626
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QTEST(dpms->mode(), "client_mode");
627
628 // Test supported changed
629
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy supportedChangedSpy(dpms, &Clt::Dpms::supportedChanged);
630
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(supportedChangedSpy.isValid());
631
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.output->set_dpms_supported(false);
632
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(supportedChangedSpy.wait());
633
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(supportedChangedSpy.count(), 1);
634
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(!dpms->isSupported());
635
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.output->set_dpms_supported(true);
636
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(supportedChangedSpy.wait());
637
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(supportedChangedSpy.count(), 2);
638
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(dpms->isSupported());
639
640 // and switch back to off
641
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.output->set_dpms_mode(Srv::output_dpms_mode::off);
642
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(clientDpmsModeChangedSpy.wait());
643
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 QCOMPARE(clientDpmsModeChangedSpy.count(), 2);
644
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QCOMPARE(dpms->mode(), Clt::Dpms::Mode::Off);
645
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 }
646
647 1 void TestOutput::testDpmsRequestMode_data()
648 {
649 1 QTest::addColumn<Clt::Dpms::Mode>("client_mode");
650 1 QTest::addColumn<Srv::output_dpms_mode>("server_mode");
651
652 1 QTest::newRow("Standby") << Clt::Dpms::Mode::Standby << Srv::output_dpms_mode::standby;
653 1 QTest::newRow("Suspend") << Clt::Dpms::Mode::Suspend << Srv::output_dpms_mode::suspend;
654 1 QTest::newRow("Off") << Clt::Dpms::Mode::Off << Srv::output_dpms_mode::off;
655 1 QTest::newRow("On") << Clt::Dpms::Mode::On << Srv::output_dpms_mode::on;
656 1 }
657
658 4 void TestOutput::testDpmsRequestMode()
659 {
660 // This test verifies that requesting a dpms change from client side emits the signal on
661 // server side.
662
663 // Setup code
664 4 auto serverDpmsManager = std::make_unique<Wrapland::Server::DpmsManager>(server.display.get());
665
666 // set Dpms on the Output
667
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 QSignalSpy serverDpmsSupportedChangedSpy(server.output.get(),
668 &Srv::output::dpms_supported_changed);
669
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(serverDpmsSupportedChangedSpy.isValid());
670
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
4 QCOMPARE(server.output->dpms_supported(), false);
671
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 server.output->set_dpms_supported(true);
672
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
4 QCOMPARE(serverDpmsSupportedChangedSpy.count(), 1);
673
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
4 QCOMPARE(server.output->dpms_supported(), true);
674
675
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 Clt::Registry registry;
676
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 registry.setEventQueue(m_queue);
677
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 QSignalSpy announced(&registry, &Clt::Registry::interfacesAnnounced);
678
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(announced.isValid());
679
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 QSignalSpy dpmsAnnouncedSpy(&registry, &Clt::Registry::dpmsAnnounced);
680
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(dpmsAnnouncedSpy.isValid());
681
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 registry.create(m_connection->display());
682
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(registry.isValid());
683
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 registry.setup();
684
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 m_connection->flush();
685
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QVERIFY(announced.wait());
686
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
4 QCOMPARE(dpmsAnnouncedSpy.count(), 1);
687
688 4 auto output
689
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 = registry.createOutput(registry.interface(Clt::Registry::Interface::Output).name,
690
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 registry.interface(Clt::Registry::Interface::Output).version,
691 &registry);
692
693 4 auto* dpmsManager
694
4/8
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
8 = registry.createDpmsManager(dpmsAnnouncedSpy.first().first().value<quint32>(),
695
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 dpmsAnnouncedSpy.first().last().value<quint32>(),
696 &registry);
697
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(dpmsManager->isValid());
698
699
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 auto* dpms = dpmsManager->getDpms(output, &registry);
700 // and test request mode
701
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 QSignalSpy modeRequestedSpy(server.output.get(), &Srv::output::dpms_mode_requested);
702
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 QVERIFY(modeRequestedSpy.isValid());
703
704
2/4
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 QFETCH(Clt::Dpms::Mode, client_mode);
705
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 dpms->requestMode(client_mode);
706
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QVERIFY(modeRequestedSpy.wait());
707
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QTEST(modeRequestedSpy.last().first().value<Srv::output_dpms_mode>(), "server_mode");
708
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 }
709
710
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QTEST_GUILESS_MAIN(TestOutput)
711 #include "output.moc"
712