summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-27 23:28:16 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-27 23:28:16 +0200
commitbeccf477581b1f3e85100d43be81ea55d3b3f912 (patch)
treebd0a3675fae6bc771f42e94126e2029c7bbf8c78
parent52348aa791c6006d27c94146907c788b6318e816 (diff)
move xshape dumper into test
XShapeDumper can now be used by other parts of the code too. Please keep in mind that changing the dumper affects other parts too and might require a regneration of reference files. Change-Id: I540420a8bdf8afd8d43c5ea0bb0d82d7e0ecc44b
-rw-r--r--chart2/Library_chartview.mk1
-rw-r--r--chart2/source/view/main/ChartView.cxx116
-rw-r--r--sc/Module_sc.mk12
-rw-r--r--test/Library_test.mk1
-rw-r--r--test/Package_inc.mk1
-rw-r--r--test/inc/test/xshape_dumper.hxx57
-rw-r--r--test/source/xshape_dumper.cxx149
7 files changed, 212 insertions, 125 deletions
diff --git a/chart2/Library_chartview.mk b/chart2/Library_chartview.mk
index ab3952e1d7af..3977a779b41f 100644
--- a/chart2/Library_chartview.mk
+++ b/chart2/Library_chartview.mk
@@ -54,6 +54,7 @@ $(eval $(call gb_Library_use_libraries,chartview,\
svl \
svt \
svxcore \
+ test \
tl \
utl \
vcl \
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 9020d7bf5266..3f44b851d136 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -113,9 +113,7 @@
#include <rtl/strbuf.hxx>
#include <rtl/oustringostreaminserter.hxx>
-//libxml2 for dumping
-#include <libxml/xmlwriter.h>
-
+#include <test/xshape_dumper.hxx>
//.............................................................................
namespace chart
@@ -3026,102 +3024,6 @@ uno::Sequence< ::rtl::OUString > ChartView::getAvailableServiceNames() throw (un
return aServiceNames;
}
-namespace {
-
-#define DEBUG_DUMPER 0
-
-int writeCallback(void* pContext, const char* sBuffer, int nLen)
-{
- rtl::OStringBuffer* pBuffer = static_cast<rtl::OStringBuffer*>(pContext);
- pBuffer->append(sBuffer);
- return nLen;
-}
-
-int closeCallback(void* )
-{
- return 0;
-}
-
-void dumpPositionAsAttribute(const awt::Point& rPoint, xmlTextWriterPtr xmlWriter)
-{
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("positionX"), "%" SAL_PRIdINT32, rPoint.X);
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("positionY"), "%" SAL_PRIdINT32, rPoint.Y);
-}
-
-void dumpSizeAsAttribute(const awt::Size& rSize, xmlTextWriterPtr xmlWriter)
-{
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("sizeX"), "%" SAL_PRIdINT32, rSize.Width);
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("sizeY"), "%" SAL_PRIdINT32, rSize.Height);
-}
-
-void dumpShapeDescriptorAsAttribute( uno::Reference< drawing::XShapeDescriptor > xDescr, xmlTextWriterPtr xmlWriter )
-{
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("type"), "%s", rtl::OUStringToOString(xDescr->getShapeType(), RTL_TEXTENCODING_UTF8).getStr());
-}
-
-void dumpXShapes( uno::Reference< drawing::XShapes > xShapes, xmlTextWriterPtr xmlWriter );
-
-void dumpXShape( uno::Reference< drawing::XShape > xShape, xmlTextWriterPtr xmlWriter )
-{
- xmlTextWriterStartElement( xmlWriter, BAD_CAST( "XShape" ) );
-
- dumpPositionAsAttribute(xShape->getPosition(), xmlWriter);
- dumpSizeAsAttribute(xShape->getSize(), xmlWriter);
- uno::Reference< drawing::XShapeDescriptor > xDescr(xShape, uno::UNO_QUERY_THROW);
- dumpShapeDescriptorAsAttribute(xDescr, xmlWriter);
-
- uno::Reference< lang::XServiceInfo > xServiceInfo( xShape, uno::UNO_QUERY_THROW );
- uno::Sequence< rtl::OUString > aServiceNames = xServiceInfo->getSupportedServiceNames();
-
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY_THROW);
- uno::Any aAny = xPropSet->getPropertyValue("Name");
- rtl::OUString aName;
- if (aAny >>= aName)
- {
- if (!aName.isEmpty())
- xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("name"), "%s", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr());
- }
- if (xServiceInfo->supportsService("com.sun.star.drawing.Text"))
- {
- uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY_THROW);
- rtl::OUString aText = xText->getString();
- if(!aText.isEmpty())
- xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("text"), "%s", rtl::OUStringToOString(aText, RTL_TEXTENCODING_UTF8).getStr());
- }
- else if(xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"))
- {
- uno::Reference< drawing::XShapes > xShapes(xShape, uno::UNO_QUERY_THROW);
- dumpXShapes(xShapes, xmlWriter);
- }
-#if DEBUG_DUMPER
- sal_Int32 nServices = aServiceNames.getLength();
- for (sal_Int32 i = 0; i < nServices; ++i)
- {
- xmlTextWriterStartElement(xmlWriter, BAD_CAST( "ServiceName" ));
- xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST( "name" ), "%s", rtl::OUStringToOString(aServiceNames[i], RTL_TEXTENCODING_UTF8).getStr());
- xmlTextWriterEndElement( xmlWriter );
- }
-#endif
-
- xmlTextWriterEndElement( xmlWriter );
-}
-
-void dumpXShapes( uno::Reference< drawing::XShapes > xShapes, xmlTextWriterPtr xmlWriter )
-{
- xmlTextWriterStartElement( xmlWriter, BAD_CAST( "XShapes" ) );
- uno::Reference< container::XIndexAccess > xIA( xShapes, uno::UNO_QUERY_THROW);
- sal_Int32 nLength = xIA->getCount();
- for (sal_Int32 i = 0; i < nLength; ++i)
- {
- uno::Reference< drawing::XShape > xShape( xIA->getByIndex( i ), uno::UNO_QUERY_THROW );
- dumpXShape( xShape, xmlWriter );
- }
-
- xmlTextWriterEndElement( xmlWriter );
-}
-
-}
-
rtl::OUString ChartView::dump() throw (uno::RuntimeException)
{
impl_updateView();
@@ -3131,20 +3033,8 @@ rtl::OUString ChartView::dump() throw (uno::RuntimeException)
if (!xPageShapes.is())
return rtl::OUString();
- rtl::OStringBuffer aString;
- xmlOutputBufferPtr xmlOutBuffer = xmlOutputBufferCreateIO( writeCallback, closeCallback, &aString, NULL );
- xmlTextWriterPtr xmlWriter = xmlNewTextWriter( xmlOutBuffer );
- xmlTextWriterSetIndent( xmlWriter, 1 );
-
- xmlTextWriterStartDocument( xmlWriter, NULL, NULL, NULL );
-
- dumpXShapes( xPageShapes, xmlWriter );
-
- xmlTextWriterEndDocument( xmlWriter );
- xmlFreeTextWriter( xmlWriter );
-
-
- return OStringToOUString(aString.makeStringAndClear(), RTL_TEXTENCODING_UTF8);
+ XShapeDumper aDumper(xPageShapes);
+ return aDumper.dump();
}
//.............................................................................
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 18ab35875f60..c632de4b1af4 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -51,19 +51,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc,\
))
$(eval $(call gb_Module_add_subsequentcheck_targets,sc,\
- JunitTest_sc_complex \
- JunitTest_sc_unoapi \
CppunitTest_sc_chart_regression_test \
- CppunitTest_sc_cellrangeobj \
- $(if $(filter-out $(OS),IOS), \
- CppunitTest_sc_databaserangeobj) \
- CppunitTest_sc_datapilottableobj \
- CppunitTest_sc_datapilotfieldobj \
- CppunitTest_sc_macros_test \
- CppunitTest_sc_namedrangeobj \
- CppunitTest_sc_namedrangesobj \
- CppunitTest_sc_tablesheetobj \
- CppunitTest_sc_tablesheetsobj \
))
# vim: set noet sw=4 ts=4:
diff --git a/test/Library_test.mk b/test/Library_test.mk
index 8ca0289364e5..c4a9dc992fa7 100644
--- a/test/Library_test.mk
+++ b/test/Library_test.mk
@@ -68,6 +68,7 @@ $(eval $(call gb_Library_use_external,test,cppunit))
$(eval $(call gb_Library_add_exception_objects,test,\
test/source/bootstrapfixture \
test/source/diff/diff \
+ test/source/xshape_dumper \
))
# vim: set noet sw=4 ts=4:
diff --git a/test/Package_inc.mk b/test/Package_inc.mk
index aac4b3822577..8c2970e6847d 100644
--- a/test/Package_inc.mk
+++ b/test/Package_inc.mk
@@ -27,6 +27,7 @@
$(eval $(call gb_Package_Package,test_inc,$(SRCDIR)/test/inc))
$(eval $(call gb_Package_add_file,test_inc,inc/test/xmldiff.hxx,test/xmldiff.hxx))
+$(eval $(call gb_Package_add_file,test_inc,inc/test/xshape_dumper.hxx,test/xshape_dumper.hxx))
$(eval $(call gb_Package_add_file,test_inc,inc/test/bootstrapfixture.hxx,test/bootstrapfixture.hxx))
$(eval $(call gb_Package_add_file,test_inc,inc/test/testdllapi.hxx,test/testdllapi.hxx))
$(eval $(call gb_Package_add_file,test_inc,inc/test/unoapi_test.hxx,test/unoapi_test.hxx))
diff --git a/test/inc/test/xshape_dumper.hxx b/test/inc/test/xshape_dumper.hxx
new file mode 100644
index 000000000000..d4f1ba6ee857
--- /dev/null
+++ b/test/inc/test/xshape_dumper.hxx
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer)
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include <rtl/ustring.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <libxml/xmlwriter.h>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <test/testdllapi.hxx>
+
+class OOO_DLLPUBLIC_TEST XShapeDumper
+{
+public:
+ XShapeDumper(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xShapes ):
+ mxShapes(xShapes) {}
+
+ rtl::OUString dump();
+private:
+ void dumpPositionAsAttribute(const com::sun::star::awt::Point& rPointr);
+ void dumpSizeAsAttribute(const com::sun::star::awt::Size& rSize);
+ void dumpShapeDescriptorAsAttribute( com::sun::star::uno::Reference< com::sun::star::drawing::XShapeDescriptor > xDescr );
+ void dumpXShape( com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape );
+ void dumpXShapes( com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xShapes );
+
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes;
+ xmlTextWriterPtr mxmlWriter;
+
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/source/xshape_dumper.cxx b/test/source/xshape_dumper.cxx
new file mode 100644
index 000000000000..806fff7f449f
--- /dev/null
+++ b/test/source/xshape_dumper.cxx
@@ -0,0 +1,149 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer)
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "test/xshape_dumper.hxx"
+#include <rtl/strbuf.hxx>
+#include <rtl/oustringostreaminserter.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/text/XText.hpp>
+
+using namespace com::sun::star;
+
+namespace {
+
+#define DEBUG_DUMPER 0
+
+int writeCallback(void* pContext, const char* sBuffer, int nLen)
+{
+ rtl::OStringBuffer* pBuffer = static_cast<rtl::OStringBuffer*>(pContext);
+ pBuffer->append(sBuffer);
+ return nLen;
+}
+
+int closeCallback(void* )
+{
+ return 0;
+}
+
+}
+
+void XShapeDumper::dumpPositionAsAttribute(const awt::Point& rPoint)
+{
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("positionX"), "%" SAL_PRIdINT32, rPoint.X);
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("positionY"), "%" SAL_PRIdINT32, rPoint.Y);
+}
+
+void XShapeDumper::dumpSizeAsAttribute(const awt::Size& rSize)
+{
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("sizeX"), "%" SAL_PRIdINT32, rSize.Width);
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("sizeY"), "%" SAL_PRIdINT32, rSize.Height);
+}
+
+void XShapeDumper::dumpShapeDescriptorAsAttribute( uno::Reference< drawing::XShapeDescriptor > xDescr )
+{
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("type"), "%s", rtl::OUStringToOString(xDescr->getShapeType(), RTL_TEXTENCODING_UTF8).getStr());
+}
+
+void XShapeDumper::dumpXShape( uno::Reference< drawing::XShape > xShape )
+{
+ xmlTextWriterStartElement( mxmlWriter, BAD_CAST( "XShape" ) );
+
+ dumpPositionAsAttribute(xShape->getPosition());
+ dumpSizeAsAttribute(xShape->getSize());
+ uno::Reference< drawing::XShapeDescriptor > xDescr(xShape, uno::UNO_QUERY_THROW);
+ dumpShapeDescriptorAsAttribute(xDescr);
+
+ uno::Reference< lang::XServiceInfo > xServiceInfo( xShape, uno::UNO_QUERY_THROW );
+ uno::Sequence< rtl::OUString > aServiceNames = xServiceInfo->getSupportedServiceNames();
+
+ uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("Name");
+ rtl::OUString aName;
+ if (aAny >>= aName)
+ {
+ if (!aName.isEmpty())
+ xmlTextWriterWriteFormatAttribute( mxmlWriter, BAD_CAST("name"), "%s", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr());
+ }
+ if (xServiceInfo->supportsService("com.sun.star.drawing.Text"))
+ {
+ uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY_THROW);
+ rtl::OUString aText = xText->getString();
+ if(!aText.isEmpty())
+ xmlTextWriterWriteFormatAttribute( mxmlWriter, BAD_CAST("text"), "%s", rtl::OUStringToOString(aText, RTL_TEXTENCODING_UTF8).getStr());
+ }
+ else if(xServiceInfo->supportsService("com.sun.star.drawing.GroupShape"))
+ {
+ uno::Reference< drawing::XShapes > xShapes(xShape, uno::UNO_QUERY_THROW);
+ dumpXShapes(xShapes);
+ }
+#if DEBUG_DUMPER
+ sal_Int32 nServices = aServiceNames.getLength();
+ for (sal_Int32 i = 0; i < nServices; ++i)
+ {
+ xmlTextWriterStartElement(mxmlWriter, BAD_CAST( "ServiceName" ));
+ xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST( "name" ), "%s", rtl::OUStringToOString(aServiceNames[i], RTL_TEXTENCODING_UTF8).getStr());
+ xmlTextWriterEndElement( mxmlWriter );
+ }
+#endif
+
+ xmlTextWriterEndElement( mxmlWriter );
+}
+
+void XShapeDumper::dumpXShapes( uno::Reference< drawing::XShapes > xShapes )
+{
+ xmlTextWriterStartElement( mxmlWriter, BAD_CAST( "XShapes" ) );
+ uno::Reference< container::XIndexAccess > xIA( xShapes, uno::UNO_QUERY_THROW);
+ sal_Int32 nLength = xIA->getCount();
+ for (sal_Int32 i = 0; i < nLength; ++i)
+ {
+ uno::Reference< drawing::XShape > xShape( xIA->getByIndex( i ), uno::UNO_QUERY_THROW );
+ dumpXShape( xShape );
+ }
+
+ xmlTextWriterEndElement( mxmlWriter );
+}
+
+rtl::OUString XShapeDumper::dump()
+{
+ rtl::OStringBuffer aString;
+ xmlOutputBufferPtr xmlOutBuffer = xmlOutputBufferCreateIO( writeCallback, closeCallback, &aString, NULL );
+ mxmlWriter = xmlNewTextWriter( xmlOutBuffer );
+ xmlTextWriterSetIndent( mxmlWriter, 1 );
+
+ xmlTextWriterStartDocument( mxmlWriter, NULL, NULL, NULL );
+
+ dumpXShapes( mxShapes );
+
+ xmlTextWriterEndDocument( mxmlWriter );
+ xmlFreeTextWriter( mxmlWriter );
+
+ return OStringToOUString(aString.makeStringAndClear(), RTL_TEXTENCODING_UTF8);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */