53template<>
inline char *
toString(
const QRegion ®ion)
55 QByteArray result =
"QRegion(";
56 if (region.isNull()) {
58 }
else if (region.isEmpty()) {
61 const auto rects = region.begin();
62 const int rectCount = region.rectCount();
64 result += QByteArray::number(rectCount);
65 result +=
" rectangles, ";
67 for (
int i = 0; i < rectCount; ++i) {
70 const QRect &r = rects[i];
71 result += QByteArray::number(r.width());
73 result += QByteArray::number(r.height());
76 result += QByteArray::number(r.x());
79 result += QByteArray::number(r.y());
83 return qstrdup(result.constData());
127inline bool qCompare(QImage
const &t1, QImage
const &t2,
128 const char *actual,
const char *expected,
const char *file,
int line)
132 const bool t1Null = t1.isNull();
133 const bool t2Null = t2.isNull();
134 if (t1Null != t2Null) {
135 std::snprintf(msg, 1024,
"Compared QImages differ.\n"
136 " Actual (%s).isNull(): %d\n"
137 " Expected (%s).isNull(): %d", actual, t1Null, expected, t2Null);
138 return compare_helper(
false, msg, actual, expected, file, line);
140 if (t1Null && t2Null)
141 return compare_helper(
true,
nullptr, actual, expected, file, line);
142 if (!qFuzzyCompare(t1.devicePixelRatio(), t2.devicePixelRatio())) {
143 std::snprintf(msg, 1024,
"Compared QImages differ in device pixel ratio.\n"
145 " Expected (%s): %g",
146 actual, t1.devicePixelRatio(),
147 expected, t2.devicePixelRatio());
148 return compare_helper(
false, msg, actual, expected, file, line);
150 if (t1.width() != t2.width() || t1.height() != t2.height()) {
151 std::snprintf(msg, 1024,
"Compared QImages differ in size.\n"
152 " Actual (%s): %dx%d\n"
153 " Expected (%s): %dx%d",
154 actual, t1.width(), t1.height(),
155 expected, t2.width(), t2.height());
156 return compare_helper(
false, msg, actual, expected, file, line);
158 if (t1.format() != t2.format()) {
159 std::snprintf(msg, 1024,
"Compared QImages differ in format.\n"
161 " Expected (%s): %d",
162 actual, t1.format(), expected, t2.format());
163 return compare_helper(
false, msg, actual, expected, file, line);
165 return compare_helper(t1 == t2,
"Compared values are not the same",
166 actual, expected, file, line);
169inline bool qCompare(QPixmap
const &t1, QPixmap
const &t2,
const char *actual,
const char *expected,
170 const char *file,
int line)
174 const bool t1Null = t1.isNull();
175 const bool t2Null = t2.isNull();
176 if (t1Null != t2Null) {
177 std::snprintf(msg, 1024,
"Compared QPixmaps differ.\n"
178 " Actual (%s).isNull(): %d\n"
179 " Expected (%s).isNull(): %d", actual, t1Null, expected, t2Null);
180 return compare_helper(
false, msg, actual, expected, file, line);
182 if (t1Null && t2Null)
183 return compare_helper(
true,
nullptr, actual, expected, file, line);
184 if (!qFuzzyCompare(t1.devicePixelRatio(), t2.devicePixelRatio())) {
185 std::snprintf(msg, 1024,
"Compared QPixmaps differ in device pixel ratio.\n"
187 " Expected (%s): %g",
188 actual, t1.devicePixelRatio(),
189 expected, t2.devicePixelRatio());
190 return compare_helper(
false, msg, actual, expected, file, line);
192 if (t1.width() != t2.width() || t1.height() != t2.height()) {
193 std::snprintf(msg, 1024,
"Compared QPixmaps differ in size.\n"
194 " Actual (%s): %dx%d\n"
195 " Expected (%s): %dx%d",
196 actual, t1.width(), t1.height(),
197 expected, t2.width(), t2.height());
198 return compare_helper(
false, msg, actual, expected, file, line);
200 return qCompare(t1.toImage(), t2.toImage(), actual, expected, file, line);
bool qCompare(QString const &t1, QLatin1StringView const &t2, const char *actual, const char *expected, const char *file, int line)