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)
133 const bool t1Null = t1.isNull();
134 const bool t2Null = t2.isNull();
135 if (t1Null != t2Null) {
136 std::snprintf(msg, 1024,
"Compared QImages differ.\n"
137 " Actual (%s).isNull(): %d\n"
138 " Expected (%s).isNull(): %d", actual, t1Null, expected, t2Null);
139 return compare_helper(
false, msg, actual, expected, file, line);
141 if (t1Null && t2Null)
142 return compare_helper(
true,
nullptr, actual, expected, file, line);
143 if (!qFuzzyCompare(t1.devicePixelRatio(), t2.devicePixelRatio())) {
144 std::snprintf(msg, 1024,
"Compared QImages differ in device pixel ratio.\n"
146 " Expected (%s): %g",
147 actual, t1.devicePixelRatio(),
148 expected, t2.devicePixelRatio());
149 return compare_helper(
false, msg, actual, expected, file, line);
151 if (t1.width() != t2.width() || t1.height() != t2.height()) {
152 std::snprintf(msg, 1024,
"Compared QImages differ in size.\n"
153 " Actual (%s): %dx%d\n"
154 " Expected (%s): %dx%d",
155 actual, t1.width(), t1.height(),
156 expected, t2.width(), t2.height());
157 return compare_helper(
false, msg, actual, expected, file, line);
159 if (t1.format() != t2.format()) {
160 std::snprintf(msg, 1024,
"Compared QImages differ in format.\n"
162 " Expected (%s): %d",
163 actual, t1.format(), expected, t2.format());
164 return compare_helper(
false, msg, actual, expected, file, line);
166 return compare_helper(t1 == t2,
"Compared values are not the same",
167 actual, expected, file, line);
170inline bool qCompare(QPixmap
const &t1, QPixmap
const &t2,
const char *actual,
const char *expected,
171 const char *file,
int line)
176 const bool t1Null = t1.isNull();
177 const bool t2Null = t2.isNull();
178 if (t1Null != t2Null) {
179 std::snprintf(msg, 1024,
"Compared QPixmaps differ.\n"
180 " Actual (%s).isNull(): %d\n"
181 " Expected (%s).isNull(): %d", actual, t1Null, expected, t2Null);
182 return compare_helper(
false, msg, actual, expected, file, line);
184 if (t1Null && t2Null)
185 return compare_helper(
true,
nullptr, actual, expected, file, line);
186 if (!qFuzzyCompare(t1.devicePixelRatio(), t2.devicePixelRatio())) {
187 std::snprintf(msg, 1024,
"Compared QPixmaps differ in device pixel ratio.\n"
189 " Expected (%s): %g",
190 actual, t1.devicePixelRatio(),
191 expected, t2.devicePixelRatio());
192 return compare_helper(
false, msg, actual, expected, file, line);
194 if (t1.width() != t2.width() || t1.height() != t2.height()) {
195 std::snprintf(msg, 1024,
"Compared QPixmaps differ in size.\n"
196 " Actual (%s): %dx%d\n"
197 " Expected (%s): %dx%d",
198 actual, t1.width(), t1.height(),
199 expected, t2.width(), t2.height());
200 return compare_helper(
false, msg, actual, expected, file, line);
202 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)