Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/1738
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/38/1738/1
sc test for XSheetAnnotations
Change-Id: Ie5ceb7f8d828eb9c1f4c92996ebb02c8a83f4cac
---
A sc/CppunitTest_sc_annotationsobj.mk
M sc/Module_sc.mk
A sc/qa/extras/scannotationsobj.cxx
M test/Library_subsequenttest.mk
M test/Package_inc.mk
A test/inc/test/sheet/xsheetannotations.hxx
A test/source/sheet/xsheetannotations.cxx
7 files changed, 437 insertions(+), 0 deletions(-)
diff --git a/sc/CppunitTest_sc_annotationsobj.mk b/sc/CppunitTest_sc_annotationsobj.mk
new file mode 100644
index 0000000..bfd82bc
--- /dev/null
+++ b/sc/CppunitTest_sc_annotationsobj.mk
@@ -0,0 +1,129 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+# 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.
+#
+# The Initial Developer of the Original Code is
+# Copyright (C) 2013 Laurent Godard <lgodard.libre@laposte.net> (initial developer)
+# Portions created by the Initial Developer are Copyright (C) 2011 the
+# Initial Developer. All Rights Reserved.
+#
+# Major Contributor(s):
+#
+# 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.
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sc_annotationsobj))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sc_annotationsobj, \
+ sc/qa/extras/scannotationsobj \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sc_annotationsobj, \
+ avmedia \
+ basegfx \
+ comphelper \
+ cppu \
+ cppuhelper \
+ drawinglayer \
+ editeng \
+ fileacc \
+ for \
+ forui \
+ i18nisolang1 \
+ msfilter \
+ oox \
+ sal \
+ salhelper \
+ sax \
+ sb \
+ sc \
+ sfx \
+ sot \
+ svl \
+ svt \
+ svx \
+ svxcore \
+ test \
+ tl \
+ tk \
+ subsequenttest \
+ ucbhelper \
+ unotest \
+ utl \
+ vbahelper \
+ vcl \
+ xo \
+ $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sc_annotationsobj,\
+ -I$(SRCDIR)/sc/source/ui/inc \
+ -I$(SRCDIR)/sc/inc \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sc_annotationsobj,\
+ offapi \
+ udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sc_annotationsobj))
+
+$(eval $(call gb_CppunitTest_use_components,sc_annotationsobj,\
+ basic/util/sb \
+ comphelper/util/comphelp \
+ configmgr/source/configmgr \
+ dbaccess/util/dba \
+ fileaccess/source/fileacc \
+ filter/source/config/cache/filterconfig1 \
+ forms/util/frm \
+ framework/util/fwk \
+ i18npool/util/i18npool \
+ linguistic/source/lng \
+ oox/util/oox \
+ package/source/xstor/xstor \
+ package/util/package2 \
+ sax/source/expatwrap/expwrap \
+ sax/source/fastparser/fastsax \
+ sc/util/sc \
+ sc/util/scd \
+ sc/util/scfilt \
+ $(if $(filter TRUE,$(DISABLE_SCRIPTING)),, \
+ sc/util/vbaobj) \
+ scripting/source/basprov/basprov \
+ scripting/util/scriptframe \
+ sfx2/util/sfx \
+ sot/util/sot \
+ svl/source/fsstor/fsstorage \
+ toolkit/util/tk \
+ ucb/source/core/ucb1 \
+ ucb/source/ucp/file/ucpfile1 \
+ ucb/source/ucp/tdoc/ucptdoc1 \
+ unotools/util/utl \
+ unoxml/source/rdf/unordf \
+ unoxml/source/service/unoxml \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,sc_annotationsobj))
+
+$(eval $(call gb_CppunitTest_use_filter_configuration,sc_annotationsobj))
+
+$(eval $(call gb_CppunitTest_use_unittest_configuration,sc_annotationsobj))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index 2b2aa6f..3039518 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -62,6 +62,7 @@
JunitTest_sc_complex \
JunitTest_sc_unoapi \
CppunitTest_sc_annotationobj \
+ CppunitTest_sc_annotationsobj \
CppunitTest_sc_cellrangeobj \
$(if $(filter-out $(OS),IOS), \
CppunitTest_sc_databaserangeobj) \
diff --git a/sc/qa/extras/scannotationsobj.cxx b/sc/qa/extras/scannotationsobj.cxx
new file mode 100644
index 0000000..ac6e841
--- /dev/null
+++ b/sc/qa/extras/scannotationsobj.cxx
@@ -0,0 +1,117 @@
+/* -*- 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) 2013 Laurent Godard <lgodard.libre@laposte.net> (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/unoapi_test.hxx>
+#include <test/sheet/xsheetannotations.hxx>
+
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+
+#include <com/sun/star/sheet/XSheetAnnotationsSupplier.hpp>
+
+namespace sc_apitest {
+
+#define NUMBER_OF_TESTS 2
+
+class ScAnnontationsObj : public UnoApiTest, apitest::XSheetAnnotations
+{
+public:
+ ScAnnontationsObj();
+
+ virtual void setUp();
+ virtual void tearDown();
+
+ virtual uno::Reference< uno::XInterface > init();
+ virtual uno::Reference< sheet::XSheetAnnotations> getAnnotations();
+
+ CPPUNIT_TEST_SUITE(ScAnnontationsObj);
+ CPPUNIT_TEST(testInsertNew);
+ CPPUNIT_TEST(testRemoveByIndex);
+ CPPUNIT_TEST_SUITE_END();
+private:
+
+ static sal_Int32 nTest;
+ static uno::Reference< lang::XComponent > mxComponent;
+};
+
+sal_Int32 ScAnnontationsObj::nTest = 0;
+uno::Reference< lang::XComponent > ScAnnontationsObj::mxComponent;
+
+ScAnnontationsObj::ScAnnontationsObj()
+{
+}
+
+uno::Reference< sheet::XSheetAnnotations> ScAnnontationsObj::getAnnotations()
+{
+ // get the sheet
+ uno::Reference< sheet::XSpreadsheetDocument > xDoc(mxComponent, UNO_QUERY_THROW);
+ uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), UNO_QUERY_THROW);
+ uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), UNO_QUERY_THROW);
+
+ // get the annotations collection
+ uno::Reference< sheet::XSheetAnnotationsSupplier > xAnnotationSupplier(xSheet,
UNO_QUERY_THROW);
+ uno::Reference< sheet::XSheetAnnotations > xSheetAnnotations(
xAnnotationSupplier->getAnnotations(), UNO_QUERY_THROW);
+
+ CPPUNIT_ASSERT(xSheetAnnotations.is());
+
+ return xSheetAnnotations;
+}
+
+uno::Reference< uno::XInterface > ScAnnontationsObj::init()
+{
+ // get the test file
+ rtl::OUString aFileURL;
+ createFileURL(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ScAnnotationObj.ods")), aFileURL);
+ if(!mxComponent.is())
+ mxComponent = loadFromDesktop(aFileURL);
+ CPPUNIT_ASSERT_MESSAGE("Component not loaded",mxComponent.is());
+
+ return getAnnotations();
+}
+
+void ScAnnontationsObj::setUp()
+{
+ nTest++;
+ UnoApiTest::setUp();
+}
+
+void ScAnnontationsObj::tearDown()
+{
+ if (nTest == NUMBER_OF_TESTS)
+ closeDocument(mxComponent);
+
+ UnoApiTest::tearDown();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScAnnontationsObj);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/Library_subsequenttest.mk b/test/Library_subsequenttest.mk
index 77cc573..1546fcb 100644
--- a/test/Library_subsequenttest.mk
+++ b/test/Library_subsequenttest.mk
@@ -81,6 +81,7 @@
test/source/sheet/xspreadsheetdocument \
test/source/sheet/xspreadsheets2 \
test/source/sheet/xsheetannotation \
+ test/source/sheet/xsheetannotations \
test/source/text/xtext \
test/source/text/xtextfield \
test/source/text/xtextcontent \
diff --git a/test/Package_inc.mk b/test/Package_inc.mk
index 7e236a7..2abda25 100644
--- a/test/Package_inc.mk
+++ b/test/Package_inc.mk
@@ -53,6 +53,7 @@
$(eval $(call
gb_Package_add_file,test_inc,inc/test/sheet/xspreadsheetdocument.hxx,test/sheet/xspreadsheetdocument.hxx))
$(eval $(call
gb_Package_add_file,test_inc,inc/test/sheet/xspreadsheets2.hxx,test/sheet/xspreadsheets2.hxx))
$(eval $(call
gb_Package_add_file,test_inc,inc/test/sheet/xsheetannotation.hxx,test/sheet/xsheetannotation.hxx))
+$(eval $(call
gb_Package_add_file,test_inc,inc/test/sheet/xsheetannotations.hxx,test/sheet/xsheetannotations.hxx))
$(eval $(call gb_Package_add_file,test_inc,inc/test/text/xtext.hxx,test/text/xtext.hxx))
$(eval $(call gb_Package_add_file,test_inc,inc/test/text/xtextfield.hxx,test/text/xtextfield.hxx))
$(eval $(call
gb_Package_add_file,test_inc,inc/test/text/xtextcontent.hxx,test/text/xtextcontent.hxx))
diff --git a/test/inc/test/sheet/xsheetannotations.hxx b/test/inc/test/sheet/xsheetannotations.hxx
new file mode 100644
index 0000000..9c1c211
--- /dev/null
+++ b/test/inc/test/sheet/xsheetannotations.hxx
@@ -0,0 +1,56 @@
+/* -*- 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) 2013 Laurent Godard lgodard.libre@laposte.net (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/sheet/XSheetAnnotations.hpp>
+#include <test/testdllapi.hxx>
+
+using namespace com::sun::star;
+
+namespace apitest {
+
+class OOO_DLLPUBLIC_TEST XSheetAnnotations
+{
+public:
+ virtual uno::Reference< uno::XInterface > init() = 0;
+
+ // XSheetAnnotations
+ void testInsertNew();
+ void testRemoveByIndex();
+
+
+protected:
+ ~XSheetAnnotations() {}
+
+ virtual uno::Reference< sheet::XSheetAnnotations> getAnnotations() = 0;
+
+};
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/source/sheet/xsheetannotations.cxx b/test/source/sheet/xsheetannotations.cxx
new file mode 100644
index 0000000..7f2d638
--- /dev/null
+++ b/test/source/sheet/xsheetannotations.cxx
@@ -0,0 +1,132 @@
+/* -*- 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) 2011 Laurent Godard lgodard.libre@laposte.net (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/sheet/xsheetannotations.hxx>
+
+#include <com/sun/star/table/CellAddress.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/sheet/XSheetAnnotation.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+
+#include "cppunit/extensions/HelperMacros.h"
+#include <rtl/ustring.hxx>
+
+using namespace com::sun::star::uno;
+
+namespace apitest {
+
+void XSheetAnnotations::testInsertNew()
+{
+ uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW);
+
+ // count before inserting
+ uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations,
UNO_QUERY_THROW);
+ sal_Int32 nBefore = xAnnotationsIndex->getCount();
+
+ // insert the annotation
+ table::CellAddress xTargetCellAddress (0,3,4);
+ aSheetAnnotations->insertNew(xTargetCellAddress, "an inserted annotation");
+
+ // count after inserting
+ //uno::Reference< container::XIndexAccess > xAnnotationsIndexAfter (aSheetAnnotations,
UNO_QUERY_THROW);
+ sal_Int32 nAfter = xAnnotationsIndex->getCount();
+
+ CPPUNIT_ASSERT_MESSAGE("Annotations index not updated", nAfter == nBefore + 1);
+
+ // is the position ok ?
+ uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation
(xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
+ table::CellAddress xResultCellAddress = aLastSheetAnnotation->getPosition();
+
+ CPPUNIT_ASSERT_MESSAGE("Insert Annotation - Wrong SHEET reference position",
xResultCellAddress.Sheet == xTargetCellAddress.Sheet);
+ CPPUNIT_ASSERT_MESSAGE("Insert Annotation - Wrong COLUMN reference position",
xResultCellAddress.Column == xTargetCellAddress.Column);
+ CPPUNIT_ASSERT_MESSAGE("Insert Annotation - Wrong ROW reference position",
xResultCellAddress.Row == xTargetCellAddress.Row);
+
+ // is the string ok ?
+ uno::Reference< text::XTextRange > aTextSheetAnnotation(aLastSheetAnnotation, UNO_QUERY_THROW);
+ rtl::OUString aString = aTextSheetAnnotation->getString();
+
+ CPPUNIT_ASSERT_MESSAGE("Insert Annotation - Wrong string", aString == "an inserted
annotation");
+
+}
+
+void XSheetAnnotations::testRemoveByIndex()
+{
+ uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW);
+
+ // insert some annotations
+ table::CellAddress xTargetCellAddress (0,4,5);
+ aSheetAnnotations->insertNew(xTargetCellAddress, "an inserted annotation 1");
+ table::CellAddress xToBeRemovedCellAddress (0,5,6);
+ aSheetAnnotations->insertNew(xToBeRemovedCellAddress, "an inserted annotation 2");
+ table::CellAddress xOtherCellAddress (0,7,8);
+ aSheetAnnotations->insertNew(xOtherCellAddress, "an inserted annotation 3");
+
+ // count before removing
+ uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations,
UNO_QUERY_THROW);
+ sal_Int32 nBefore = xAnnotationsIndex->getCount();
+
+ // remove the xToBeRemovedCellAddress
+ aSheetAnnotations->removeByIndex(nBefore-2);
+
+ // count after removing
+ //uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations,
UNO_QUERY_THROW);
+ sal_Int32 nAfter = xAnnotationsIndex->getCount();
+
+ // the last position should be xOtherCellAddress
+ uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation
(xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
+ table::CellAddress xResultCellAddress = aLastSheetAnnotation->getPosition();
+
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong SHEET reference position",
xResultCellAddress.Sheet == xOtherCellAddress.Sheet);
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong COLUMN reference position",
xResultCellAddress.Column == xOtherCellAddress.Column);
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong ROW reference position",
xResultCellAddress.Row == xOtherCellAddress.Row);
+
+ // is the string ok ?
+ uno::Reference< text::XTextRange > aLastTextSheetAnnotation(aLastSheetAnnotation,
UNO_QUERY_THROW);
+ rtl::OUString aLastString = aLastTextSheetAnnotation->getString();
+
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong string", aLastString == "an inserted
annotation 3");
+
+ // the previous should be xTargetCellAddress
+ uno::Reference< sheet::XSheetAnnotation > aPreviousSheetAnnotation
(xAnnotationsIndex->getByIndex(nAfter-2), UNO_QUERY_THROW);
+ table::CellAddress xPreviousCellAddress = aPreviousSheetAnnotation->getPosition();
+
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong SHEET reference position",
xPreviousCellAddress.Sheet == xTargetCellAddress.Sheet);
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong COLUMN reference position",
xPreviousCellAddress.Column == xTargetCellAddress.Column);
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong ROW reference position",
xPreviousCellAddress.Row == xTargetCellAddress.Row);
+
+ // is the string ok ?
+ uno::Reference< text::XTextRange > aPreviousTextSheetAnnotation(aPreviousSheetAnnotation,
UNO_QUERY_THROW);
+ rtl::OUString aPreviousString = aPreviousTextSheetAnnotation->getString();
+
+ CPPUNIT_ASSERT_MESSAGE("Remove Annotation - Wrong string", aPreviousString == "an inserted
annotation 1");
+
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
--
To view, visit https://gerrit.libreoffice.org/1738
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie5ceb7f8d828eb9c1f4c92996ebb02c8a83f4cac
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Laurent Godard <lgodard.libre@laposte.net>
Context
- [PATCH] sc test for XSheetAnnotations · Laurent Godard (via Code Review)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.