fix baseline build (old cairo) - 'cairo_rectangle_int_t' does not name a type
[LibreOffice.git] / test / source / sheet / xsheetannotations.cxx
blobd6e521f7bef1329d8c0d968bd2864a139b8cec69
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
10 #include <test/sheet/xsheetannotations.hxx>
12 #include <com/sun/star/table/CellAddress.hpp>
13 #include <com/sun/star/container/XIndexAccess.hpp>
14 #include <com/sun/star/sheet/XSheetAnnotation.hpp>
15 #include <com/sun/star/text/XTextRange.hpp>
17 #include "cppunit/extensions/HelperMacros.h"
18 #include <rtl/ustring.hxx>
20 using namespace css;
21 using namespace css::uno;
23 namespace apitest {
25 void XSheetAnnotations::testCount()
27 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW);
29 // count on sheet 1 before inserting
30 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
31 sal_Int32 nBefore = xAnnotationsIndex->getCount();
33 // get Sheet 2 annotations
34 uno::Reference< sheet::XSheetAnnotations > xSheet2Annotations( getAnnotations(1), UNO_QUERY_THROW);
36 // insert a note on sheet 2
37 table::CellAddress xTargetCellAddress (1,0,0);
38 xSheet2Annotations->insertNew(xTargetCellAddress, "an inserted annotation on sheet 2");
40 // count again on sheet 1
41 sal_Int32 nAfter = xAnnotationsIndex->getCount();
43 CPPUNIT_ASSERT_EQUAL_MESSAGE( "Annotations count should not change on sheet 1", nBefore, nAfter);
46 void XSheetAnnotations::testInsertNew()
48 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW);
50 // count before inserting
51 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
52 sal_Int32 nBefore = xAnnotationsIndex->getCount();
54 CPPUNIT_ASSERT_EQUAL_MESSAGE(
55 "There should already be one note", sal_Int32(1), nBefore );
57 // insert the annotation
58 table::CellAddress xTargetCellAddress (0,3,4);
59 aSheetAnnotations->insertNew(xTargetCellAddress, "an inserted annotation");
61 // count after inserting
62 //uno::Reference< container::XIndexAccess > xAnnotationsIndexAfter (aSheetAnnotations, UNO_QUERY_THROW);
63 sal_Int32 nAfter = xAnnotationsIndex->getCount();
65 CPPUNIT_ASSERT_EQUAL_MESSAGE(
66 "Annotations index not updated", nBefore + 1, nAfter);
68 // is the position ok ?
69 uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
70 table::CellAddress xResultCellAddress = aLastSheetAnnotation->getPosition();
72 CPPUNIT_ASSERT_EQUAL_MESSAGE(
73 "Insert Annotation - Wrong SHEET reference position",
74 xTargetCellAddress.Sheet, xResultCellAddress.Sheet);
75 CPPUNIT_ASSERT_EQUAL_MESSAGE(
76 "Insert Annotation - Wrong COLUMN reference position",
77 xTargetCellAddress.Column, xResultCellAddress.Column);
78 CPPUNIT_ASSERT_EQUAL_MESSAGE(
79 "Insert Annotation - Wrong ROW reference position",
80 xTargetCellAddress.Row, xResultCellAddress.Row);
82 // is the string ok ?
83 uno::Reference< text::XTextRange > aTextSheetAnnotation(aLastSheetAnnotation, UNO_QUERY_THROW);
84 OUString aString = aTextSheetAnnotation->getString();
86 CPPUNIT_ASSERT_EQUAL_MESSAGE(
87 "Insert Annotation - Wrong string", OUString("an inserted annotation"),
88 aString);
92 void XSheetAnnotations::testRemoveByIndex()
94 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW);
96 // insert some annotations
97 table::CellAddress xTargetCellAddress (0,4,5);
98 aSheetAnnotations->insertNew(xTargetCellAddress, "an inserted annotation 1");
99 table::CellAddress xToBeRemovedCellAddress (0,5,6);
100 aSheetAnnotations->insertNew(xToBeRemovedCellAddress, "an inserted annotation 2");
101 table::CellAddress xOtherCellAddress (0,7,8);
102 aSheetAnnotations->insertNew(xOtherCellAddress, "an inserted annotation 3");
104 // count before removing
105 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
106 sal_Int32 nBefore = xAnnotationsIndex->getCount();
108 // remove the xToBeRemovedCellAddress
109 aSheetAnnotations->removeByIndex(nBefore-2);
111 // count after removing
112 //uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
113 sal_Int32 nAfter = xAnnotationsIndex->getCount();
115 // the last position should be xOtherCellAddress
116 uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
117 table::CellAddress xResultCellAddress = aLastSheetAnnotation->getPosition();
119 CPPUNIT_ASSERT_EQUAL_MESSAGE(
120 "Remove Annotation - Wrong SHEET reference position",
121 xOtherCellAddress.Sheet, xResultCellAddress.Sheet);
122 CPPUNIT_ASSERT_EQUAL_MESSAGE(
123 "Remove Annotation - Wrong COLUMN reference position",
124 xOtherCellAddress.Column, xResultCellAddress.Column);
125 CPPUNIT_ASSERT_EQUAL_MESSAGE(
126 "Remove Annotation - Wrong ROW reference position",
127 xOtherCellAddress.Row, xResultCellAddress.Row);
129 // is the string ok ?
130 uno::Reference< text::XTextRange > aLastTextSheetAnnotation(aLastSheetAnnotation, UNO_QUERY_THROW);
131 OUString aLastString = aLastTextSheetAnnotation->getString();
133 CPPUNIT_ASSERT_EQUAL_MESSAGE(
134 "Remove Annotation - Wrong string",
135 OUString("an inserted annotation 3"), aLastString);
137 // the previous should be xTargetCellAddress
138 uno::Reference< sheet::XSheetAnnotation > aPreviousSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-2), UNO_QUERY_THROW);
139 table::CellAddress xPreviousCellAddress = aPreviousSheetAnnotation->getPosition();
141 CPPUNIT_ASSERT_EQUAL_MESSAGE(
142 "Remove Annotation - Wrong SHEET reference position",
143 xTargetCellAddress.Sheet, xPreviousCellAddress.Sheet);
144 CPPUNIT_ASSERT_EQUAL_MESSAGE(
145 "Remove Annotation - Wrong COLUMN reference position",
146 xTargetCellAddress.Column, xPreviousCellAddress.Column);
147 CPPUNIT_ASSERT_EQUAL_MESSAGE(
148 "Remove Annotation - Wrong ROW reference position",
149 xTargetCellAddress.Row, xPreviousCellAddress.Row);
151 // is the string ok ?
152 uno::Reference< text::XTextRange > aPreviousTextSheetAnnotation(aPreviousSheetAnnotation, UNO_QUERY_THROW);
153 OUString aPreviousString = aPreviousTextSheetAnnotation->getString();
155 CPPUNIT_ASSERT_EQUAL_MESSAGE(
156 "Remove Annotation - Wrong string",
157 OUString("an inserted annotation 1"), aPreviousString);
160 void XSheetAnnotations::testGetByIndex()
163 // testing #fdo80551 - getByIndex not on the first sheet
165 // insert annotations in first sheet
166 uno::Reference< sheet::XSheetAnnotations > aSheet0Annotations (init(), UNO_QUERY_THROW);
167 table::CellAddress xTargetCellAddress0 (0,0,1);
168 aSheet0Annotations->insertNew(xTargetCellAddress0, "an inserted annotation 1 on sheet 1");
169 table::CellAddress xSecondTargetCellAddress0 (0,0,2);
170 aSheet0Annotations->insertNew(xSecondTargetCellAddress0, "an inserted annotation 2 on sheet 1");
171 table::CellAddress xThirdCellAddress0 (0,0,3);
172 aSheet0Annotations->insertNew(xThirdCellAddress0, "an inserted annotation 3 on sheet 1");
174 // insert annotations in third sheet
175 uno::Reference< sheet::XSheetAnnotations > aSheet2Annotations (getAnnotations(2), UNO_QUERY_THROW);
176 table::CellAddress xTargetCellAddress2 (2,4,5);
177 aSheet2Annotations->insertNew(xTargetCellAddress2, "an inserted annotation 1 on sheet 3");
178 table::CellAddress xSecondTargetCellAddress2 (2,5,6);
179 aSheet2Annotations->insertNew(xSecondTargetCellAddress2, "an inserted annotation 2 on sheet 3");
180 table::CellAddress xThirdCellAddress2 (2,7,8);
181 aSheet2Annotations->insertNew(xThirdCellAddress2, "an inserted annotation 3 on sheet 3");
183 // get second annotation for second sheet
184 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (getAnnotations(2), UNO_QUERY_THROW);
185 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
186 uno::Reference< sheet::XSheetAnnotation > aAnnotation (xAnnotationsIndex->getByIndex(1), UNO_QUERY_THROW);
188 table::CellAddress xToBeAnalyzedCellAddress = aAnnotation->getPosition();
190 // is the CellAddress ok ?
191 CPPUNIT_ASSERT_EQUAL_MESSAGE(
192 "GetByIndex Annotation - Wrong SHEET reference position",
193 xSecondTargetCellAddress2.Sheet, xToBeAnalyzedCellAddress.Sheet);
194 CPPUNIT_ASSERT_EQUAL_MESSAGE(
195 "GetByIndex Annotation - Wrong COLUMN reference position",
196 xSecondTargetCellAddress2.Column, xToBeAnalyzedCellAddress.Column);
197 CPPUNIT_ASSERT_EQUAL_MESSAGE(
198 "GetByIndex Annotation - Wrong ROW reference position",
199 xSecondTargetCellAddress2.Row, xToBeAnalyzedCellAddress.Row);
201 // is the string ok ?
202 uno::Reference< text::XTextRange > aTextSheetAnnotation(aAnnotation, UNO_QUERY_THROW);
203 OUString aString = aTextSheetAnnotation->getString();
205 CPPUNIT_ASSERT_EQUAL_MESSAGE(
206 "GetByIndex Annotation - Wrong string",
207 OUString("an inserted annotation 2 on sheet 3"), aString);
212 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */