Rewrite tst_qdataurl as a data-driven test

... to make adding new test cases simpler.

Pick-to: 6.3 6.2 5.15
Change-Id: I54d08cebc7ae4bea9f0397ba3eec1ef6308a5161
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2022-03-09 15:30:23 +01:00
parent d15222fbaf
commit 52092802b7

View File

@ -30,48 +30,52 @@
#include <QTest> #include <QTest>
#include <QtCore/QDebug> #include <QtCore/QDebug>
using namespace Qt::Literals;
class tst_QDataUrl : public QObject class tst_QDataUrl : public QObject
{ {
Q_OBJECT Q_OBJECT
private slots: private slots:
void nonData(); void decode_data();
void emptyData(); void decode();
void alreadyPercentageEncoded();
}; };
void tst_QDataUrl::nonData() void tst_QDataUrl::decode_data()
{ {
QLatin1String data("http://test.com"); QTest::addColumn<QString>("input");
QUrl url(data); QTest::addColumn<bool>("result");
QString mimeType; QTest::addColumn<QString>("mimeType");
QByteArray payload; QTest::addColumn<QByteArray>("payload");
bool result = qDecodeDataUrl(url, mimeType, payload);
QVERIFY(!result); auto row = [](const char *tag, const char *url, bool success, QString mimeType = {}, QByteArray payload = {}) {
QTest::newRow(tag) << url << success <<mimeType << payload;
};
row("nonData", "http://test.com", false);
row("emptyData", "data:text/plain", true,
"text/plain;charset=US-ASCII"_L1);
row("alreadyPercentageEncoded", "data:text/plain,%E2%88%9A", true,
"text/plain"_L1, QByteArray::fromPercentEncoding("%E2%88%9A"));
} }
void tst_QDataUrl::emptyData() void tst_QDataUrl::decode()
{ {
QLatin1String data("data:text/plain"); QFETCH(const QString, input);
QUrl url(data); QFETCH(const bool, result);
QString mimeType; QFETCH(const QString, mimeType);
QByteArray payload; QFETCH(const QByteArray, payload);
bool result = qDecodeDataUrl(url, mimeType, payload);
QVERIFY(result);
QCOMPARE(mimeType, QLatin1String("text/plain;charset=US-ASCII"));
QVERIFY(payload.isNull());
}
void tst_QDataUrl::alreadyPercentageEncoded() QString actualMimeType;
{ QByteArray actualPayload;
QLatin1String data("data:text/plain,%E2%88%9A");
QUrl url(data); QUrl url(input);
QString mimeType; const bool actualResult = qDecodeDataUrl(url, actualMimeType, actualPayload);
QByteArray payload;
bool result = qDecodeDataUrl(url, mimeType, payload); QCOMPARE(actualResult, result);
QVERIFY(result); QCOMPARE(actualMimeType, mimeType);
QCOMPARE(mimeType, QLatin1String("text/plain")); QCOMPARE(actualPayload, payload);
QCOMPARE(payload, QByteArray::fromPercentEncoding("%E2%88%9A")); QCOMPARE(actualPayload.isNull(), payload.isNull()); // assume nullness is significant
} }
QTEST_MAIN(tst_QDataUrl) QTEST_MAIN(tst_QDataUrl)