summaryrefslogtreecommitdiff
path: root/svgio
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.com>2014-04-16 09:51:27 +0200
committerTomaž Vajngerl <tomaz.vajngerl@collabora.com>2014-04-16 09:52:27 +0200
commit8c571e5f82a6d6e36bd47c7d2ab202f2f9b7cf86 (patch)
tree74e17222e98d94bb1f39e8febe462e8b943005e2 /svgio
parent3b7472b284131c09d91b69f26d5d26d54648f939 (diff)
svgio: introduce svg import tests
Change-Id: Id69f659a9e4b0332970e75b1d0a7d820c8b2c998
Diffstat (limited to 'svgio')
-rw-r--r--svgio/CppunitTest_svgio.mk68
-rw-r--r--svgio/Module_svgio.mk4
-rw-r--r--svgio/qa/cppunit/SvgImportTest.cxx99
-rw-r--r--svgio/qa/cppunit/data/Rect.svg4
-rw-r--r--svgio/qa/cppunit/data/RectWithParentStyles.svg13
-rw-r--r--svgio/qa/cppunit/data/RectWithStyles.svg4
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>