From b099988f6dfd7c58d36c3625d91fe3314f456fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Fri, 9 Feb 2024 13:53:54 +0100 Subject: [PATCH] QStringConverter: add a test for missing drain Task-number: QTBUG-118834 Change-Id: I3085e6f83aa5a21f477a101a45186d0ce2133d10 Reviewed-by: Edward Welbourne --- .../qstringconverter/tst_qstringconverter.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp index d5fff83321..b504dc980b 100644 --- a/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp +++ b/tests/auto/corelib/text/qstringconverter/tst_qstringconverter.cpp @@ -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();