diff options
author | Jan Arve Saether <jan-arve.saether@digia.com> | 2012-11-20 11:11:44 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-20 18:53:49 +0100 |
commit | 035d93a6e1cbde76d34866ffd9b39633572e6236 (patch) | |
tree | 5f131ef5550f30eabf823b4dd2daf535a0608355 /tests | |
parent | 4532a1399e10a677083300648cf18af9addab656 (diff) |
Fix regression in QXmlStreamWriter with codec set to UTF-16
Actually, this broke using QXmlStreamWriter with any codec
where characters in the ASCII range have a different encoding
than the ASCII standard.
This was a regression from 558fe9383ba0aecbec09cc411c0ebab132aac137
Task-number: QTBUG-23310
Change-Id: I75bd013e9d5de53da564a76c2f06e95ff35303a8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp index ea2cafdbc3..694a2f2952 100644 --- a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp +++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp @@ -558,6 +558,7 @@ private slots: void hasAttribute() const; void writeWithCodec() const; void writeWithUtf8Codec() const; + void writeWithUtf16Codec() const; void writeWithStandalone() const; void entitiesAndWhitespace_1() const; void entitiesAndWhitespace_2() const; @@ -1279,6 +1280,27 @@ void tst_QXmlStream::writeWithUtf8Codec() const QVERIFY(outarray.startsWith(begin)); } +void tst_QXmlStream::writeWithUtf16Codec() const +{ + QByteArray outarray; + QXmlStreamWriter writer(&outarray); + + QTextCodec *codec = QTextCodec::codecForMib(1014); // utf-16LE + QVERIFY(codec); + writer.setCodec(codec); + + writer.writeStartDocument("1.0"); + static const char begin[] = "<?xml version=\"1.0\" encoding=\"UTF-16"; // skip potential "LE" suffix + const int count = sizeof(begin) - 1; // don't include 0 terminator + QByteArray begin_UTF16; + begin_UTF16.reserve(2*(count)); + for (int i = 0; i < count; ++i) { + begin_UTF16.append(begin[i]); + begin_UTF16.append((char)'\0'); + } + QVERIFY(outarray.startsWith(begin_UTF16)); +} + void tst_QXmlStream::writeWithStandalone() const { { |