tst_QImageReader: it's a rotate^Wadjacent_find!
Instead of copying a list, sorting it just to check it's sorted, and making a QSet out of it just to check the size is the same as that of the list (thereby checking there were no duplicates), simply apply adjacent_find with greater_equal. If none of the elements is ≥ their successor, that means all elements are < their successor, and _that_ means the range is sorted and has no duplicates. q.e.d. Change-Id: Id73c674ad4e29117370e8fc6af9fdfc690a3fba9 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 29d07101e5dd7efbb0ffbab1acb5d8d4ef0ed731) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
b3c12b05e6
commit
94a5d32343
@ -11,7 +11,6 @@
|
|||||||
#include <QImageReader>
|
#include <QImageReader>
|
||||||
#include <QImageWriter>
|
#include <QImageWriter>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QSet>
|
|
||||||
#include <QScopeGuard>
|
#include <QScopeGuard>
|
||||||
#include <QTcpSocket>
|
#include <QTcpSocket>
|
||||||
#include <QTcpServer>
|
#include <QTcpServer>
|
||||||
@ -595,41 +594,31 @@ void tst_QImageReader::multiWordNamedColorXPM()
|
|||||||
QCOMPARE(image.pixel(0, 2), qRgb(255, 250, 205)); // lemon chiffon
|
QCOMPARE(image.pixel(0, 2), qRgb(255, 250, 205)); // lemon chiffon
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
template <typename ForwardIterator>
|
||||||
|
bool is_sorted_unique(ForwardIterator first, ForwardIterator last)
|
||||||
|
{
|
||||||
|
// a range is sorted with no dups iff each *i < *(i+1), so check that none are >=:
|
||||||
|
return std::adjacent_find(first, last, std::greater_equal<>{}) == last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void tst_QImageReader::supportedFormats()
|
void tst_QImageReader::supportedFormats()
|
||||||
{
|
{
|
||||||
QList<QByteArray> formats = QImageReader::supportedImageFormats();
|
const QList<QByteArray> formats = QImageReader::supportedImageFormats();
|
||||||
QList<QByteArray> sortedFormats = formats;
|
auto printOnFailure = qScopeGuard([&] { qDebug() << formats; });
|
||||||
std::sort(sortedFormats.begin(), sortedFormats.end());
|
QVERIFY(is_sorted_unique(formats.begin(), formats.end()));
|
||||||
|
printOnFailure.dismiss();
|
||||||
// check that the list is sorted
|
|
||||||
QCOMPARE(formats, sortedFormats);
|
|
||||||
|
|
||||||
QSet<QByteArray> formatSet;
|
|
||||||
foreach (QByteArray format, formats)
|
|
||||||
formatSet << format;
|
|
||||||
|
|
||||||
// check that the list does not contain duplicates
|
|
||||||
QCOMPARE(formatSet.size(), formats.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QImageReader::supportedMimeTypes()
|
void tst_QImageReader::supportedMimeTypes()
|
||||||
{
|
{
|
||||||
QList<QByteArray> mimeTypes = QImageReader::supportedMimeTypes();
|
const QList<QByteArray> mimeTypes = QImageReader::supportedMimeTypes();
|
||||||
QList<QByteArray> sortedMimeTypes = mimeTypes;
|
auto printOnFailure = qScopeGuard([&] { qDebug() << mimeTypes; });
|
||||||
std::sort(sortedMimeTypes.begin(), sortedMimeTypes.end());
|
QVERIFY(is_sorted_unique(mimeTypes.begin(), mimeTypes.end()));
|
||||||
|
|
||||||
// check that the list is sorted
|
|
||||||
QCOMPARE(mimeTypes, sortedMimeTypes);
|
|
||||||
|
|
||||||
QSet<QByteArray> mimeTypeSet;
|
|
||||||
foreach (QByteArray mimeType, mimeTypes)
|
|
||||||
mimeTypeSet << mimeType;
|
|
||||||
|
|
||||||
// check the list as a minimum contains image/bmp
|
// check the list as a minimum contains image/bmp
|
||||||
QVERIFY(mimeTypeSet.contains("image/bmp"));
|
QVERIFY(mimeTypes.contains("image/bmp"));
|
||||||
|
printOnFailure.dismiss();
|
||||||
// check that the list does not contain duplicates
|
|
||||||
QCOMPARE(mimeTypeSet.size(), mimeTypes.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QImageReader::setBackgroundColor_data()
|
void tst_QImageReader::setBackgroundColor_data()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user