QStringConverter: add a test for missing drain

Task-number: QTBUG-118834
Change-Id: I3085e6f83aa5a21f477a101a45186d0ce2133d10
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
bb10
Mårten Nordheim 2024-02-09 13:53:54 +01:00
parent 496340f33a
commit b099988f6d
1 changed files with 15 additions and 0 deletions

View File

@ -2615,6 +2615,21 @@ void tst_QStringConverter::fromLocal8Bit_special_cases()
QCOMPARE(result, u"");
QCOMPARE(state.remainingChars, 0);
// Test QTBUG-118834, which is failing
result.clear();
state.clear();
result = QLocal8Bit::convertToUnicode_sys("\xe4\xe4\xbd", UTF8, &state);
QCOMPARE(result, QString());
QVERIFY(result.isNull());
// Remaining octet:
result += QLocal8Bit::convertToUnicode_sys("\xa0", UTF8, &state);
QEXPECT_FAIL("", "QTBUG-118834: We don't output anything because it's "
"within the size of our internal state, and we cannot "
"signal that it needs to be drained.", Continue);
QCOMPARE(result, QChar::ReplacementCharacter + u""_s);
QEXPECT_FAIL("", "QTBUG-118834: As above", Continue);
QCOMPARE(state.remainingChars, 0);
// Now try a 4-octet GB 18030 sequence:
result.clear();
state.clear();