diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2021-06-15 13:35:57 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2021-06-17 15:03:29 +0200 |
commit | 9ef167c38495a67639366357833041b33be3f978 (patch) | |
tree | 77b910f907c607cd9ddbb9bac8134a4f97d96259 /tools/qa/cppunit | |
parent | 1da7d73eeaaff43e4f3e8a61ad77fcec3c7aaed8 (diff) |
tools: handle special chars correctly in XmlHandler + test
Add the char encoding handler when calling xmlOutputBufferCreateIO
so that special chars are handled correctly. Previously we just
set nullptr.
Change-Id: I7ef44130869625cc4662bf168550a3f987390287
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117355
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'tools/qa/cppunit')
-rw-r--r-- | tools/qa/cppunit/test_xmlwriter.cxx | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tools/qa/cppunit/test_xmlwriter.cxx b/tools/qa/cppunit/test_xmlwriter.cxx new file mode 100644 index 000000000000..1cd207a4afe5 --- /dev/null +++ b/tools/qa/cppunit/test_xmlwriter.cxx @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <cppunit/extensions/HelperMacros.h> +#include <test/bootstrapfixture.hxx> +#include <rtl/ustring.hxx> +#include <tools/stream.hxx> +#include <tools/XmlWriter.hxx> + +namespace +{ +class XmlWriterTest : public test::BootstrapFixture +{ +public: + XmlWriterTest() + : BootstrapFixture(true, false) + { + } + + virtual void setUp() override {} + + void testSimpleRoot(); + void testSpecialChars(); + + CPPUNIT_TEST_SUITE(XmlWriterTest); + CPPUNIT_TEST(testSimpleRoot); + CPPUNIT_TEST(testSpecialChars); + CPPUNIT_TEST_SUITE_END(); +}; + +void XmlWriterTest::testSimpleRoot() +{ + SvMemoryStream aMemoryStream; + + tools::XmlWriter aWriter(&aMemoryStream); + aWriter.startDocument(0, false); + aWriter.startElement("test"); + aWriter.endElement(); + aWriter.endDocument(); + + aMemoryStream.Seek(0); + OString aString(static_cast<const char*>(aMemoryStream.GetData()), aMemoryStream.GetSize()); + CPPUNIT_ASSERT_EQUAL(OString("<test/>"), aString); +} + +void XmlWriterTest::testSpecialChars() +{ + SvMemoryStream aMemoryStream; + + tools::XmlWriter aWriter(&aMemoryStream); + aWriter.startDocument(0, false); + aWriter.startElement("test"); + aWriter.content("<>"); + aWriter.endElement(); + aWriter.endDocument(); + + aMemoryStream.Seek(0); + OString aString(static_cast<const char*>(aMemoryStream.GetData()), aMemoryStream.GetSize()); + CPPUNIT_ASSERT_EQUAL(OString("<test><></test>"), aString); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(XmlWriterTest); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |