qi3pc(1.0.0-rc1) (Debug GNU 15.2.1)


./
File: tests/test_qi3pc.h
Date: 2025-12-19 02:36:39
Lines:
62 of 76, 0 excluded
81.6%
Functions:
12 of 14, 0 excluded
85.7%
Branches:
158 of 550, 0 excluded
28.7%

Line Branch Exec Source
1 /* \author Hantz Vius
2 *
3 * \copyright Copyright (C) 2019-2025 Hantz Vius
4 *
5 * \license{
6 * This file is part of qi3pc.
7 *
8 * qi3pc is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program 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
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.}
20 */
21
22 #pragma once
23
24 #include <QSignalSpy>
25
26 #include "mock_i3ipc.h"
27 #include "../qi3pc.h"
28
29 Q_DECLARE_LOGGING_CATEGORY(TestBlackBoxQi3pcLogger);
30
31 class ScopedEnv {
32 public:
33 explicit ScopedEnv(const char* name, const QByteArray& value = {})
34 : m_varName(name) {
35 m_wasSet = qEnvironmentVariableIsSet(m_varName);
36 if (m_wasSet) {
37 m_originalValue = qgetenv(m_varName);
38 }
39
40 if (value.isEmpty()) {
41 qunsetenv(m_varName);
42 } else {
43 qputenv(m_varName, value);
44 }
45 }
46
47 ~ScopedEnv() {
48 if (m_wasSet) {
49 qputenv(m_varName, m_originalValue);
50 } else {
51 qunsetenv(m_varName);
52 }
53 }
54 private:
55 const char* m_varName;
56 QByteArray m_originalValue;
57 bool m_wasSet;
58 };
59
60 class TestBlackBoxQi3pc : public QObject {
61 Q_OBJECT
62
63 private slots:
64 void initTestCase();
65 void cleanupTestCase();
66 void init();
67 void cleanup();
68
69 void test_ctor();
70 void test_connection();
71 void test_subscription();
72 void test_fetchWorkspaces();
73 void test_fetchTree();
74 void test_fetchOutputs();
75 void test_fetchMarks();
76 void test_fetchBarConfigs();
77 void test_fetchVersion();
78 void test_fetchBindingModes();
79 void test_fetchConfig();
80 void test_fetchBindingState();
81 void test_runCommand();
82 void test_runCommand_data();
83
84 private:
85 template<typename Data, typename Fetch, typename Get, typename Signal>
86 void fetchTest(
87 qi3pc& ipc, const Data& test_data,
88 Fetch fetch, Get get, Signal notification,
89 const char* signalName,
90 int timeout = 1000, qsizetype expectedEmissions = 1);
91
92 template<typename Data>
93 static
94 QString prettify(const Data& data);
95
96 template<typename Data>
97 static
98 void check_equal(const Data& expected, const Data& actual, const QString& logPrefix);
99
100 private:
101 qi3pc* m_qi3pc;
102 MockI3Server* m_mockServer;
103 QString m_socketPath;
104 std::vector<QMetaObject::Connection> m_connections;
105 };
106
107 template<typename Data, typename Fetch, typename Get, typename Signal>
108 void
109 40 TestBlackBoxQi3pc::fetchTest(
110 qi3pc& ipc,
111 const Data& test_data,
112 Fetch fetch, Get get, Signal notification,
113 const char* signalName,
114 int timeout,
115 qsizetype expectedEmissions)
116 {
117
3/6
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 2 → 3 taken 5 times.
✗ Branch 2 → 235 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 2 → 3 taken 15 times.
✗ Branch 2 → 235 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 2 → 3 taken 20 times.
✗ Branch 2 → 235 not taken.
40 ipc.connect();
118
119
3/6
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 3 → 4 taken 5 times.
✗ Branch 3 → 235 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 3 → 4 taken 15 times.
✗ Branch 3 → 235 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 3 → 4 taken 20 times.
✗ Branch 3 → 235 not taken.
40 QSignalSpy spy(&ipc, notification);
120 m_connections.push_back
121
6/12
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 4 → 5 taken 5 times.
✗ Branch 4 → 138 not taken.
✓ Branch 5 → 6 taken 5 times.
✗ Branch 5 → 136 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 4 → 5 taken 15 times.
✗ Branch 4 → 138 not taken.
✓ Branch 5 → 6 taken 15 times.
✗ Branch 5 → 136 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 4 → 5 taken 20 times.
✗ Branch 4 → 138 not taken.
✓ Branch 5 → 6 taken 20 times.
✗ Branch 5 → 136 not taken.
80 (connect(&ipc, notification, [&](std::optional<std::pair<Data, qint64>> data) {
122
6/22
✓ Branch 3 → 4 taken 40 times.
✗ Branch 3 → 17 not taken.
✓ Branch 4 → 5 taken 40 times.
✗ Branch 4 → 46 not taken.
✓ Branch 6 → 7 taken 40 times.
✗ Branch 6 → 43 not taken.
✓ Branch 8 → 9 taken 40 times.
✗ Branch 8 → 41 not taken.
✓ Branch 10 → 11 taken 40 times.
✗ Branch 10 → 39 not taken.
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 30 taken 40 times.
✗ Branch 17 → 18 not taken.
✗ Branch 17 → 56 not taken.
✗ Branch 19 → 20 not taken.
✗ Branch 19 → 53 not taken.
✗ Branch 21 → 22 not taken.
✗ Branch 21 → 51 not taken.
✗ Branch 23 → 24 not taken.
✗ Branch 23 → 49 not taken.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 30 not taken.
80 QVERIFY2(data.has_value(),
123 qPrintable(QString("::%1 emitted with empty data.")
124 .arg(signalName)));
125
126
1/2
✓ Branch 34 → 35 taken 40 times.
✗ Branch 34 → 59 not taken.
40 check_equal(test_data, data->first,
127
1/2
✓ Branch 30 → 31 taken 40 times.
✗ Branch 30 → 64 not taken.
40 QString("::%1 emitted with unexpected data.")
128
1/2
✓ Branch 32 → 33 taken 40 times.
✗ Branch 32 → 61 not taken.
80 .arg(signalName));
129 })
130 );
131
132
6/12
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 5 times.
✓ Branch 10 → 11 taken 5 times.
✗ Branch 10 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 15 times.
✓ Branch 10 → 11 taken 15 times.
✗ Branch 10 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 20 times.
✓ Branch 10 → 11 taken 20 times.
✗ Branch 10 → 233 not taken.
40 (ipc.*fetch)();
133
24/96
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 11 → 12 taken 5 times.
✗ Branch 11 → 233 not taken.
✓ Branch 12 → 13 taken 5 times.
✗ Branch 12 → 29 not taken.
✓ Branch 13 → 14 taken 5 times.
✗ Branch 13 → 150 not taken.
✓ Branch 15 → 16 taken 5 times.
✗ Branch 15 → 147 not taken.
✓ Branch 17 → 18 taken 5 times.
✗ Branch 17 → 144 not taken.
✓ Branch 19 → 20 taken 5 times.
✗ Branch 19 → 142 not taken.
✓ Branch 21 → 22 taken 5 times.
✗ Branch 21 → 140 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 45 taken 5 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 233 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 164 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 161 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 158 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 156 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 154 not taken.
✗ Branch 42 → 43 not taken.
✗ Branch 42 → 45 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 11 → 12 taken 15 times.
✗ Branch 11 → 233 not taken.
✓ Branch 12 → 13 taken 15 times.
✗ Branch 12 → 29 not taken.
✓ Branch 13 → 14 taken 15 times.
✗ Branch 13 → 150 not taken.
✓ Branch 15 → 16 taken 15 times.
✗ Branch 15 → 147 not taken.
✓ Branch 17 → 18 taken 15 times.
✗ Branch 17 → 144 not taken.
✓ Branch 19 → 20 taken 15 times.
✗ Branch 19 → 142 not taken.
✓ Branch 21 → 22 taken 15 times.
✗ Branch 21 → 140 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 45 taken 15 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 233 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 164 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 161 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 158 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 156 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 154 not taken.
✗ Branch 42 → 43 not taken.
✗ Branch 42 → 45 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 11 → 12 taken 20 times.
✗ Branch 11 → 233 not taken.
✓ Branch 12 → 13 taken 20 times.
✗ Branch 12 → 29 not taken.
✓ Branch 13 → 14 taken 20 times.
✗ Branch 13 → 150 not taken.
✓ Branch 15 → 16 taken 20 times.
✗ Branch 15 → 147 not taken.
✓ Branch 17 → 18 taken 20 times.
✗ Branch 17 → 144 not taken.
✓ Branch 19 → 20 taken 20 times.
✗ Branch 19 → 142 not taken.
✓ Branch 21 → 22 taken 20 times.
✗ Branch 21 → 140 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 45 taken 20 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 233 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 164 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 161 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 158 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 156 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 154 not taken.
✗ Branch 42 → 43 not taken.
✗ Branch 42 → 45 not taken.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 233 not taken.
120 QVERIFY2(spy.wait(timeout),
134 qPrintable(QString("::%1 was not emitted (%2ms timeout).")
135 .arg(signalName)
136 .arg(timeout)));
137
138 40 auto count = spy.count();
139
24/102
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 46 → 47 taken 5 times.
✗ Branch 46 → 66 not taken.
✓ Branch 47 → 48 taken 5 times.
✗ Branch 47 → 181 not taken.
✓ Branch 49 → 50 taken 5 times.
✗ Branch 49 → 178 not taken.
✓ Branch 51 → 52 taken 5 times.
✗ Branch 51 → 175 not taken.
✓ Branch 53 → 54 taken 5 times.
✗ Branch 53 → 172 not taken.
✓ Branch 55 → 56 taken 5 times.
✗ Branch 55 → 170 not taken.
✓ Branch 57 → 58 taken 5 times.
✗ Branch 57 → 168 not taken.
✗ Branch 63 → 64 not taken.
✓ Branch 63 → 85 taken 5 times.
✗ Branch 64 → 65 not taken.
✗ Branch 64 → 233 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 199 not taken.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 196 not taken.
✗ Branch 70 → 71 not taken.
✗ Branch 70 → 193 not taken.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 190 not taken.
✗ Branch 74 → 75 not taken.
✗ Branch 74 → 188 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 186 not taken.
✗ Branch 82 → 83 not taken.
✗ Branch 82 → 85 not taken.
✗ Branch 83 → 84 not taken.
✗ Branch 83 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 46 → 47 taken 15 times.
✗ Branch 46 → 66 not taken.
✓ Branch 47 → 48 taken 15 times.
✗ Branch 47 → 181 not taken.
✓ Branch 49 → 50 taken 15 times.
✗ Branch 49 → 178 not taken.
✓ Branch 51 → 52 taken 15 times.
✗ Branch 51 → 175 not taken.
✓ Branch 53 → 54 taken 15 times.
✗ Branch 53 → 172 not taken.
✓ Branch 55 → 56 taken 15 times.
✗ Branch 55 → 170 not taken.
✓ Branch 57 → 58 taken 15 times.
✗ Branch 57 → 168 not taken.
✗ Branch 63 → 64 not taken.
✓ Branch 63 → 85 taken 15 times.
✗ Branch 64 → 65 not taken.
✗ Branch 64 → 233 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 199 not taken.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 196 not taken.
✗ Branch 70 → 71 not taken.
✗ Branch 70 → 193 not taken.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 190 not taken.
✗ Branch 74 → 75 not taken.
✗ Branch 74 → 188 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 186 not taken.
✗ Branch 82 → 83 not taken.
✗ Branch 82 → 85 not taken.
✗ Branch 83 → 84 not taken.
✗ Branch 83 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 46 → 47 taken 20 times.
✗ Branch 46 → 66 not taken.
✓ Branch 47 → 48 taken 20 times.
✗ Branch 47 → 181 not taken.
✓ Branch 49 → 50 taken 20 times.
✗ Branch 49 → 178 not taken.
✓ Branch 51 → 52 taken 20 times.
✗ Branch 51 → 175 not taken.
✓ Branch 53 → 54 taken 20 times.
✗ Branch 53 → 172 not taken.
✓ Branch 55 → 56 taken 20 times.
✗ Branch 55 → 170 not taken.
✓ Branch 57 → 58 taken 20 times.
✗ Branch 57 → 168 not taken.
✗ Branch 63 → 64 not taken.
✓ Branch 63 → 85 taken 20 times.
✗ Branch 64 → 65 not taken.
✗ Branch 64 → 233 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 199 not taken.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 196 not taken.
✗ Branch 70 → 71 not taken.
✗ Branch 70 → 193 not taken.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 190 not taken.
✗ Branch 74 → 75 not taken.
✗ Branch 74 → 188 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 186 not taken.
✗ Branch 82 → 83 not taken.
✗ Branch 82 → 85 not taken.
✗ Branch 83 → 84 not taken.
✗ Branch 83 → 233 not taken.
160 QVERIFY2(count == expectedEmissions,
140 qPrintable(QString("::%1 emitted %2 times - expected %3 emissions.")
141 .arg(signalName)
142 .arg(count)
143 .arg(expectedEmissions)));
144
145
6/12
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✗ Branch 85 → 86 not taken.
✓ Branch 85 → 87 taken 5 times.
✓ Branch 88 → 89 taken 5 times.
✗ Branch 88 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✗ Branch 85 → 86 not taken.
✓ Branch 85 → 87 taken 15 times.
✓ Branch 88 → 89 taken 15 times.
✗ Branch 88 → 233 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✗ Branch 85 → 86 not taken.
✓ Branch 85 → 87 taken 20 times.
✓ Branch 88 → 89 taken 20 times.
✗ Branch 88 → 233 not taken.
40 auto data = (ipc.*get)();
146
18/78
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 91 → 92 taken 5 times.
✗ Branch 91 → 105 not taken.
✓ Branch 92 → 93 taken 5 times.
✗ Branch 92 → 211 not taken.
✓ Branch 94 → 95 taken 5 times.
✗ Branch 94 → 208 not taken.
✓ Branch 96 → 97 taken 5 times.
✗ Branch 96 → 206 not taken.
✓ Branch 98 → 99 taken 5 times.
✗ Branch 98 → 204 not taken.
✗ Branch 102 → 103 not taken.
✓ Branch 102 → 118 taken 5 times.
✗ Branch 103 → 104 not taken.
✗ Branch 103 → 231 not taken.
✗ Branch 105 → 106 not taken.
✗ Branch 105 → 221 not taken.
✗ Branch 107 → 108 not taken.
✗ Branch 107 → 218 not taken.
✗ Branch 109 → 110 not taken.
✗ Branch 109 → 216 not taken.
✗ Branch 111 → 112 not taken.
✗ Branch 111 → 214 not taken.
✗ Branch 115 → 116 not taken.
✗ Branch 115 → 118 not taken.
✗ Branch 116 → 117 not taken.
✗ Branch 116 → 231 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 91 → 92 taken 15 times.
✗ Branch 91 → 105 not taken.
✓ Branch 92 → 93 taken 15 times.
✗ Branch 92 → 211 not taken.
✓ Branch 94 → 95 taken 15 times.
✗ Branch 94 → 208 not taken.
✓ Branch 96 → 97 taken 15 times.
✗ Branch 96 → 206 not taken.
✓ Branch 98 → 99 taken 15 times.
✗ Branch 98 → 204 not taken.
✗ Branch 102 → 103 not taken.
✓ Branch 102 → 118 taken 15 times.
✗ Branch 103 → 104 not taken.
✗ Branch 103 → 231 not taken.
✗ Branch 105 → 106 not taken.
✗ Branch 105 → 221 not taken.
✗ Branch 107 → 108 not taken.
✗ Branch 107 → 218 not taken.
✗ Branch 109 → 110 not taken.
✗ Branch 109 → 216 not taken.
✗ Branch 111 → 112 not taken.
✗ Branch 111 → 214 not taken.
✗ Branch 115 → 116 not taken.
✗ Branch 115 → 118 not taken.
✗ Branch 116 → 117 not taken.
✗ Branch 116 → 231 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 91 → 92 taken 20 times.
✗ Branch 91 → 105 not taken.
✓ Branch 92 → 93 taken 20 times.
✗ Branch 92 → 211 not taken.
✓ Branch 94 → 95 taken 20 times.
✗ Branch 94 → 208 not taken.
✓ Branch 96 → 97 taken 20 times.
✗ Branch 96 → 206 not taken.
✓ Branch 98 → 99 taken 20 times.
✗ Branch 98 → 204 not taken.
✗ Branch 102 → 103 not taken.
✓ Branch 102 → 118 taken 20 times.
✗ Branch 103 → 104 not taken.
✗ Branch 103 → 231 not taken.
✗ Branch 105 → 106 not taken.
✗ Branch 105 → 221 not taken.
✗ Branch 107 → 108 not taken.
✗ Branch 107 → 218 not taken.
✗ Branch 109 → 110 not taken.
✗ Branch 109 → 216 not taken.
✗ Branch 111 → 112 not taken.
✗ Branch 111 → 214 not taken.
✗ Branch 115 → 116 not taken.
✗ Branch 115 → 118 not taken.
✗ Branch 116 → 117 not taken.
✗ Branch 116 → 231 not taken.
80 QVERIFY2(data.has_value(),
147 qPrintable(QString("::%1 emitted with empty data.")
148 .arg(signalName)));
149
3/6
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 122 → 123 taken 5 times.
✗ Branch 122 → 224 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 122 → 123 taken 15 times.
✗ Branch 122 → 224 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 122 → 123 taken 20 times.
✗ Branch 122 → 224 not taken.
40 check_equal(test_data, data->first,
150
3/6
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 118 → 119 taken 5 times.
✗ Branch 118 → 229 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 118 → 119 taken 15 times.
✗ Branch 118 → 229 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 118 → 119 taken 20 times.
✗ Branch 118 → 229 not taken.
40 QString("::%1 emitted with unexpected data.")
151
3/6
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 120 → 121 taken 5 times.
✗ Branch 120 → 226 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 120 → 121 taken 15 times.
✗ Branch 120 → 226 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 120 → 121 taken 20 times.
✗ Branch 120 → 226 not taken.
80 .arg(signalName));
152
6/12
void TestBlackBoxQi3pc::fetchTest<QString, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&)>(qi3pc&, QString const&, void (qi3pc::*)(), std::optional<std::pair<QString, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QString, long long> > const&), char const*, int, long long):
✓ Branch 127 → 128 taken 5 times.
✗ Branch 127 → 129 not taken.
✓ Branch 131 → 132 taken 5 times.
✗ Branch 131 → 134 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonObject, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&)>(qi3pc&, QJsonObject const&, void (qi3pc::*)(), std::optional<std::pair<QJsonObject, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonObject, long long> > const&), char const*, int, long long):
✓ Branch 127 → 128 taken 15 times.
✗ Branch 127 → 129 not taken.
✓ Branch 131 → 132 taken 15 times.
✗ Branch 131 → 134 not taken.
void TestBlackBoxQi3pc::fetchTest<QJsonArray, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&)>(qi3pc&, QJsonArray const&, void (qi3pc::*)(), std::optional<std::pair<QJsonArray, long long> > const& (qi3pc::*)() const, void (qi3pc::*)(std::optional<std::pair<QJsonArray, long long> > const&), char const*, int, long long):
✓ Branch 127 → 128 taken 20 times.
✗ Branch 127 → 129 not taken.
✓ Branch 131 → 132 taken 20 times.
✗ Branch 131 → 134 not taken.
40 }
153
154 template<typename Data>
155 QString
156 185 TestBlackBoxQi3pc::prettify(const Data& data) {
157 if constexpr(std::is_same_v<Data, QString>) {
158 20 return data;
159 } else {
160
6/12
QString TestBlackBoxQi3pc::prettify<QJsonArray>(QJsonArray const&):
✓ Branch 2 → 3 taken 80 times.
✗ Branch 2 → 14 not taken.
✓ Branch 3 → 4 taken 80 times.
✗ Branch 3 → 12 not taken.
✓ Branch 4 → 5 taken 80 times.
✗ Branch 4 → 10 not taken.
QString TestBlackBoxQi3pc::prettify<QJsonObject>(QJsonObject const&):
✓ Branch 2 → 3 taken 85 times.
✗ Branch 2 → 14 not taken.
✓ Branch 3 → 4 taken 85 times.
✗ Branch 3 → 12 not taken.
✓ Branch 4 → 5 taken 85 times.
✗ Branch 4 → 10 not taken.
165 return QString::fromUtf8(QJsonDocument(data).toJson());
161 }
162 }
163
164 template<typename Data>
165 void
166 80 TestBlackBoxQi3pc::check_equal(const Data& expected, const Data& actual, const QString& logPrefix) {
167 if constexpr(std::is_same_v<Data, QJsonArray>) {
168
10/38
✓ Branch 4 → 5 taken 40 times.
✗ Branch 4 → 26 not taken.
✓ Branch 5 → 6 taken 40 times.
✗ Branch 5 → 109 not taken.
✓ Branch 7 → 8 taken 40 times.
✗ Branch 7 → 106 not taken.
✓ Branch 9 → 10 taken 40 times.
✗ Branch 9 → 103 not taken.
✓ Branch 10 → 11 taken 40 times.
✗ Branch 10 → 103 not taken.
✓ Branch 12 → 13 taken 40 times.
✗ Branch 12 → 100 not taken.
✓ Branch 13 → 14 taken 40 times.
✗ Branch 13 → 100 not taken.
✓ Branch 15 → 16 taken 40 times.
✗ Branch 15 → 98 not taken.
✓ Branch 17 → 18 taken 40 times.
✗ Branch 17 → 96 not taken.
✗ Branch 23 → 24 not taken.
✓ Branch 23 → 47 taken 40 times.
✗ Branch 26 → 27 not taken.
✗ Branch 26 → 127 not taken.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 124 not taken.
✗ Branch 30 → 31 not taken.
✗ Branch 30 → 121 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 121 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 118 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 118 not taken.
✗ Branch 36 → 37 not taken.
✗ Branch 36 → 116 not taken.
✗ Branch 38 → 39 not taken.
✗ Branch 38 → 114 not taken.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 47 not taken.
160 QVERIFY2(expected.count() == actual.count(),
169 qPrintable(QString("%1 Expected .count#%2 - Found .count#%3")
170 .arg(logPrefix)
171 .arg(expected.count())
172 .arg(actual.count())
173 ));
174 }
175
176
28/106
void TestBlackBoxQi3pc::check_equal<QString>(QString const&, QString const&, QString const&):
✓ Branch 3 → 4 taken 10 times.
✗ Branch 3 → 27 not taken.
✓ Branch 4 → 5 taken 10 times.
✗ Branch 4 → 70 not taken.
✓ Branch 6 → 7 taken 10 times.
✗ Branch 6 → 67 not taken.
✓ Branch 9 → 10 taken 10 times.
✗ Branch 9 → 61 not taken.
✓ Branch 12 → 13 taken 10 times.
✗ Branch 12 → 55 not taken.
✓ Branch 14 → 15 taken 10 times.
✗ Branch 14 → 53 not taken.
✓ Branch 16 → 17 taken 10 times.
✗ Branch 16 → 51 not taken.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 50 taken 10 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 94 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 91 not taken.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 85 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 79 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 77 not taken.
✗ Branch 39 → 40 not taken.
✗ Branch 39 → 75 not taken.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 50 not taken.
void TestBlackBoxQi3pc::check_equal<QJsonObject>(QJsonObject const&, QJsonObject const&, QString const&):
✓ Branch 3 → 4 taken 30 times.
✗ Branch 3 → 27 not taken.
✓ Branch 4 → 5 taken 30 times.
✗ Branch 4 → 70 not taken.
✓ Branch 6 → 7 taken 30 times.
✗ Branch 6 → 67 not taken.
✓ Branch 8 → 9 taken 30 times.
✗ Branch 8 → 63 not taken.
✓ Branch 9 → 10 taken 30 times.
✗ Branch 9 → 61 not taken.
✓ Branch 11 → 12 taken 30 times.
✗ Branch 11 → 57 not taken.
✓ Branch 12 → 13 taken 30 times.
✗ Branch 12 → 55 not taken.
✓ Branch 14 → 15 taken 30 times.
✗ Branch 14 → 53 not taken.
✓ Branch 16 → 17 taken 30 times.
✗ Branch 16 → 51 not taken.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 50 taken 30 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 94 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 91 not taken.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 87 not taken.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 85 not taken.
✗ Branch 34 → 35 not taken.
✗ Branch 34 → 81 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 79 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 77 not taken.
✗ Branch 39 → 40 not taken.
✗ Branch 39 → 75 not taken.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 50 not taken.
void TestBlackBoxQi3pc::check_equal<QJsonArray>(QJsonArray const&, QJsonArray const&, QString const&):
✓ Branch 48 → 49 taken 40 times.
✗ Branch 48 → 72 not taken.
✓ Branch 49 → 50 taken 40 times.
✗ Branch 49 → 151 not taken.
✓ Branch 51 → 52 taken 40 times.
✗ Branch 51 → 148 not taken.
✓ Branch 53 → 54 taken 40 times.
✗ Branch 53 → 144 not taken.
✓ Branch 54 → 55 taken 40 times.
✗ Branch 54 → 142 not taken.
✓ Branch 56 → 57 taken 40 times.
✗ Branch 56 → 138 not taken.
✓ Branch 57 → 58 taken 40 times.
✗ Branch 57 → 136 not taken.
✓ Branch 59 → 60 taken 40 times.
✗ Branch 59 → 134 not taken.
✓ Branch 61 → 62 taken 40 times.
✗ Branch 61 → 132 not taken.
✗ Branch 69 → 70 not taken.
✓ Branch 69 → 95 taken 40 times.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 175 not taken.
✗ Branch 74 → 75 not taken.
✗ Branch 74 → 172 not taken.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 168 not taken.
✗ Branch 77 → 78 not taken.
✗ Branch 77 → 166 not taken.
✗ Branch 79 → 80 not taken.
✗ Branch 79 → 162 not taken.
✗ Branch 80 → 81 not taken.
✗ Branch 80 → 160 not taken.
✗ Branch 82 → 83 not taken.
✗ Branch 82 → 158 not taken.
✗ Branch 84 → 85 not taken.
✗ Branch 84 → 156 not taken.
✗ Branch 92 → 93 not taken.
✗ Branch 92 → 95 not taken.
320 QVERIFY2(expected == actual,
177 qPrintable(QString("%1\n"
178 "Expected:\n====\n%2\n====\n"
179 "Found:\n====\n%3\n====\n")
180 .arg(logPrefix)
181 .arg(prettify(expected))
182 .arg(prettify(actual))
183 ));
184 }
185