GCC Code Coverage Report


Directory: ./
File: autotests/client/plasma_window_model.cpp
Date: 2024-01-22 17:25:27
Exec Total Coverage
Lines: 719 721 99.7%
Branches: 1333 2860 46.6%

Line Branch Exec Source
1 /********************************************************************
2 Copyright © 2016 Martin Gräßlin <mgraesslin@kde.org>
3 Copyright © 2020 Roman Gilg <subdiff@gmail.com>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) version 3, or any
9 later version accepted by the membership of KDE e.V. (or its
10 successor approved by the membership of KDE e.V.), which shall
11 act as a proxy defined in Section 6 of version 3 of the license.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library. If not, see <http://www.gnu.org/licenses/>.
20 *********************************************************************/
21 #include "../../src/client/connection_thread.h"
22 #include "../../src/client/event_queue.h"
23 #include "../../src/client/plasmawindowmanagement.h"
24 #include "../../src/client/plasmawindowmodel.h"
25 #include "../../src/client/registry.h"
26
27 #include "../../server/display.h"
28 #include "../../server/plasma_virtual_desktop.h"
29 #include "../../server/plasma_window.h"
30
31 #include "../../tests/globals.h"
32
33 #include <QtTest>
34 #include <linux/input.h>
35
36 namespace Clt = Wrapland::Client;
37 namespace Srv = Wrapland::Server;
38
39 Q_DECLARE_METATYPE(Qt::MouseButton)
40
41 typedef void (Clt::PlasmaWindow::*ClientWindowSignal)();
42
2/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 Q_DECLARE_METATYPE(ClientWindowSignal)
43
44 typedef void (Srv::PlasmaWindow::*ServerWindowBoolSetter)(bool);
45
2/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 Q_DECLARE_METATYPE(ServerWindowBoolSetter)
46
47 typedef void (Srv::PlasmaWindow::*ServerWindowStringSetter)(QString const&);
48
2/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 Q_DECLARE_METATYPE(ServerWindowStringSetter)
49
50 typedef void (Srv::PlasmaWindow::*ServerWindowQuint32Setter)(quint32);
51 Q_DECLARE_METATYPE(ServerWindowQuint32Setter)
52
53 typedef void (Srv::PlasmaWindow::*ServerWindowIconSetter)(QIcon const&);
54 Q_DECLARE_METATYPE(ServerWindowIconSetter)
55
56 1 class PlasmaWindowModelTest : public QObject
57 {
58 Q_OBJECT
59 private Q_SLOTS:
60 void init();
61 void cleanup();
62
63 void testRoleNames_data();
64 void testRoleNames();
65
66 void testAddRemoveRows();
67
68 void testDefaultData_data();
69 void testDefaultData();
70
71 void testIsActive();
72 void testIsFullscreenable();
73 void testIsFullscreen();
74 void testIsMaximizable();
75 void testIsMaximized();
76 void testIsMinimizable();
77 void testIsMinimized();
78 void testIsKeepAbove();
79 void testIsKeepBelow();
80
81 void testIsDemandingAttention();
82 void testSkipTaskbar();
83 void testSkipSwitcher();
84
85 void testIsShadeable();
86 void testIsShaded();
87 void testIsMovable();
88 void testIsResizable();
89 void testIsVirtualDesktopChangeable();
90 void testIsCloseable();
91
92 void testGeometry();
93 void testTitle();
94 void testAppId();
95 void testPid();
96 void testVirtualDesktops();
97
98 // TODO icon: can we ensure a theme is installed on CI?
99 void testRequests();
100
101 // TODO: minimized geometry
102 // TODO: model reset
103 void testCreateWithUnmappedWindow();
104 void testChangeWindowAfterModelDestroy_data();
105 void testChangeWindowAfterModelDestroy();
106 void testCreateWindowAfterModelDestroy();
107
108 private:
109 bool testBooleanData(Clt::PlasmaWindowModel::AdditionalRoles role,
110 void (Srv::PlasmaWindow::*function)(bool));
111
112 1 struct {
113 std::unique_ptr<Wrapland::Server::Display> display;
114 Wrapland::Server::globals globals;
115 } server;
116
117 1 Clt::PlasmaWindowManagement* m_pw = nullptr;
118 1 Clt::ConnectionThread* m_connection = nullptr;
119 1 QThread* m_thread = nullptr;
120 1 Clt::EventQueue* m_queue = nullptr;
121 };
122
123 constexpr auto socket_name{"wrapland-test-fake-input-0"};
124
125 95 void PlasmaWindowModelTest::init()
126 {
127 95 server.display = std::make_unique<Wrapland::Server::Display>();
128
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 server.display->set_socket_name(socket_name);
129 95 server.display->start();
130
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 QVERIFY(server.display->running());
131
132 95 server.display->createShm();
133 190 server.globals.plasma_window_manager
134 190 = std::make_unique<Wrapland::Server::PlasmaWindowManager>(server.display.get());
135 190 server.globals.plasma_virtual_desktop_manager
136 190 = std::make_unique<Wrapland::Server::PlasmaVirtualDesktopManager>(server.display.get());
137
138
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 server.globals.plasma_virtual_desktop_manager->createDesktop("desktop1");
139
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 server.globals.plasma_virtual_desktop_manager->createDesktop("desktop2");
140 190 server.globals.plasma_window_manager->setVirtualDesktopManager(
141 95 server.globals.plasma_virtual_desktop_manager.get());
142
143 // Setup connection.
144
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_connection = new Clt::ConnectionThread;
145 95 QSignalSpy connectedSpy(m_connection, &Clt::ConnectionThread::establishedChanged);
146
3/6
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
95 QVERIFY(connectedSpy.isValid());
147
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 m_connection->setSocketName(socket_name);
148
149
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 m_thread = new QThread(this);
150
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_connection->moveToThread(m_thread);
151
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_thread->start();
152
153
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_connection->establishConnection();
154
6/12
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 95 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 95 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 95 times.
95 QVERIFY(connectedSpy.count() || connectedSpy.wait());
155
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 95 times.
95 QCOMPARE(connectedSpy.count(), 1);
156
157
2/4
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
95 m_queue = new Clt::EventQueue(this);
158
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_queue->setup(m_connection);
159
160
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 Clt::Registry registry;
161
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 QSignalSpy interfacesAnnouncedSpy(&registry, &Clt::Registry::interfacesAnnounced);
162
3/6
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
95 QVERIFY(interfacesAnnouncedSpy.isValid());
163
164
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 registry.setEventQueue(m_queue);
165
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 registry.create(m_connection);
166
3/6
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
95 QVERIFY(registry.isValid());
167
168
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 registry.setup();
169
5/10
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 95 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 95 times.
95 QVERIFY(interfacesAnnouncedSpy.wait());
170
171
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 m_pw = registry.createPlasmaWindowManagement(
172
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 registry.interface(Clt::Registry::Interface::PlasmaWindowManagement).name,
173
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 registry.interface(Clt::Registry::Interface::PlasmaWindowManagement).version,
174 this);
175
3/6
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95 times.
✗ Branch 5 not taken.
95 QVERIFY(m_pw->isValid());
176
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
95 }
177
178 95 void PlasmaWindowModelTest::cleanup()
179 {
180 #define CLEANUP(variable) \
181 if (variable) { \
182 delete variable; \
183 variable = nullptr; \
184 }
185
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 95 times.
95 CLEANUP(m_pw)
186
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 95 times.
95 CLEANUP(m_queue)
187
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
95 if (m_connection) {
188 95 m_connection->deleteLater();
189 95 m_connection = nullptr;
190 95 }
191
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
95 if (m_thread) {
192 95 m_thread->quit();
193 95 m_thread->wait();
194
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 95 times.
95 delete m_thread;
195 95 m_thread = nullptr;
196 95 }
197 #undef CLEANUP
198
199
1/2
✓ Branch 0 taken 95 times.
✗ Branch 1 not taken.
95 server = {};
200 95 }
201
202 18 bool PlasmaWindowModelTest::testBooleanData(Clt::PlasmaWindowModel::AdditionalRoles role,
203 void (Srv::PlasmaWindow::*function)(bool))
204 {
205 #define VERIFY(statement) \
206 if (!QTest::qVerify((statement), #statement, "", __FILE__, __LINE__)) \
207 return false;
208 #define COMPARE(actual, expected) \
209 if (!QTest::qCompare(actual, expected, #actual, #expected, __FILE__, __LINE__)) \
210 return false;
211
212 18 auto* model = m_pw->createWindowModel();
213
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 18 times.
18 VERIFY(model);
214
215 18 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
216
3/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
18 VERIFY(rowInsertedSpy.isValid());
217
218
1/2
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
18 QSignalSpy initSpy(m_pw, &Clt::PlasmaWindowManagement::windowCreated);
219
3/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
18 VERIFY(initSpy.isValid());
220
1/2
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
18 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
221
3/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
18 VERIFY(dataChangedSpy.isValid());
222
223
1/2
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
18 auto serverWindow = server.globals.plasma_window_manager->createWindow();
224
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 VERIFY(serverWindow);
225
226
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(dataChangedSpy.count(), 0);
227
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(initSpy.count(), 0);
228
229
5/10
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
18 VERIFY(rowInsertedSpy.wait());
230
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(initSpy.count(), 1);
231
232 // Wait for the first event announcing the icon on resource creation.
233
6/12
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 18 times.
✗ Branch 11 not taken.
18 VERIFY(dataChangedSpy.count() == 1 || dataChangedSpy.wait());
234
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(dataChangedSpy.count(), 1);
235
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(initSpy.count(), 1);
236
237 // The current API is not very well defined in regards to which evente we can except when.
238 // Make sure we do not get additional data changed signals before actually setting the data.
239
3/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
18 VERIFY(!dataChangedSpy.wait(100));
240
241
1/2
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
18 const QModelIndex index = model->index(0);
242
4/8
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 18 times.
18 COMPARE(model->data(index, role).toBool(), false);
243
244
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 18 times.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 (serverWindow->*(function))(true);
245
246
5/10
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
18 VERIFY(dataChangedSpy.wait());
247
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(dataChangedSpy.count(), 2);
248
249 // Check that there is only one data changed signal we receive.
250
3/6
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
18 VERIFY(!dataChangedSpy.wait(100));
251
252
5/10
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
18 COMPARE(dataChangedSpy.last().first().toModelIndex(), index);
253
6/12
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 18 times.
✗ Branch 11 not taken.
18 COMPARE(dataChangedSpy.last().last().value<QVector<int>>(), QVector<int>{int(role)});
254
4/8
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 18 times.
18 COMPARE(model->data(index, role).toBool(), true);
255
256
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 18 times.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 (serverWindow->*(function))(false);
257
5/10
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
18 VERIFY(dataChangedSpy.wait());
258
2/4
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
18 COMPARE(dataChangedSpy.count(), 3);
259
260
5/10
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
18 COMPARE(dataChangedSpy.last().first().toModelIndex(), index);
261
6/12
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 18 times.
✗ Branch 11 not taken.
18 COMPARE(dataChangedSpy.last().last().value<QVector<int>>(), QVector<int>{int(role)});
262
4/8
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 18 times.
18 COMPARE(model->data(index, role).toBool(), false);
263
264 #undef COMPARE
265 #undef VERIFY
266 18 return true;
267 18 }
268
269 1 void PlasmaWindowModelTest::testRoleNames_data()
270 {
271 1 QTest::addColumn<int>("role");
272 1 QTest::addColumn<QByteArray>("name");
273
274
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QTest::newRow("display") << int(Qt::DisplayRole) << QByteArrayLiteral("DisplayRole");
275
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArrayLiteral("DecorationRole");
276
277
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QTest::newRow("AppId") << int(Clt::PlasmaWindowModel::AppId) << QByteArrayLiteral("AppId");
278
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QTest::newRow("Pid") << int(Clt::PlasmaWindowModel::Pid) << QByteArrayLiteral("Pid");
279 2 QTest::newRow("IsActive") << int(Clt::PlasmaWindowModel::IsActive)
280
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsActive");
281 2 QTest::newRow("IsFullscreenable")
282
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << int(Clt::PlasmaWindowModel::IsFullscreenable) << QByteArrayLiteral("IsFullscreenable");
283 2 QTest::newRow("IsFullscreen") << int(Clt::PlasmaWindowModel::IsFullscreen)
284
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsFullscreen");
285 2 QTest::newRow("IsMaximizable")
286
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << int(Clt::PlasmaWindowModel::IsMaximizable) << QByteArrayLiteral("IsMaximizable");
287 2 QTest::newRow("IsMaximized") << int(Clt::PlasmaWindowModel::IsMaximized)
288
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsMaximized");
289 2 QTest::newRow("IsMinimizable")
290
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << int(Clt::PlasmaWindowModel::IsMinimizable) << QByteArrayLiteral("IsMinimizable");
291 2 QTest::newRow("IsMinimized") << int(Clt::PlasmaWindowModel::IsMinimized)
292
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsMinimized");
293 2 QTest::newRow("IsKeepAbove") << int(Clt::PlasmaWindowModel::IsKeepAbove)
294
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsKeepAbove");
295 2 QTest::newRow("IsKeepBelow") << int(Clt::PlasmaWindowModel::IsKeepBelow)
296
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsKeepBelow");
297 2 QTest::newRow("IsOnAllDesktops")
298
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << int(Clt::PlasmaWindowModel::IsOnAllDesktops) << QByteArrayLiteral("IsOnAllDesktops");
299 2 QTest::newRow("IsDemandingAttention") << int(Clt::PlasmaWindowModel::IsDemandingAttention)
300
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsDemandingAttention");
301 2 QTest::newRow("SkipTaskbar") << int(Clt::PlasmaWindowModel::SkipTaskbar)
302
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("SkipTaskbar");
303 2 QTest::newRow("SkipSwitcher") << int(Clt::PlasmaWindowModel::SkipSwitcher)
304
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("SkipSwitcher");
305 2 QTest::newRow("IsShadeable") << int(Clt::PlasmaWindowModel::IsShadeable)
306
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsShadeable");
307 2 QTest::newRow("IsShaded") << int(Clt::PlasmaWindowModel::IsShaded)
308
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsShaded");
309 2 QTest::newRow("IsMovable") << int(Clt::PlasmaWindowModel::IsMovable)
310
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsMovable");
311 2 QTest::newRow("IsResizable") << int(Clt::PlasmaWindowModel::IsResizable)
312
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsResizable");
313 2 QTest::newRow("IsVirtualDesktopChangeable")
314 1 << int(Clt::PlasmaWindowModel::IsVirtualDesktopChangeable)
315
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsVirtualDesktopChangeable");
316 2 QTest::newRow("IsCloseable") << int(Clt::PlasmaWindowModel::IsCloseable)
317
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("IsCloseable");
318 2 QTest::newRow("Geometry") << int(Clt::PlasmaWindowModel::Geometry)
319
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QByteArrayLiteral("Geometry");
320 1 }
321
322 24 void PlasmaWindowModelTest::testRoleNames()
323 {
324 // Just verifies that all role names are available.
325 24 auto* model = m_pw->createWindowModel();
326
1/2
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
24 QVERIFY(model);
327
328 24 QHash<int, QByteArray> const roles = model->roleNames();
329
330
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
24 QFETCH(int, role);
331 24 auto it = roles.find(role);
332
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 24 times.
24 QVERIFY(it != roles.end());
333
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
24 QTEST(it.value(), "name");
334
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 24 times.
24 }
335
336 1 void PlasmaWindowModelTest::testAddRemoveRows()
337 {
338 // This test verifies that adding/removing rows to the Model works.
339 1 auto* model = m_pw->createWindowModel();
340
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
341
342
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QCOMPARE(model->rowCount(), 0);
343
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QVERIFY(!model->index(0).isValid());
344
345 // Now let's add a row.
346 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
347
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(rowInsertedSpy.isValid());
348
349 // This happens by creating a PlasmaWindow on server side.
350
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
351
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
352
353
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(rowInsertedSpy.wait());
354
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(rowInsertedSpy.count(), 1);
355
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 not taken.
✓ Branch 7 taken 1 times.
1 QVERIFY(!rowInsertedSpy.first().at(0).toModelIndex().isValid());
356
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(rowInsertedSpy.first().at(1).toInt(), 0);
357
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(rowInsertedSpy.first().at(2).toInt(), 0);
358
359 // The model should have a row now.
360
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(model->rowCount(), 1);
361
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(model->index(0).isValid());
362 // That index doesn't have children.
363
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->rowCount(model->index(0)), 0);
364
365 // Process events in order to ensure that the resource is created on server side before we
366 // unmap the window.
367
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::instance()->processEvents(QEventLoop::WaitForMoreEvents);
368
369 // Now let's remove that again.
370
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy rowRemovedSpy(model, &Clt::PlasmaWindowModel::rowsRemoved);
371
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(rowRemovedSpy.isValid());
372
373
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy windowDestroyedSpy(serverWindow, &QObject::destroyed);
374
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(windowDestroyedSpy.isValid());
375
376
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 delete serverWindow;
377
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(rowRemovedSpy.wait());
378
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(rowRemovedSpy.count(), 1);
379
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 not taken.
✓ Branch 7 taken 1 times.
1 QVERIFY(!rowRemovedSpy.first().at(0).toModelIndex().isValid());
380
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(rowRemovedSpy.first().at(1).toInt(), 0);
381
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(rowRemovedSpy.first().at(2).toInt(), 0);
382
383 // Now the model is empty again.
384
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(model->rowCount(), 0);
385
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(!model->index(0).isValid());
386
387
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(windowDestroyedSpy.count(), 1);
388
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
389
390 1 void PlasmaWindowModelTest::testDefaultData_data()
391 {
392 1 QTest::addColumn<int>("role");
393 1 QTest::addColumn<QVariant>("value");
394
395
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("display") << int(Qt::DisplayRole) << QVariant(QString());
396
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QTest::newRow("decoration") << int(Qt::DecorationRole) << QVariant(QIcon());
397
398
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("AppId") << int(Clt::PlasmaWindowModel::AppId) << QVariant(QString());
399
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsActive") << int(Clt::PlasmaWindowModel::IsActive) << QVariant(false);
400 1 QTest::newRow("IsFullscreenable")
401
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << int(Clt::PlasmaWindowModel::IsFullscreenable) << QVariant(false);
402
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsFullscreen") << int(Clt::PlasmaWindowModel::IsFullscreen) << QVariant(false);
403
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsMaximizable") << int(Clt::PlasmaWindowModel::IsMaximizable) << QVariant(false);
404
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsMaximized") << int(Clt::PlasmaWindowModel::IsMaximized) << QVariant(false);
405
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsMinimizable") << int(Clt::PlasmaWindowModel::IsMinimizable) << QVariant(false);
406
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsMinimized") << int(Clt::PlasmaWindowModel::IsMinimized) << QVariant(false);
407
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsKeepAbove") << int(Clt::PlasmaWindowModel::IsKeepAbove) << QVariant(false);
408
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsKeepBelow") << int(Clt::PlasmaWindowModel::IsKeepBelow) << QVariant(false);
409 1 QTest::newRow("IsOnAllDesktops")
410
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << int(Clt::PlasmaWindowModel::IsOnAllDesktops) << QVariant(true);
411 1 QTest::newRow("IsDemandingAttention")
412
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << int(Clt::PlasmaWindowModel::IsDemandingAttention) << QVariant(false);
413
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsShadeable") << int(Clt::PlasmaWindowModel::IsShadeable) << QVariant(false);
414
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsShaded") << int(Clt::PlasmaWindowModel::IsShaded) << QVariant(false);
415
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("SkipTaskbar") << int(Clt::PlasmaWindowModel::SkipTaskbar) << QVariant(false);
416
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsMovable") << int(Clt::PlasmaWindowModel::IsMovable) << QVariant(false);
417
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsResizable") << int(Clt::PlasmaWindowModel::IsResizable) << QVariant(false);
418 1 QTest::newRow("IsVirtualDesktopChangeable")
419
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << int(Clt::PlasmaWindowModel::IsVirtualDesktopChangeable) << QVariant(false);
420
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("IsCloseable") << int(Clt::PlasmaWindowModel::IsCloseable) << QVariant(false);
421
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::newRow("Geometry") << int(Clt::PlasmaWindowModel::Geometry) << QVariant(QRect());
422
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QTest::newRow("Pid") << int(Clt::PlasmaWindowModel::Pid) << QVariant(0);
423 1 }
424
425 23 void PlasmaWindowModelTest::testDefaultData()
426 {
427 // This test validates the default data of a PlasmaWindow without having set any values.
428 // First create a model with a window.
429 23 auto* model = m_pw->createWindowModel();
430
1/2
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
23 QVERIFY(model);
431
432 23 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
433
3/6
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
23 QVERIFY(rowInsertedSpy.isValid());
434
435
1/2
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
23 auto serverWindow = server.globals.plasma_window_manager->createWindow();
436
2/4
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
23 QVERIFY(serverWindow);
437
5/10
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 23 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 23 times.
23 QVERIFY(rowInsertedSpy.wait());
438
439
1/2
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
23 QModelIndex index = model->index(0);
440
2/4
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
23 QFETCH(int, role);
441
3/6
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
23 QFETCH(QVariant, value);
442
443
2/4
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
23 QEXPECT_FAIL("decoration", "Null QIcon does not compare", Continue);
444
3/6
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 23 times.
23 QCOMPARE(model->data(index, role), value);
445
446
3/4
✓ Branch 0 taken 23 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 22 times.
✓ Branch 3 taken 1 times.
23 if (value.canConvert<QIcon>()) {
447
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 not taken.
✓ Branch 7 taken 1 times.
1 QVERIFY(value.value<QIcon>().isNull());
448 1 }
449
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 23 times.
23 }
450
451 1 void PlasmaWindowModelTest::testIsActive()
452 {
453
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsActive, &Srv::PlasmaWindow::setActive));
454 1 }
455
456 1 void PlasmaWindowModelTest::testIsFullscreenable()
457 {
458
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsFullscreenable,
459 &Srv::PlasmaWindow::setFullscreenable));
460 1 }
461
462 1 void PlasmaWindowModelTest::testIsFullscreen()
463 {
464
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(
465 testBooleanData(Clt::PlasmaWindowModel::IsFullscreen, &Srv::PlasmaWindow::setFullscreen));
466 1 }
467
468 1 void PlasmaWindowModelTest::testIsMaximizable()
469 {
470
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsMaximizable,
471 &Srv::PlasmaWindow::setMaximizeable));
472 1 }
473
474 1 void PlasmaWindowModelTest::testIsMaximized()
475 {
476
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsMaximized, &Srv::PlasmaWindow::setMaximized));
477 1 }
478
479 1 void PlasmaWindowModelTest::testIsMinimizable()
480 {
481
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsMinimizable,
482 &Srv::PlasmaWindow::setMinimizeable));
483 1 }
484
485 1 void PlasmaWindowModelTest::testIsMinimized()
486 {
487
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsMinimized, &Srv::PlasmaWindow::setMinimized));
488 1 }
489
490 1 void PlasmaWindowModelTest::testIsKeepAbove()
491 {
492
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsKeepAbove, &Srv::PlasmaWindow::setKeepAbove));
493 1 }
494
495 1 void PlasmaWindowModelTest::testIsKeepBelow()
496 {
497
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsKeepBelow, &Srv::PlasmaWindow::setKeepBelow));
498 1 }
499
500 1 void PlasmaWindowModelTest::testIsDemandingAttention()
501 {
502
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsDemandingAttention,
503 &Srv::PlasmaWindow::setDemandsAttention));
504 1 }
505
506 1 void PlasmaWindowModelTest::testSkipTaskbar()
507 {
508
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(
509 testBooleanData(Clt::PlasmaWindowModel::SkipTaskbar, &Srv::PlasmaWindow::setSkipTaskbar));
510 1 }
511
512 1 void PlasmaWindowModelTest::testSkipSwitcher()
513 {
514
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(
515 testBooleanData(Clt::PlasmaWindowModel::SkipSwitcher, &Srv::PlasmaWindow::setSkipSwitcher));
516 1 }
517
518 1 void PlasmaWindowModelTest::testIsShadeable()
519 {
520
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsShadeable, &Srv::PlasmaWindow::setShadeable));
521 1 }
522
523 1 void PlasmaWindowModelTest::testIsShaded()
524 {
525
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsShaded, &Srv::PlasmaWindow::setShaded));
526 1 }
527
528 1 void PlasmaWindowModelTest::testIsMovable()
529 {
530
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsMovable, &Srv::PlasmaWindow::setMovable));
531 1 }
532
533 1 void PlasmaWindowModelTest::testIsResizable()
534 {
535
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsResizable, &Srv::PlasmaWindow::setResizable));
536 1 }
537
538 1 void PlasmaWindowModelTest::testIsVirtualDesktopChangeable()
539 {
540
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsVirtualDesktopChangeable,
541 &Srv::PlasmaWindow::setVirtualDesktopChangeable));
542 1 }
543
544 1 void PlasmaWindowModelTest::testIsCloseable()
545 {
546
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(testBooleanData(Clt::PlasmaWindowModel::IsCloseable, &Srv::PlasmaWindow::setCloseable));
547 1 }
548
549 1 void PlasmaWindowModelTest::testGeometry()
550 {
551 1 auto* model = m_pw->createWindowModel();
552
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
553
554 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
555
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(rowInsertedSpy.isValid());
556
557
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
558
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
559
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(rowInsertedSpy.wait());
560
561
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const QModelIndex index = model->index(0);
562
563
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::Geometry).toRect(), QRect());
564
565
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
566
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(dataChangedSpy.isValid());
567
568 1 const QRect geom(0, 15, 50, 75);
569
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setGeometry(geom);
570
571
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(dataChangedSpy.wait());
572
573 // An icon and the geometry will be sent.
574
15/58
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
2 QTRY_COMPARE(dataChangedSpy.count(), 2);
575
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(dataChangedSpy.first().first().toModelIndex(), index);
576
577 // The icon is received with QtConcurrent in the beginning. So it can arrive before or after
578 // the geometry.
579 1 bool const last
580
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.
1 = dataChangedSpy[0].last().value<QVector<int>>() == QVector<int>{int(Qt::DecorationRole)};
581
582
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy[last ? 1 : 0].last().value<QVector<int>>(),
583 QVector<int>{int(Clt::PlasmaWindowModel::Geometry)});
584
585
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::Geometry).toRect(), geom);
586
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
587
588 1 void PlasmaWindowModelTest::testTitle()
589 {
590 1 auto* model = m_pw->createWindowModel();
591
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
592
593 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
594
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(rowInsertedSpy.isValid());
595
596
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
597
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
598
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(rowInsertedSpy.wait());
599
600
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_connection->flush();
601
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.display->dispatchEvents();
602
603
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
604
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(dataChangedSpy.isValid());
605
606
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const QModelIndex index = model->index(0);
607
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Qt::DisplayRole).toString(), QString());
608
609
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 serverWindow->setTitle(QStringLiteral("foo"));
610
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(dataChangedSpy.wait());
611
612 // An icon and the title will be sent.
613
15/58
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
2 QTRY_COMPARE(dataChangedSpy.count(), 2);
614
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(dataChangedSpy.first().first().toModelIndex(), index);
615
616 // The icon is received with QtConcurrent in the beginning. So it can arrive before or after
617 // the title.
618 1 bool const last
619
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.
1 = dataChangedSpy[0].last().value<QVector<int>>() == QVector<int>{int(Qt::DecorationRole)};
620
621
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy[last ? 1 : 0].last().value<QVector<int>>(),
622 QVector<int>{int(Qt::DisplayRole)});
623
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(model->data(index, Qt::DisplayRole).toString(), QStringLiteral("foo"));
624
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
625
626 1 void PlasmaWindowModelTest::testAppId()
627 {
628 1 auto* model = m_pw->createWindowModel();
629
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
630
631 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
632
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(rowInsertedSpy.isValid());
633
634
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
635
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
636
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(rowInsertedSpy.wait());
637
638
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_connection->flush();
639
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.display->dispatchEvents();
640
641
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
642
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(dataChangedSpy.isValid());
643
644
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const QModelIndex index = model->index(0);
645
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::AppId).toString(), QString());
646
647
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 serverWindow->setAppId(QStringLiteral("org.kde.testapp"));
648
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QVERIFY(dataChangedSpy.count() || dataChangedSpy.wait());
649
650 // The App Id and the geometry will be sent.
651
15/58
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
2 QTRY_COMPARE(dataChangedSpy.count(), 2);
652
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(dataChangedSpy.first().first().toModelIndex(), index);
653
654 // The icon is received with QtConcurrent in the beginning. So it can arrive before or after
655 // the app id.
656 1 bool const last
657
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.
1 = dataChangedSpy[0].last().value<QVector<int>>() == QVector<int>{int(Qt::DecorationRole)};
658
659
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy[last ? 1 : 0].last().value<QVector<int>>(),
660 QVector<int>{int(Clt::PlasmaWindowModel::AppId)});
661
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::AppId).toString(),
662 QStringLiteral("org.kde.testapp"));
663
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
664
665 1 void PlasmaWindowModelTest::testPid()
666 {
667 1 auto* model = m_pw->createWindowModel();
668
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
669
670 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
671
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(rowInsertedSpy.isValid());
672
673
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
674
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setPid(1337);
675
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
676
677
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_connection->flush();
678
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.display->dispatchEvents();
679
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(rowInsertedSpy.wait());
680
681 // pid should be set as soon as the new row appears
682
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const QModelIndex index = model->index(0);
683
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::Pid).toInt(), 1337);
684
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
685
686 1 void PlasmaWindowModelTest::testVirtualDesktops()
687 {
688 1 auto* model = m_pw->createWindowModel();
689
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
690
691 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
692
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(rowInsertedSpy.isValid());
693
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
694
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
695
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(rowInsertedSpy.wait());
696
697
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_connection->flush();
698
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.display->dispatchEvents();
699
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
700
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(dataChangedSpy.isValid());
701
702
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const QModelIndex index = model->index(0);
703
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::VirtualDesktops).toStringList(),
704 QStringList());
705
706
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverWindow->addPlasmaVirtualDesktop("desktop1");
707
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(dataChangedSpy.wait());
708
15/58
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
2 QTRY_COMPARE(dataChangedSpy.count(), 3);
709
710
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(dataChangedSpy.first().first().toModelIndex(), index);
711
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(dataChangedSpy.last().first().toModelIndex(), index);
712
713 // The icon is received with QtConcurrent in the beginning. So it can arrive before or after
714 // the virtual desktop.
715 1 bool const last
716
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.
1 = dataChangedSpy[0].last().value<QVector<int>>() == QVector<int>{int(Qt::DecorationRole)};
717
718
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy[last ? 1 : 0].last().value<QVector<int>>(),
719 QVector<int>{int(Clt::PlasmaWindowModel::VirtualDesktops)});
720
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy[last ? 2 : 1].last().value<QVector<int>>(),
721 QVector<int>{int(Clt::PlasmaWindowModel::IsOnAllDesktops)});
722
723
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::VirtualDesktops).toStringList(),
724 QStringList({"desktop1"}));
725
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::IsOnAllDesktops).toBool(), false);
726
727
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 dataChangedSpy.clear();
728
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!dataChangedSpy.count());
729
730
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverWindow->addPlasmaVirtualDesktop("desktop2");
731
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(dataChangedSpy.wait());
732
12/58
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
1 QTRY_COMPARE(dataChangedSpy.count(), 1);
733
734
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(dataChangedSpy.first().first().toModelIndex(), index);
735
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy.first().last().value<QVector<int>>(),
736 QVector<int>{int(Clt::PlasmaWindowModel::VirtualDesktops)});
737
738
7/14
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::VirtualDesktops).toStringList(),
739 QStringList({"desktop1", "desktop2"}));
740
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::IsOnAllDesktops).toBool(), false);
741
742
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverWindow->removePlasmaVirtualDesktop("desktop2");
743
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverWindow->removePlasmaVirtualDesktop("desktop1");
744
745
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(dataChangedSpy.wait());
746
12/58
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
1 QTRY_COMPARE(dataChangedSpy.count(), 5);
747
748
6/12
✓ 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.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(dataChangedSpy.last().last().value<QVector<int>>(),
749 QVector<int>{int(Clt::PlasmaWindowModel::IsOnAllDesktops)});
750
751
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(model->data(index, Clt::PlasmaWindowModel::VirtualDesktops).toStringList(),
752 QStringList({}));
753
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 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(model->data(index, Clt::PlasmaWindowModel::IsOnAllDesktops).toBool(), true);
754
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(!dataChangedSpy.wait(100));
755
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
756
757 1 void PlasmaWindowModelTest::testRequests()
758 {
759 // This test verifies that the various requests are properly passed to the server.
760 1 auto* model = m_pw->createWindowModel();
761
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QVERIFY(model);
762
763 1 QSignalSpy rowInsertedSpy(model, &Clt::PlasmaWindowModel::rowsInserted);
764
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(rowInsertedSpy.isValid());
765
766
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
767
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(serverWindow);
768
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(rowInsertedSpy.wait());
769
770
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy activateRequestedSpy(serverWindow, &Srv::PlasmaWindow::activeRequested);
771
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(activateRequestedSpy.isValid());
772
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy closeRequestedSpy(serverWindow, &Srv::PlasmaWindow::closeRequested);
773
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(closeRequestedSpy.isValid());
774
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy moveRequestedSpy(serverWindow, &Srv::PlasmaWindow::moveRequested);
775
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(moveRequestedSpy.isValid());
776
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy resizeRequestedSpy(serverWindow, &Srv::PlasmaWindow::resizeRequested);
777
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(resizeRequestedSpy.isValid());
778
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keepAboveRequestedSpy(serverWindow, &Srv::PlasmaWindow::keepAboveRequested);
779
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(keepAboveRequestedSpy.isValid());
780
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keepBelowRequestedSpy(serverWindow, &Srv::PlasmaWindow::keepBelowRequested);
781
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(keepBelowRequestedSpy.isValid());
782
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy minimizedRequestedSpy(serverWindow, &Srv::PlasmaWindow::minimizedRequested);
783
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(minimizedRequestedSpy.isValid());
784
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy maximizeRequestedSpy(serverWindow, &Srv::PlasmaWindow::maximizedRequested);
785
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(maximizeRequestedSpy.isValid());
786
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy shadeRequestedSpy(serverWindow, &Srv::PlasmaWindow::shadedRequested);
787
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(shadeRequestedSpy.isValid());
788
789 // First let's use some invalid row numbers.
790
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestActivate(-1);
791
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestClose(-1);
792
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepAbove(-1);
793
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepBelow(-1);
794
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMinimized(-1);
795
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMaximized(-1);
796
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestActivate(1);
797
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestClose(1);
798
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestMove(1);
799
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestResize(1);
800
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepAbove(1);
801
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepBelow(1);
802
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMinimized(1);
803
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMaximized(1);
804
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleShaded(1);
805
806 // That should not have triggered any signals.
807
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(!activateRequestedSpy.wait(100));
808
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(activateRequestedSpy.isEmpty());
809
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(closeRequestedSpy.isEmpty());
810
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(moveRequestedSpy.isEmpty());
811
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(resizeRequestedSpy.isEmpty());
812
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(minimizedRequestedSpy.isEmpty());
813
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(maximizeRequestedSpy.isEmpty());
814
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(shadeRequestedSpy.isEmpty());
815
816 // Now with the proper row.
817 // Activate
818
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestActivate(0);
819
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(activateRequestedSpy.wait());
820
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
821
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(activateRequestedSpy.first().first().toBool(), true);
822
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 0);
823
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 0);
824
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 0);
825
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 0);
826
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
827
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
828 // Close
829
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestClose(0);
830
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(closeRequestedSpy.wait());
831
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
832
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
833
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 0);
834
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 0);
835
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 0);
836
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
837
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
838 // Move
839
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestMove(0);
840
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(moveRequestedSpy.wait());
841
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
842
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
843
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
844
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 0);
845
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 0);
846
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
847
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
848 // Resize
849
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestResize(0);
850
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(resizeRequestedSpy.wait());
851
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
852
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
853
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
854
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
855
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 0);
856
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
857
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
858 // Virtual desktop
859
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
860
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
861
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
862
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
863
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 0);
864
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
865
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
866 // Keep above
867
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepAbove(0);
868
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(keepAboveRequestedSpy.wait());
869
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keepAboveRequestedSpy.count(), 1);
870
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(keepAboveRequestedSpy.first().first().toBool(), true);
871
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
872
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
873
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
874
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
875
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
876
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
877 // Keep below
878
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepBelow(0);
879
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(keepBelowRequestedSpy.wait());
880
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keepBelowRequestedSpy.count(), 1);
881
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(keepBelowRequestedSpy.first().first().toBool(), true);
882
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
883
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
884
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
885
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
886
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
887
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
888 // Minimize
889
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMinimized(0);
890
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(minimizedRequestedSpy.wait());
891
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 1);
892
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(minimizedRequestedSpy.first().first().toBool(), true);
893
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
894
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
895
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
896
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
897
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 0);
898
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
899 // Maximize
900
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMaximized(0);
901
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(maximizeRequestedSpy.wait());
902
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 1);
903
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(maximizeRequestedSpy.first().first().toBool(), true);
904
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
905
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
906
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
907
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 1);
908
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 0);
909 // Shade
910
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleShaded(0);
911
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(shadeRequestedSpy.wait());
912
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 1);
913
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(shadeRequestedSpy.first().first().toBool(), true);
914
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(activateRequestedSpy.count(), 1);
915
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeRequestedSpy.count(), 1);
916
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveRequestedSpy.count(), 1);
917
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(resizeRequestedSpy.count(), 1);
918
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 1);
919
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 1);
920
921 // The toggles can also support a different state.
922
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataChangedSpy(model, &Clt::PlasmaWindowModel::dataChanged);
923
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(dataChangedSpy.isValid());
924 // Keep above
925
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setKeepAbove(true);
926
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(dataChangedSpy.wait());
927
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepAbove(0);
928
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(keepAboveRequestedSpy.wait());
929
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keepAboveRequestedSpy.count(), 2);
930
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(keepAboveRequestedSpy.last().first().toBool(), false);
931 // Keep below
932
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setKeepBelow(true);
933
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(dataChangedSpy.wait());
934
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleKeepBelow(0);
935
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(keepBelowRequestedSpy.wait());
936
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keepBelowRequestedSpy.count(), 2);
937
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(keepBelowRequestedSpy.last().first().toBool(), false);
938 // Minimize
939
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setMinimized(true);
940
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(dataChangedSpy.wait());
941
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMinimized(0);
942
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(minimizedRequestedSpy.wait());
943
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizedRequestedSpy.count(), 2);
944
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(minimizedRequestedSpy.last().first().toBool(), false);
945 // Maximized
946
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setMaximized(true);
947
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(dataChangedSpy.wait());
948
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleMaximized(0);
949
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(maximizeRequestedSpy.wait());
950
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 2);
951
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(maximizeRequestedSpy.last().first().toBool(), false);
952 // Shaded
953
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverWindow->setShaded(true);
954
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(dataChangedSpy.wait());
955
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 model->requestToggleShaded(0);
956
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(shadeRequestedSpy.wait());
957
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(shadeRequestedSpy.count(), 2);
958
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(shadeRequestedSpy.last().first().toBool(), false);
959
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
960
961 1 void PlasmaWindowModelTest::testCreateWithUnmappedWindow()
962 {
963 // This test verifies that creating the model just when an unmapped window exists doesn't cause
964 // problems.
965 // That is the unmapped window should be added (as expected), but also be removed again.
966
967 // Create a window in "normal way".
968 1 QSignalSpy windowCreatedSpy(m_pw, &Clt::PlasmaWindowManagement::windowCreated);
969
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(windowCreatedSpy.isValid());
970
971
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverWindow = server.globals.plasma_window_manager->createWindow();
972
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverWindow);
973
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(windowCreatedSpy.wait());
974
975
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 auto* window = windowCreatedSpy.first().first().value<Clt::PlasmaWindow*>();
976
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(window);
977
978 // Make sure the resource is properly created on server side.
979
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::instance()->processEvents(QEventLoop::WaitForMoreEvents);
980
981
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy unmappedSpy(window, &Clt::PlasmaWindow::unmapped);
982
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(unmappedSpy.isValid());
983
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy destroyedSpy(window, &Clt::PlasmaWindow::destroyed);
984
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(destroyedSpy.isValid());
985
986 // Unmap should be triggered, but not yet the destroyed.
987
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete serverWindow;
988
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(unmappedSpy.wait());
989
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(destroyedSpy.isEmpty());
990
991
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* model = m_pw->createWindowModel();
992
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(model);
993
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(model->rowCount(), 1);
994
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy rowRemovedSpy(model, &Clt::PlasmaWindowModel::rowsRemoved);
995
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(rowRemovedSpy.isValid());
996
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(rowRemovedSpy.wait());
997
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(rowRemovedSpy.count(), 1);
998
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(model->rowCount(), 0);
999
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(destroyedSpy.count(), 1);
1000
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1001
1002 1 void PlasmaWindowModelTest::testChangeWindowAfterModelDestroy_data()
1003 {
1004 1 QTest::addColumn<ClientWindowSignal>("changedSignal");
1005 1 QTest::addColumn<QVariant>("setter");
1006 1 QTest::addColumn<QVariant>("value");
1007
1008 2 QTest::newRow("active") << &Clt::PlasmaWindow::activeChanged
1009
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setActive) << QVariant(true);
1010 2 QTest::newRow("minimized") << &Clt::PlasmaWindow::minimizedChanged
1011
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setMinimized)
1012
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1013 2 QTest::newRow("fullscreen") << &Clt::PlasmaWindow::fullscreenChanged
1014
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setFullscreen)
1015
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1016 2 QTest::newRow("keepAbove") << &Clt::PlasmaWindow::keepAboveChanged
1017
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setKeepAbove)
1018
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1019 2 QTest::newRow("keepBelow") << &Clt::PlasmaWindow::keepBelowChanged
1020
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setKeepBelow)
1021
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1022 2 QTest::newRow("maximized") << &Clt::PlasmaWindow::maximizedChanged
1023
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setMaximized)
1024
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1025 2 QTest::newRow("demandsAttention")
1026 1 << &Clt::PlasmaWindow::demandsAttentionChanged
1027
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setDemandsAttention) << QVariant(true);
1028 2 QTest::newRow("closeable") << &Clt::PlasmaWindow::closeableChanged
1029
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setCloseable)
1030
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1031 2 QTest::newRow("minimizeable") << &Clt::PlasmaWindow::minimizeableChanged
1032
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setMinimizeable)
1033
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1034 2 QTest::newRow("maximizeable") << &Clt::PlasmaWindow::maximizeableChanged
1035
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setMaximizeable)
1036
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1037 2 QTest::newRow("fullscreenable")
1038 1 << &Clt::PlasmaWindow::fullscreenableChanged
1039
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setFullscreenable) << QVariant(true);
1040 2 QTest::newRow("skipTaskbar") << &Clt::PlasmaWindow::skipTaskbarChanged
1041
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setSkipTaskbar)
1042
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1043 2 QTest::newRow("shadeable") << &Clt::PlasmaWindow::shadeableChanged
1044
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setShadeable)
1045
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1046 2 QTest::newRow("shaded") << &Clt::PlasmaWindow::shadedChanged
1047
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setShaded) << QVariant(true);
1048 2 QTest::newRow("movable") << &Clt::PlasmaWindow::movableChanged
1049
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setMovable)
1050
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1051 2 QTest::newRow("resizable") << &Clt::PlasmaWindow::resizableChanged
1052
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setResizable)
1053
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1054 2 QTest::newRow("vdChangeable") << &Clt::PlasmaWindow::virtualDesktopChangeableChanged
1055
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(
1056 1 &Srv::PlasmaWindow::setVirtualDesktopChangeable)
1057
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1058 2 QTest::newRow("onallDesktop") << &Clt::PlasmaWindow::onAllDesktopsChanged
1059
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setOnAllDesktops)
1060
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant(true);
1061 2 QTest::newRow("title") << &Clt::PlasmaWindow::titleChanged
1062
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setTitle)
1063
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 << QVariant(QStringLiteral("foo"));
1064 2 QTest::newRow("appId") << &Clt::PlasmaWindow::appIdChanged
1065
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 << QVariant::fromValue(&Srv::PlasmaWindow::setAppId)
1066
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 << QVariant(QStringLiteral("foo"));
1067
1068 // Disable the icon test for now. Our way of providing icons is fundamentally wrong and the
1069 // whole concept needs to be redone so it works on all setups and in particular in a CI setting.
1070 // See issue #8.
1071 #if 0
1072 QTest::newRow("icon" )
1073 << &Clt::PlasmaWindow::iconChanged
1074 << QVariant::fromValue(&Srv::PlasmaWindow::setIcon)
1075 << QVariant::fromValue(QIcon::fromTheme(QStringLiteral("foo")));
1076 #endif
1077
1078
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QTest::newRow("unmapped") << &Clt::PlasmaWindow::unmapped << QVariant() << QVariant();
1079 1 }
1080
1081 21 void PlasmaWindowModelTest::testChangeWindowAfterModelDestroy()
1082 {
1083 // This test verifies that changes in a window after the model got destroyed doesn't crash.
1084 21 auto* model = m_pw->createWindowModel();
1085
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QVERIFY(model);
1086
1087 21 QSignalSpy windowCreatedSpy(m_pw, &Clt::PlasmaWindowManagement::windowCreated);
1088
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(windowCreatedSpy.isValid());
1089
1090
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 auto serverWindow = server.globals.plasma_window_manager->createWindow();
1091
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(windowCreatedSpy.wait());
1092
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 Clt::PlasmaWindow* window = windowCreatedSpy.first().first().value<Clt::PlasmaWindow*>();
1093
1094 // Make sure the resource is properly created on server side.
1095
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QCoreApplication::instance()->processEvents(QEventLoop::WaitForMoreEvents);
1096
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(model->rowCount(), 1);
1097
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 delete model;
1098
1099
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 QFETCH(ClientWindowSignal, changedSignal);
1100
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QSignalSpy changedSpy(window, changedSignal);
1101
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(changedSpy.isValid());
1102
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(!window->isActive());
1103
1104
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QFETCH(QVariant, setter);
1105
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QFETCH(QVariant, value);
1106
1107
3/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✓ Branch 3 taken 3 times.
21 if (QMetaType::Type(value.type()) == QMetaType::Bool) {
1108
4/8
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 18 times.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
18 (serverWindow->*(setter.value<ServerWindowBoolSetter>()))(value.toBool());
1109
3/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
21 } else if (QMetaType::Type(value.type()) == QMetaType::QString) {
1110
4/8
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
2 (serverWindow->*(setter.value<ServerWindowStringSetter>()))(value.toString());
1111
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
3 } else if (QMetaType::Type(value.type()) == QMetaType::UInt) {
1112 (serverWindow->*(setter.value<ServerWindowQuint32Setter>()))(value.toUInt());
1113
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 } else if (!value.isValid()) {
1114
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 delete serverWindow;
1115 1 }
1116
1117
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(changedSpy.wait());
1118
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 }
1119
1120 1 void PlasmaWindowModelTest::testCreateWindowAfterModelDestroy()
1121 {
1122 // This test verifies that creating a window after the model got destroyed doesn't crash.
1123 1 auto* model = m_pw->createWindowModel();
1124
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QVERIFY(model);
1125
1126
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete model;
1127
1128 1 QSignalSpy windowCreatedSpy(m_pw, &Clt::PlasmaWindowManagement::windowCreated);
1129
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(windowCreatedSpy.isValid());
1130
1131
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.globals.plasma_window_manager->createWindow();
1132
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(windowCreatedSpy.wait());
1133
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1134
1135
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(PlasmaWindowModelTest)
1136 #include "plasma_window_model.moc"
1137