Improve and simplify tst_QByteArray's tests

Don't go via QString when we don't need to.
Put expected after actual, not the other way round.
Give tests and test-cases sensible names.
Prefer function-style cast over C-style.

Change-Id: I0b79534a9cc95f2e312a85394693ac674ff3d1d6
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Edward Welbourne 2021-08-18 09:58:46 +02:00
parent 497b9fd1ce
commit 37b4c4d82f

View File

@ -123,8 +123,8 @@ private slots:
void fromPercentEncoding(); void fromPercentEncoding();
void toPercentEncoding_data(); void toPercentEncoding_data();
void toPercentEncoding(); void toPercentEncoding();
void toPercentEncoding2_data(); void pecentEncodingRoundTrip_data();
void toPercentEncoding2(); void pecentEncodingRoundTrip();
void qstrcmp_data(); void qstrcmp_data();
void qstrcmp(); void qstrcmp();
@ -338,9 +338,10 @@ void tst_QByteArray::qUncompressCorruptedData()
void tst_QByteArray::qCompressionZeroTermination() void tst_QByteArray::qCompressionZeroTermination()
{ {
QString s = "Hello, I'm a string."; QByteArray s = "Hello, I'm a string.";
QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit())); QByteArray ba = ::qUncompress(::qCompress(s));
QVERIFY((int) *(ba.data() + ba.size()) == 0); QCOMPARE(ba.data()[ba.size()], '\0');
QCOMPARE(ba, s);
} }
#endif #endif
@ -1280,18 +1281,15 @@ void tst_QByteArray::replaceWithSpecifiedLength()
void tst_QByteArray::number() void tst_QByteArray::number()
{ {
QCOMPARE(QString(QByteArray::number((quint64) 0)), QCOMPARE(QByteArray::number(quint64(0)), QByteArray("0"));
QString(QByteArray("0"))); QCOMPARE(QByteArray::number(Q_UINT64_C(0xFFFFFFFFFFFFFFFF)),
QCOMPARE(QString(QByteArray::number(Q_UINT64_C(0xFFFFFFFFFFFFFFFF))), QByteArray("18446744073709551615"));
QString(QByteArray("18446744073709551615"))); QCOMPARE(QByteArray::number(Q_INT64_C(0xFFFFFFFFFFFFFFFF)), QByteArray("-1"));
QCOMPARE(QString(QByteArray::number(Q_INT64_C(0xFFFFFFFFFFFFFFFF))), QCOMPARE(QByteArray::number(qint64(0)), QByteArray("0"));
QString(QByteArray("-1"))); QCOMPARE(QByteArray::number(Q_INT64_C(0x7FFFFFFFFFFFFFFF)),
QCOMPARE(QString(QByteArray::number(qint64(0))), QByteArray("9223372036854775807"));
QString(QByteArray("0"))); QCOMPARE(QByteArray::number(Q_INT64_C(0x8000000000000000)),
QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x7FFFFFFFFFFFFFFF))), QByteArray("-9223372036854775808"));
QString(QByteArray("9223372036854775807")));
QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x8000000000000000))),
QString(QByteArray("-9223372036854775808")));
} }
void tst_QByteArray::number_double_data() void tst_QByteArray::number_double_data()
@ -2023,15 +2021,15 @@ void tst_QByteArray::toFromPercentEncoding()
QCOMPARE(QByteArray("").toPercentEncoding(), QByteArray("")); QCOMPARE(QByteArray("").toPercentEncoding(), QByteArray(""));
QByteArray data = arr.toPercentEncoding(); QByteArray data = arr.toPercentEncoding();
QCOMPARE(QString(data), QString("Qt%20is%20great%21")); QCOMPARE(data, QByteArray("Qt%20is%20great%21"));
QCOMPARE(QByteArray::fromPercentEncoding(data), arr); QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
data = arr.toPercentEncoding("! ", "Qt"); data = arr.toPercentEncoding("! ", "Qt");
QCOMPARE(QString(data), QString("%51%74 is grea%74!")); QCOMPARE(data, QByteArray("%51%74 is grea%74!"));
QCOMPARE(QByteArray::fromPercentEncoding(data), arr); QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q'); data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q');
QCOMPARE(QString(data), QString("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21")); QCOMPARE(data, QByteArray("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21"));
QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr); QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr);
// verify that to/from percent encoding preserves nullity // verify that to/from percent encoding preserves nullity
@ -2096,36 +2094,34 @@ void tst_QByteArray::toPercentEncoding()
QCOMPARE(decodedString.toPercentEncoding("/.").constData(), encodedString.constData()); QCOMPARE(decodedString.toPercentEncoding("/.").constData(), encodedString.constData());
} }
void tst_QByteArray::toPercentEncoding2_data() void tst_QByteArray::pecentEncodingRoundTrip_data()
{ {
QTest::addColumn<QByteArray>("original"); QTest::addColumn<QByteArray>("original");
QTest::addColumn<QByteArray>("encoded"); QTest::addColumn<QByteArray>("encoded");
QTest::addColumn<QByteArray>("excludeInEncoding"); QTest::addColumn<QByteArray>("excludeInEncoding");
QTest::addColumn<QByteArray>("includeInEncoding"); QTest::addColumn<QByteArray>("includeInEncoding");
QTest::newRow("test_01") << QByteArray("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~") QTest::newRow("unchanged")
<< QByteArray("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~") << QByteArray("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~")
<< QByteArray("") << QByteArray("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~")
<< QByteArray(""); << QByteArray("") << QByteArray("");
QTest::newRow("test_02") << QByteArray("{\t\n\r^\"abc}") QTest::newRow("enclosed-space-quote")
<< QByteArray("%7B%09%0A%0D%5E%22abc%7D") << QByteArray("{\t\n\r^\"abc}")
<< QByteArray("") << QByteArray("%7B%09%0A%0D%5E%22abc%7D")
<< QByteArray(""); << QByteArray("") << QByteArray("");
QTest::newRow("test_03") << QByteArray("://?#[]@!$&'()*+,;=") QTest::newRow("punctuate")
<< QByteArray("%3A%2F%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D") << QByteArray("://?#[]@!$&'()*+,;=")
<< QByteArray("") << QByteArray("%3A%2F%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D")
<< QByteArray(""); << QByteArray("") << QByteArray("");
QTest::newRow("test_04") << QByteArray("://?#[]@!$&'()*+,;=") QTest::newRow("punctuate-exclude")
<< QByteArray("%3A%2F%2F%3F%23%5B%5D%40!$&'()*+,;=") << QByteArray("://?#[]@!$&'()*+,;=")
<< QByteArray("!$&'()*+,;=") << QByteArray("%3A%2F%2F%3F%23%5B%5D%40!$&'()*+,;=")
<< QByteArray(""); << QByteArray("!$&'()*+,;=") << QByteArray("");
QTest::newRow("test_05") << QByteArray("abcd") QTest::newRow("text-include")
<< QByteArray("a%62%63d") << QByteArray("abcd") << QByteArray("a%62%63d") << QByteArray("") << QByteArray("bc");
<< QByteArray("")
<< QByteArray("bc");
} }
void tst_QByteArray::toPercentEncoding2() void tst_QByteArray::pecentEncodingRoundTrip()
{ {
QFETCH(QByteArray, original); QFETCH(QByteArray, original);
QFETCH(QByteArray, encoded); QFETCH(QByteArray, encoded);
@ -2133,8 +2129,8 @@ void tst_QByteArray::toPercentEncoding2()
QFETCH(QByteArray, includeInEncoding); QFETCH(QByteArray, includeInEncoding);
QByteArray encodedData = original.toPercentEncoding(excludeInEncoding, includeInEncoding); QByteArray encodedData = original.toPercentEncoding(excludeInEncoding, includeInEncoding);
QCOMPARE(encodedData.constData(), encoded.constData()); QCOMPARE(encodedData, encoded);
QCOMPARE(original, QByteArray::fromPercentEncoding(encodedData)); QCOMPARE(QByteArray::fromPercentEncoding(encodedData), original);
} }
struct StringComparisonData struct StringComparisonData
@ -2217,52 +2213,49 @@ void tst_QByteArray::compare_singular()
void tst_QByteArray::compareCharStar_data() void tst_QByteArray::compareCharStar_data()
{ {
QTest::addColumn<QByteArray>("str1"); QTest::addColumn<QByteArray>("str1");
QTest::addColumn<QString>("string2"); QTest::addColumn<QByteArray>("string2");
QTest::addColumn<int>("result"); QTest::addColumn<int>("result");
QTest::newRow("null-null") << QByteArray() << QString() << 0; QTest::newRow("null-null") << QByteArray() << QByteArray() << 0;
QTest::newRow("null-empty") << QByteArray() << "" << 0; QTest::newRow("null-empty") << QByteArray() << QByteArray("") << 0;
QTest::newRow("null-full") << QByteArray() << "abc" << -1; QTest::newRow("null-full") << QByteArray() << QByteArray("abc") << -1;
QTest::newRow("empty-null") << QByteArray("") << QString() << 0; QTest::newRow("empty-null") << QByteArray("") << QByteArray() << 0;
QTest::newRow("empty-empty") << QByteArray("") << "" << 0; QTest::newRow("empty-empty") << QByteArray("") << QByteArray("") << 0;
QTest::newRow("empty-full") << QByteArray("") << "abc" << -1; QTest::newRow("empty-full") << QByteArray("") << QByteArray("abc") << -1;
QTest::newRow("raw-null") << QByteArray::fromRawData("abc", 0) << QString() << 0; QTest::newRow("raw-null") << QByteArray::fromRawData("abc", 0) << QByteArray() << 0;
QTest::newRow("raw-empty") << QByteArray::fromRawData("abc", 0) << QString("") << 0; QTest::newRow("raw-empty") << QByteArray::fromRawData("abc", 0) << QByteArray("") << 0;
QTest::newRow("raw-full") << QByteArray::fromRawData("abc", 0) << "abc" << -1; QTest::newRow("raw-full") << QByteArray::fromRawData("abc", 0) << QByteArray("abc") << -1;
QTest::newRow("full-null") << QByteArray("abc") << QString() << +1; QTest::newRow("full-null") << QByteArray("abc") << QByteArray() << +1;
QTest::newRow("full-empty") << QByteArray("abc") << "" << +1; QTest::newRow("full-empty") << QByteArray("abc") << QByteArray("") << +1;
QTest::newRow("equal1") << QByteArray("abc") << "abc" << 0; QTest::newRow("equal1") << QByteArray("abc") << QByteArray("abc") << 0;
QTest::newRow("equal2") << QByteArray("abcd", 3) << "abc" << 0; QTest::newRow("equal2") << QByteArray("abcd", 3) << QByteArray("abc") << 0;
QTest::newRow("equal3") << QByteArray::fromRawData("abcd", 3) << "abc" << 0; QTest::newRow("equal3") << QByteArray::fromRawData("abcd", 3) << QByteArray("abc") << 0;
QTest::newRow("less1") << QByteArray("ab") << "abc" << -1; QTest::newRow("less1") << QByteArray("ab") << QByteArray("abc") << -1;
QTest::newRow("less2") << QByteArray("abb") << "abc" << -1; QTest::newRow("less2") << QByteArray("abb") << QByteArray("abc") << -1;
QTest::newRow("less3") << QByteArray::fromRawData("abc", 2) << "abc" << -1; QTest::newRow("less3") << QByteArray::fromRawData("abc", 2) << QByteArray("abc") << -1;
QTest::newRow("less4") << QByteArray("", 1) << "abc" << -1; QTest::newRow("less4") << QByteArray("", 1) << QByteArray("abc") << -1;
QTest::newRow("less5") << QByteArray::fromRawData("", 1) << "abc" << -1; QTest::newRow("less5") << QByteArray::fromRawData("", 1) << QByteArray("abc") << -1;
QTest::newRow("less6") << QByteArray("a\0bc", 4) << "a.bc" << -1; QTest::newRow("less6") << QByteArray("a\0bc", 4) << QByteArray("a.bc") << -1;
QTest::newRow("greater1") << QByteArray("ac") << "abc" << +1; QTest::newRow("greater1") << QByteArray("ac") << QByteArray("abc") << +1;
QTest::newRow("greater2") << QByteArray("abd") << "abc" << +1; QTest::newRow("greater2") << QByteArray("abd") << QByteArray("abc") << +1;
QTest::newRow("greater3") << QByteArray("abcd") << "abc" << +1; QTest::newRow("greater3") << QByteArray("abcd") << QByteArray("abc") << +1;
QTest::newRow("greater4") << QByteArray::fromRawData("abcd", 4) << "abc" << +1; QTest::newRow("greater4") << QByteArray::fromRawData("abcd", 4) << QByteArray("abc") << +1;
} }
void tst_QByteArray::compareCharStar() void tst_QByteArray::compareCharStar()
{ {
QFETCH(QByteArray, str1); QFETCH(QByteArray, str1);
QFETCH(QString, string2); QFETCH(QByteArray, string2);
QFETCH(int, result); QFETCH(int, result);
const bool isEqual = result == 0; const bool isEqual = result == 0;
const bool isLess = result < 0; const bool isLess = result < 0;
const bool isGreater = result > 0; const bool isGreater = result > 0;
QByteArray qba = string2.toUtf8(); const char *str2 = string2.isNull() ? nullptr : string2.constData();
const char *str2 = qba.constData();
if (string2.isNull())
str2 = 0;
// basic tests: // basic tests:
QCOMPARE(str1 == str2, isEqual); QCOMPARE(str1 == str2, isEqual);