summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/serialization/qtextstream
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-05-02 14:54:20 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-05-03 11:44:56 +0200
commit7905b624fda19960f85cfada6b84e416d738a22a (patch)
treef208afd8ee3ecc9b98277ff538ae84a55b7fd182 /tests/auto/corelib/serialization/qtextstream
parent175cc7f7c0cfab45e67b04764c2753903df10981 (diff)
QTextStream: fix streaming of char16_t's
Clazy complains about all uses of QLatin1Char these days, but if one actually applies the fixit to turn out << QLatin1Char(' '); into out << u' '; the space is now streamed as an int (20), not as a space. Fix by providing an explicit char16_t overload. [ChangeLog][QtCore][QTextStream] Added op<<(char16_t). [ChangeLog][Important Behavior Changes] QTextStream streams char16_t's as QChars now instead of outputting the numeric value. If you want to preserve the old behavior, cast the char16_t to a numeric type, such as ushort or int, and stream that. This is backwards-compatible. Pick-to: 6.3 Change-Id: I42d422cdebb27d38ac1714b22ef186642ec407e7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/corelib/serialization/qtextstream')
-rw-r--r--tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
index 9e8bcfaea2..5a7be18823 100644
--- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
@@ -94,6 +94,8 @@ private slots:
// char operators
void QChar_operators_FromDevice_data();
void QChar_operators_FromDevice();
+ void char16_t_operators_FromDevice_data();
+ void char16_t_operators_FromDevice();
void char_operators_FromDevice_data();
void char_operators_FromDevice();
@@ -1919,6 +1921,31 @@ void tst_QTextStream::QChar_operators_FromDevice()
}
// ------------------------------------------------------------------------------
+void tst_QTextStream::char16_t_operators_FromDevice_data()
+{
+ generateOperatorCharData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::char16_t_operators_FromDevice()
+{
+ QFETCH(const QChar, qchar_output);
+ QFETCH(const QByteArray, write_output);
+ const char16_t char16_t_output = qchar_output.unicode();
+
+ QBuffer writeBuf;
+ writeBuf.open(QBuffer::WriteOnly);
+
+ QTextStream writeStream(&writeBuf);
+ writeStream.setEncoding(QStringConverter::Latin1);
+ writeStream << char16_t_output;
+ writeStream.flush();
+
+ QCOMPARE(writeBuf.buffer().size(), write_output.size());
+ QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
+}
+
+// ------------------------------------------------------------------------------
void tst_QTextStream::char_operators_FromDevice_data()
{
generateOperatorCharData(false);