diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-04-16 09:51:27 +0200 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-04-16 09:52:27 +0200 |
commit | 8c571e5f82a6d6e36bd47c7d2ab202f2f9b7cf86 (patch) | |
tree | 74e17222e98d94bb1f39e8febe462e8b943005e2 /svgio | |
parent | 3b7472b284131c09d91b69f26d5d26d54648f939 (diff) |
svgio: introduce svg import tests
Change-Id: Id69f659a9e4b0332970e75b1d0a7d820c8b2c998
Diffstat (limited to 'svgio')
-rw-r--r-- | svgio/CppunitTest_svgio.mk | 68 | ||||
-rw-r--r-- | svgio/Module_svgio.mk | 4 | ||||
-rw-r--r-- | svgio/qa/cppunit/SvgImportTest.cxx | 99 | ||||
-rw-r--r-- | svgio/qa/cppunit/data/Rect.svg | 4 | ||||
-rw-r--r-- | svgio/qa/cppunit/data/RectWithParentStyles.svg | 13 | ||||
-rw-r--r-- | svgio/qa/cppunit/data/RectWithStyles.svg | 4 |
6 files changed, 192 insertions, 0 deletions
diff --git a/svgio/CppunitTest_svgio.mk b/svgio/CppunitTest_svgio.mk new file mode 100644 index 000000000000..7fe8370df781 --- /dev/null +++ b/svgio/CppunitTest_svgio.mk @@ -0,0 +1,68 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,svgio_import_test)) + +$(eval $(call gb_CppunitTest_set_include,svgio_import_test,\ + $$(INCLUDE) \ + -I$(SRCDIR)/svgio/inc \ +)) + +$(eval $(call gb_CppunitTest_use_external,svgio_import_test,boost_headers)) + +$(eval $(call gb_CppunitTest_use_api,svgio_import_test,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_library_objects,svgio_import_test,\ + svgio \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,svgio_import_test,\ + basegfx \ + drawinglayer \ + cppu \ + cppuhelper \ + comphelper \ + sal \ + sax \ + svt \ + test \ + unotest \ + tl \ + vcl \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,svgio_import_test,\ + svgio/qa/cppunit/SvgImportTest \ +)) + +$(eval $(call gb_CppunitTest_use_ure,svgio_import_test)) + +$(eval $(call gb_CppunitTest_use_components,svgio_import_test,\ + configmgr/source/configmgr \ + dtrans/util/mcnttype \ + framework/util/fwk \ + i18npool/util/i18npool \ + package/source/xstor/xstor \ + package/util/package2 \ + toolkit/util/tk \ + sfx2/util/sfx \ + ucb/source/core/ucb1 \ + ucb/source/ucp/file/ucpfile1 \ + unotools/util/utl \ + svgio/svgio \ + sax/source/expatwrap/expwrap \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,svgio_import_test)) + +# vim: set noet sw=4 ts=4: diff --git a/svgio/Module_svgio.mk b/svgio/Module_svgio.mk index 8b827fcb0fd6..29ef97d7087b 100644 --- a/svgio/Module_svgio.mk +++ b/svgio/Module_svgio.mk @@ -22,4 +22,8 @@ $(eval $(call gb_Module_add_targets,svgio,\ Library_svgio \ )) +$(eval $(call gb_Module_add_check_targets,svgio,\ + CppunitTest_svgio \ +)) + # vim: set noet ts=4 sw=4: diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx new file mode 100644 index 000000000000..4b42afd2647c --- /dev/null +++ b/svgio/qa/cppunit/SvgImportTest.cxx @@ -0,0 +1,99 @@ +/* -*- 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 <sal/config.h> +#include <test/bootstrapfixture.hxx> +#include <comphelper/processfactory.hxx> +#include <comphelper/seqstream.hxx> + +#include <com/sun/star/graphic/SvgTools.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/graphic/SvgTools.hpp> +#include <com/sun/star/graphic/Primitive2DTools.hpp> +#include <com/sun/star/graphic/XPrimitive2D.hpp> + +#include <boost/scoped_array.hpp> + +namespace +{ + +using namespace css::uno; +using namespace css::io; +using namespace css::graphic; + +class Test : public test::BootstrapFixture +{ + Reference<XComponentContext> mxContext; + + void testStyles(); + + Primitive2DSequence parseSvg(const char* aSource); + +public: + virtual void setUp() SAL_OVERRIDE; + virtual void tearDown() SAL_OVERRIDE; + + CPPUNIT_TEST_SUITE(Test); + CPPUNIT_TEST(testStyles); + CPPUNIT_TEST_SUITE_END(); +}; + +Primitive2DSequence Test::parseSvg(const char* aSource) +{ + const Reference<XSvgParser> xSvgParser = SvgTools::create(mxContext); + + OUString aUrl = getURLFromSrc(aSource); + OUString aPath = getPathFromSrc(aSource); + + SvFileStream aFileStream(aUrl, STREAM_READ); + sal_Size nSize = aFileStream.remainingSize(); + boost::scoped_array<sal_Int8> pBuffer(new sal_Int8[nSize + 1]); + aFileStream.Read(pBuffer.get(), nSize); + pBuffer[nSize] = 0; + + Sequence<sal_Int8> aData(pBuffer.get(), nSize + 1); + Reference<XInputStream> aInputStream(new comphelper::SequenceInputStream(aData)); + + return xSvgParser->getDecomposition(aInputStream, aPath); +} + +void Test::setUp() +{ + BootstrapFixture::setUp(); + + mxContext = Reference<XComponentContext>(comphelper::getProcessComponentContext()); +} + +void Test::tearDown() +{ + BootstrapFixture::tearDown(); +} + +void Test::testStyles() +{ + Primitive2DSequence maSequenceRect = parseSvg("/svgio/qa/cppunit/data/Rect.svg"); + CPPUNIT_ASSERT_EQUAL(1, maSequenceRect.getLength()); + + Primitive2DSequence maSequenceRectWithStyle = parseSvg("/svgio/qa/cppunit/data/RectWithStyles.svg"); + CPPUNIT_ASSERT_EQUAL(1, maSequenceRectWithStyle.getLength()); + + Primitive2DSequence maSequenceRectWithParentStyle = parseSvg("/svgio/qa/cppunit/data/RectWithParentStyles.svg"); + CPPUNIT_ASSERT_EQUAL(1, maSequenceRectWithParentStyle.getLength()); + + // TODO: Test if the 3 sequences are equal.. + //const Primitive2DReference xReference(maSequenceRect[0]); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(Test); + +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svgio/qa/cppunit/data/Rect.svg b/svgio/qa/cppunit/data/Rect.svg new file mode 100644 index 000000000000..7567cdfb5bf0 --- /dev/null +++ b/svgio/qa/cppunit/data/Rect.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <rect x="10" y="10" width="100" height="100" rx="10" ry="10" stroke="#ff0000" fill="#00cc00" stroke-width="3" /> +</svg> diff --git a/svgio/qa/cppunit/data/RectWithParentStyles.svg b/svgio/qa/cppunit/data/RectWithParentStyles.svg new file mode 100644 index 000000000000..a01ba3ff5bd7 --- /dev/null +++ b/svgio/qa/cppunit/data/RectWithParentStyles.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <style type="text/css" > + <![CDATA[ + svg + { + stroke: #ff0000; + fill: #00cc00; + } + ]]> + </style> + <rect x="10" y="10" width="100" height="100" rx="10" ry="10" style="stroke-width: 3;" /> +</svg> diff --git a/svgio/qa/cppunit/data/RectWithStyles.svg b/svgio/qa/cppunit/data/RectWithStyles.svg new file mode 100644 index 000000000000..b7068499befb --- /dev/null +++ b/svgio/qa/cppunit/data/RectWithStyles.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <rect x="10" y="10" width="100" height="100" rx="10" ry="10" style="stroke: #ff0000; fill: #00cc00; stroke-width: 3" /> +</svg> |