diff options
author | Laurent Godard <lgodard.libre@laposte.net> | 2013-12-06 12:36:41 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-12-06 05:46:16 -0600 |
commit | f992400f6fec9c0178bddb83dbc859848221b659 (patch) | |
tree | 8242b760051f0617850c70833e7cc21c9482fb59 | |
parent | c2f5e09900561d417d53a74fd6bc189cb7d898e1 (diff) |
count notes - GetNotesInRange now include last tab
- refactor tests
- add unit test on counting notes on a sheet
Change-Id: I6762a0e791a745b828800645effdfc044ac33710
Reviewed-on: https://gerrit.libreoffice.org/6954
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | include/test/sheet/xsheetannotations.hxx | 3 | ||||
-rw-r--r-- | sc/qa/extras/scannotationsobj.cxx | 12 | ||||
-rw-r--r-- | sc/source/core/data/document.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/unoobj/docuno.cxx | 2 | ||||
-rw-r--r-- | test/source/sheet/xsheetannotations.cxx | 24 |
5 files changed, 34 insertions, 9 deletions
diff --git a/include/test/sheet/xsheetannotations.hxx b/include/test/sheet/xsheetannotations.hxx index 24e1dd50378a..403af949bcb6 100644 --- a/include/test/sheet/xsheetannotations.hxx +++ b/include/test/sheet/xsheetannotations.hxx @@ -20,11 +20,12 @@ public: // XSheetAnnotations void testInsertNew(); void testRemoveByIndex(); + void testCount(); protected: ~XSheetAnnotations() {} - virtual css::uno::Reference< css::sheet::XSheetAnnotations> getAnnotations() = 0; + virtual css::uno::Reference< css::sheet::XSheetAnnotations> getAnnotations(long nIndex) = 0; }; } diff --git a/sc/qa/extras/scannotationsobj.cxx b/sc/qa/extras/scannotationsobj.cxx index 485173c241cc..190efe5164dd 100644 --- a/sc/qa/extras/scannotationsobj.cxx +++ b/sc/qa/extras/scannotationsobj.cxx @@ -20,7 +20,7 @@ using namespace css::uno; namespace sc_apitest { -#define NUMBER_OF_TESTS 2 +#define NUMBER_OF_TESTS 3 class ScAnnontationsObj : public CalcUnoApiTest, apitest::XSheetAnnotations { @@ -31,11 +31,12 @@ public: virtual void tearDown(); virtual uno::Reference< uno::XInterface > init(); - virtual uno::Reference< sheet::XSheetAnnotations> getAnnotations(); + virtual uno::Reference< sheet::XSheetAnnotations > getAnnotations(long nIndex); CPPUNIT_TEST_SUITE(ScAnnontationsObj); CPPUNIT_TEST(testInsertNew); CPPUNIT_TEST(testRemoveByIndex); + CPPUNIT_TEST(testCount); CPPUNIT_TEST_SUITE_END(); private: @@ -51,12 +52,12 @@ ScAnnontationsObj::ScAnnontationsObj() { } -uno::Reference< sheet::XSheetAnnotations> ScAnnontationsObj::getAnnotations() +uno::Reference< sheet::XSheetAnnotations> ScAnnontationsObj::getAnnotations(long nIndex) { // 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); + uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(nIndex), UNO_QUERY_THROW); // get the annotations collection uno::Reference< sheet::XSheetAnnotationsSupplier > xAnnotationSupplier(xSheet, UNO_QUERY_THROW); @@ -76,9 +77,8 @@ uno::Reference< uno::XInterface > ScAnnontationsObj::init() mxComponent = loadFromDesktop(aFileURL); CPPUNIT_ASSERT_MESSAGE("Component not loaded",mxComponent.is()); - return getAnnotations(); + return getAnnotations(0); } - void ScAnnontationsObj::setUp() { nTest++; diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index a24889be64f3..9f36896206b4 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -6239,7 +6239,7 @@ void ScDocument::GetNotesInRange( const ScRangeList& rRange, std::vector<sc::Not for( size_t i = 0; i < rRange.size(); ++i) { const ScRange* pRange = rRange[i]; - for( SCTAB nTab = pRange->aStart.Tab(); nTab < pRange->aEnd.Tab(); ++nTab ) + for( SCTAB nTab = pRange->aStart.Tab(); nTab <= pRange->aEnd.Tab(); ++nTab ) { maTabs[nTab]->GetNotesInRange( *pRange, rNotes ); } diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 54f40d071df8..af9ede871094 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -3601,7 +3601,7 @@ uno::Reference<container::XEnumeration> SAL_CALL ScAnnotationsObj::createEnumera sal_Int32 SAL_CALL ScAnnotationsObj::getCount() throw(uno::RuntimeException) { SolarMutexGuard aGuard; - sal_uLong nCount = 0; + sal_Int32 nCount = 0; if (pDocShell) { ScDocument* pDoc = pDocShell->GetDocument(); diff --git a/test/source/sheet/xsheetannotations.cxx b/test/source/sheet/xsheetannotations.cxx index 66715938163a..a56fc6ba581c 100644 --- a/test/source/sheet/xsheetannotations.cxx +++ b/test/source/sheet/xsheetannotations.cxx @@ -22,6 +22,27 @@ using namespace css::uno; namespace apitest { +void XSheetAnnotations::testCount() +{ + uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW); + + // count on sheet 1 before inserting + uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW); + sal_Int32 nBefore = xAnnotationsIndex->getCount(); + + // get Sheet 2 annotations + uno::Reference< sheet::XSheetAnnotations > xSheet2Annotations( getAnnotations(1), UNO_QUERY_THROW); + + // insert a note on sheet 2 + table::CellAddress xTargetCellAddress (1,0,0); + xSheet2Annotations->insertNew(xTargetCellAddress, "an inserted annotation on sheet 2"); + + // count again on sheet 1 + sal_Int32 nAfter = xAnnotationsIndex->getCount(); + + CPPUNIT_ASSERT_EQUAL_MESSAGE( "Annotations count should not change on sheet 1", nBefore, nAfter); +} + void XSheetAnnotations::testInsertNew() { uno::Reference< sheet::XSheetAnnotations > aSheetAnnotations (init(), UNO_QUERY_THROW); @@ -30,6 +51,9 @@ void XSheetAnnotations::testInsertNew() uno::Reference< container::XIndexAccess > xAnnotationsIndex (aSheetAnnotations, UNO_QUERY_THROW); sal_Int32 nBefore = xAnnotationsIndex->getCount(); + CPPUNIT_ASSERT_EQUAL_MESSAGE( + "There should already be one note", 1, nBefore ); + // insert the annotation table::CellAddress xTargetCellAddress (0,3,4); aSheetAnnotations->insertNew(xTargetCellAddress, "an inserted annotation"); |