tst_QStringConverter: roll up independent tests to rows in others
Simplifies the test a little. Pick-to: 6.3 Change-Id: I77c8221eb2824c369feffffd16f0a7fc44215aaf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
30721c3d03
commit
f569acd6ae
@ -74,6 +74,7 @@ static const std::array testStrings = {
|
||||
"This is a standard US-ASCII message" u"",
|
||||
AsciiOnly
|
||||
},
|
||||
TestString{ "ascii-with-carriage-return", "a\rb", u"a\rb", AsciiOnly },
|
||||
TestString{ "ascii-with-control",
|
||||
"\1This\2is\3an\4US-ASCII\020 message interspersed with control chars",
|
||||
"\1This\2is\3an\4US-ASCII\020 message interspersed with control chars" u"",
|
||||
@ -90,6 +91,11 @@ static const std::array testStrings = {
|
||||
#define ROW(name, string) TestString{ name, u8"" string, u"" string }
|
||||
ROW("euro", "€"),
|
||||
ROW("character+bom", "b\ufeff"),
|
||||
/* Check that the codec does NOT flag EFBFBF.
|
||||
* This is a regression test; see QTBUG-33229
|
||||
*/
|
||||
ROW("last-bmp", "\uffff"),
|
||||
ROW("character+last-bmp", "b\uffff"),
|
||||
ROW("replacement", "\ufffd"),
|
||||
ROW("supplementary-plane", "\U00010203"),
|
||||
ROW("mahjong", "\U0001f000\U0001f001\U0001f002\U0001f003\U0001f004\U0001f005"
|
||||
@ -121,10 +127,7 @@ private slots:
|
||||
void roundtrip_data();
|
||||
void roundtrip();
|
||||
|
||||
void nonFlaggedCodepointFFFF() const;
|
||||
void flagF7808080() const;
|
||||
void nonFlaggedEFBFBF() const;
|
||||
void decode0D() const;
|
||||
|
||||
void utf8Codec_data();
|
||||
void utf8Codec();
|
||||
@ -348,23 +351,6 @@ void tst_QStringConverter::roundtrip()
|
||||
QCOMPARE(decoded, uniString);
|
||||
}
|
||||
|
||||
void tst_QStringConverter::nonFlaggedCodepointFFFF() const
|
||||
{
|
||||
//Check that the code point 0xFFFF (=non-character code 0xEFBFBF) is not flagged
|
||||
const QChar ch(0xFFFF);
|
||||
|
||||
QStringEncoder encoder(QStringEncoder::Utf8);
|
||||
QVERIFY(encoder.isValid());
|
||||
|
||||
const QByteArray asDecoded = encoder(QStringView(&ch, 1));
|
||||
QCOMPARE(asDecoded, QByteArray("\357\277\277"));
|
||||
|
||||
QByteArray ffff("\357\277\277");
|
||||
QStringDecoder decoder(QStringEncoder::Utf8, QStringDecoder::Flag::ConvertInvalidToNull);
|
||||
QVERIFY(decoder.isValid());
|
||||
QVERIFY(decoder(ffff) == QString(1, ch));
|
||||
}
|
||||
|
||||
void tst_QStringConverter::flagF7808080() const
|
||||
{
|
||||
/* This test case stems from test not-wf-sa-170, tests/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml,
|
||||
@ -395,45 +381,6 @@ void tst_QStringConverter::flagF7808080() const
|
||||
QCOMPARE(decoder(input), QString(input.size(), QChar(0)));
|
||||
}
|
||||
|
||||
void tst_QStringConverter::nonFlaggedEFBFBF() const
|
||||
{
|
||||
/* Check that the codec does NOT flag EFBFBF.
|
||||
* This is a regression test; see QTBUG-33229
|
||||
*/
|
||||
QByteArray validInput;
|
||||
validInput.resize(3);
|
||||
validInput[0] = char(0xEF);
|
||||
validInput[1] = char(0xBF);
|
||||
validInput[2] = char(0xBF);
|
||||
|
||||
{
|
||||
QStringDecoder decoder(QStringEncoder::Utf8, QStringDecoder::Flag::ConvertInvalidToNull);
|
||||
QVERIFY(decoder.isValid());
|
||||
QVERIFY(decoder(validInput) == QString::fromUtf8(QByteArray::fromHex("EFBFBF")));
|
||||
}
|
||||
|
||||
// Check that 0xEFBFBF is correctly decoded when preceded by an arbitrary character
|
||||
{
|
||||
QByteArray start("B");
|
||||
start.append(validInput);
|
||||
|
||||
QStringDecoder decoder(QStringEncoder::Utf8, QStringDecoder::Flag::ConvertInvalidToNull);
|
||||
QVERIFY(decoder.isValid());
|
||||
QVERIFY(decoder(start) == QString::fromUtf8(QByteArray("B").append(QByteArray::fromHex("EFBFBF"))));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QStringConverter::decode0D() const
|
||||
{
|
||||
QByteArray input;
|
||||
input.resize(3);
|
||||
input[0] = 'A';
|
||||
input[1] = '\r';
|
||||
input[2] = 'B';
|
||||
|
||||
QCOMPARE(QString::fromUtf8(input.constData()).toUtf8(), input);
|
||||
}
|
||||
|
||||
static QString fromInvalidUtf8Sequence(const QByteArray &ba)
|
||||
{
|
||||
return QString().fill(QChar::ReplacementCharacter, ba.size());
|
||||
|
Loading…
Reference in New Issue
Block a user