diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-04-23 17:05:31 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-05-14 07:48:13 +0200 |
commit | 940665eff5570323f4c00b61a4fc839b14cd823e (patch) | |
tree | b85102c2464ae125545ce136c835ea5495359625 /tests | |
parent | 4b2edde373675e80d0db90b8f724fe0607e95f27 (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.cpp | 83 |
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); + } } } |