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/TestAssert.h>
18#include <rtl/ustring.hxx>
21using namespace css::uno;
27 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (
init(), UNO_QUERY_THROW);
30 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
31 sal_Int32 nBefore = xAnnotationsIndex->getCount();
34 uno::Reference< sheet::XSheetAnnotations > xSheet2Annotations(
getAnnotations(1), UNO_SET_THROW);
37 table::CellAddress aTargetCellAddress (1,0,0);
38 xSheet2Annotations->insertNew(aTargetCellAddress,
"an inserted annotation on sheet 2");
41 sal_Int32 nAfter = xAnnotationsIndex->getCount();
43 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Annotations count should not change on sheet 1", nBefore, nAfter);
48 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (
init(), UNO_QUERY_THROW);
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 );
58 table::CellAddress aTargetCellAddress (0,3,4);
59 aSheetAnnotations->insertNew(aTargetCellAddress,
"an inserted annotation");
63 sal_Int32 nAfter = xAnnotationsIndex->getCount();
65 CPPUNIT_ASSERT_EQUAL_MESSAGE(
66 "Annotations index not updated", nBefore + 1, nAfter);
69 uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
70 table::CellAddress aResultCellAddress = aLastSheetAnnotation->getPosition();
72 CPPUNIT_ASSERT_EQUAL_MESSAGE(
73 "Insert Annotation - Wrong SHEET reference position",
74 aTargetCellAddress.Sheet, aResultCellAddress.Sheet);
75 CPPUNIT_ASSERT_EQUAL_MESSAGE(
76 "Insert Annotation - Wrong COLUMN reference position",
77 aTargetCellAddress.Column, aResultCellAddress.Column);
78 CPPUNIT_ASSERT_EQUAL_MESSAGE(
79 "Insert Annotation - Wrong ROW reference position",
80 aTargetCellAddress.Row, aResultCellAddress.Row);
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"),
94 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (
init(), UNO_QUERY_THROW);
97 table::CellAddress aTargetCellAddress (0,4,5);
98 aSheetAnnotations->insertNew(aTargetCellAddress,
"an inserted annotation 1");
99 table::CellAddress aToBeRemovedCellAddress (0,5,6);
100 aSheetAnnotations->insertNew(aToBeRemovedCellAddress,
"an inserted annotation 2");
101 table::CellAddress aOtherCellAddress (0,7,8);
102 aSheetAnnotations->insertNew(aOtherCellAddress,
"an inserted annotation 3");
105 uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW);
106 sal_Int32 nBefore = xAnnotationsIndex->getCount();
109 aSheetAnnotations->removeByIndex(nBefore-2);
113 sal_Int32 nAfter = xAnnotationsIndex->getCount();
116 uno::Reference< sheet::XSheetAnnotation > aLastSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-1), UNO_QUERY_THROW);
117 table::CellAddress aResultCellAddress = aLastSheetAnnotation->getPosition();
119 CPPUNIT_ASSERT_EQUAL_MESSAGE(
120 "Remove Annotation - Wrong SHEET reference position",
121 aOtherCellAddress.Sheet, aResultCellAddress.Sheet);
122 CPPUNIT_ASSERT_EQUAL_MESSAGE(
123 "Remove Annotation - Wrong COLUMN reference position",
124 aOtherCellAddress.Column, aResultCellAddress.Column);
125 CPPUNIT_ASSERT_EQUAL_MESSAGE(
126 "Remove Annotation - Wrong ROW reference position",
127 aOtherCellAddress.Row, aResultCellAddress.Row);
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);
138 uno::Reference< sheet::XSheetAnnotation > aPreviousSheetAnnotation (xAnnotationsIndex->getByIndex(nAfter-2), UNO_QUERY_THROW);
139 table::CellAddress aPreviousCellAddress = aPreviousSheetAnnotation->getPosition();
141 CPPUNIT_ASSERT_EQUAL_MESSAGE(
142 "Remove Annotation - Wrong SHEET reference position",
143 aTargetCellAddress.Sheet, aPreviousCellAddress.Sheet);
144 CPPUNIT_ASSERT_EQUAL_MESSAGE(
145 "Remove Annotation - Wrong COLUMN reference position",
146 aTargetCellAddress.Column, aPreviousCellAddress.Column);
147 CPPUNIT_ASSERT_EQUAL_MESSAGE(
148 "Remove Annotation - Wrong ROW reference position",
149 aTargetCellAddress.Row, aPreviousCellAddress.Row);
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);
166 uno::Reference< sheet::XSheetAnnotations > aSheet0Annotations (
init(), UNO_QUERY_THROW);
167 table::CellAddress aTargetCellAddress0 (0,0,1);
168 aSheet0Annotations->insertNew(aTargetCellAddress0,
"an inserted annotation 1 on sheet 1");
169 table::CellAddress aSecondTargetCellAddress0 (0,0,2);
170 aSheet0Annotations->insertNew(aSecondTargetCellAddress0,
"an inserted annotation 2 on sheet 1");
171 table::CellAddress aThirdCellAddress0 (0,0,3);
172 aSheet0Annotations->insertNew(aThirdCellAddress0,
"an inserted annotation 3 on sheet 1");
175 uno::Reference< sheet::XSheetAnnotations > aSheet2Annotations (
getAnnotations(2), UNO_SET_THROW);
176 table::CellAddress aTargetCellAddress2 (2,4,5);
177 aSheet2Annotations->insertNew(aTargetCellAddress2,
"an inserted annotation 1 on sheet 3");
178 table::CellAddress aSecondTargetCellAddress2 (2,5,6);
179 aSheet2Annotations->insertNew(aSecondTargetCellAddress2,
"an inserted annotation 2 on sheet 3");
180 table::CellAddress aThirdCellAddress2 (2,7,8);
181 aSheet2Annotations->insertNew(aThirdCellAddress2,
"an inserted annotation 3 on sheet 3");
184 uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (
getAnnotations(2), UNO_SET_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 aToBeAnalyzedCellAddress = aAnnotation->getPosition();
191 CPPUNIT_ASSERT_EQUAL_MESSAGE(
192 "GetByIndex Annotation - Wrong SHEET reference position",
193 aSecondTargetCellAddress2.Sheet, aToBeAnalyzedCellAddress.Sheet);
194 CPPUNIT_ASSERT_EQUAL_MESSAGE(
195 "GetByIndex Annotation - Wrong COLUMN reference position",
196 aSecondTargetCellAddress2.Column, aToBeAnalyzedCellAddress.Column);
197 CPPUNIT_ASSERT_EQUAL_MESSAGE(
198 "GetByIndex Annotation - Wrong ROW reference position",
199 aSecondTargetCellAddress2.Row, aToBeAnalyzedCellAddress.Row);
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);
virtual css::uno::Reference< css::sheet::XSheetAnnotations > getAnnotations(tools::Long nIndex)=0
virtual css::uno::Reference< css::uno::XInterface > init()=0