summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-04-23 17:05:31 +0200
committerLars Knoll <lars.knoll@qt.io>2020-05-14 07:48:13 +0200
commit940665eff5570323f4c00b61a4fc839b14cd823e (patch)
treeb85102c2464ae125545ce136c835ea5495359625 /tests
parent4b2edde373675e80d0db90b8f724fe0607e95f27 (diff)
Add some incremental tests
Feed the data one by one to the encoder or decoder to verify that the handling of incremental decoding is correct. Change-Id: I565e4f1872e00859026334f7662b6778772e159d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp83
1 files changed, 63 insertions, 20 deletions
diff --git a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp
index 7840c0e1c9..c3dc8a0383 100644
--- a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp
+++ b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp
@@ -1337,21 +1337,40 @@ void tst_QStringConverter::utf8stateful()
QFETCH(QByteArray, buffer2);
QFETCH(QString, result);
- QStringDecoder decoder(QStringDecoder::Utf8);
- QVERIFY(decoder.isValid());
+ {
+ QStringDecoder decoder(QStringDecoder::Utf8);
+ QVERIFY(decoder.isValid());
- QString decoded = decoder(buffer1);
- if (result.isNull()) {
- if (!decoder.hasError()) {
- // incomplete data
+ QString decoded = decoder(buffer1);
+ if (result.isNull()) {
+ if (!decoder.hasError()) {
+ // incomplete data
+ decoded += decoder(buffer2);
+ QVERIFY(decoder.hasError());
+ }
+ } else {
+ QVERIFY(!decoder.hasError());
decoded += decoder(buffer2);
+ QVERIFY(!decoder.hasError());
+ QCOMPARE(decoded, result);
+ }
+ }
+
+ if (!buffer2.isEmpty()) {
+ QStringDecoder decoder(QStringDecoder::Utf8);
+ QVERIFY(decoder.isValid());
+
+ QString decoded;
+ for (char c : buffer1)
+ decoded += decoder(&c, 1);
+ for (char c : buffer2)
+ decoded += decoder(&c, 1);
+ if (result.isNull()) {
QVERIFY(decoder.hasError());
+ } else {
+ QVERIFY(!decoder.hasError());
+ QCOMPARE(decoded, result);
}
- } else {
- QVERIFY(!decoder.hasError());
- decoded += decoder(buffer2);
- QVERIFY(!decoder.hasError());
- QCOMPARE(decoded, result);
}
}
@@ -1526,18 +1545,42 @@ void tst_QStringConverter::utfHeaders()
QLatin1String ignoreReverseTestOn = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? QLatin1String(" le") : QLatin1String(" be");
QString rowName(QTest::currentDataTag());
- QStringDecoder decode(encoding, flags);
- QVERIFY(decode.isValid());
+ {
+ QStringDecoder decode(encoding, flags);
+ QVERIFY(decode.isValid());
+
+ QString result = decode(encoded);
+ QCOMPARE(result.length(), unicode.length());
+ QCOMPARE(result, unicode);
+ }
- QString result = decode(encoded);
- QCOMPARE(result.length(), unicode.length());
- QCOMPARE(result, unicode);
+ {
+ QStringDecoder decode(encoding, flags);
+ QVERIFY(decode.isValid());
+
+ QString result;
+ for (char c : encoded)
+ result += decode(&c, 1);
+ QCOMPARE(result.length(), unicode.length());
+ QCOMPARE(result, unicode);
+ }
if (!rowName.endsWith("nobom") && !rowName.contains(ignoreReverseTestOn)) {
- QStringEncoder encode(encoding, flags);
- QVERIFY(encode.isValid());
- QByteArray reencoded = encode(unicode);
- QCOMPARE(reencoded, encoded);
+ {
+ QStringEncoder encode(encoding, flags);
+ QVERIFY(encode.isValid());
+ QByteArray reencoded = encode(unicode);
+ QCOMPARE(reencoded, encoded);
+ }
+
+ {
+ QStringEncoder encode(encoding, flags);
+ QVERIFY(encode.isValid());
+ QByteArray reencoded;
+ for (QChar c : unicode)
+ reencoded += encode(&c, 1);
+ QCOMPARE(reencoded, encoded);
+ }
}
}