[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.0' - desktop/qa sc/source

Jan Holesovsky kendy at collabora.com
Wed Jan 20 15:45:41 PST 2016


 desktop/qa/data/sheets.ods                  |binary
 desktop/qa/desktop_lib/test_desktop_lib.cxx |   34 ++++++++++++++++++++++++++++
 sc/source/ui/view/tabvwshf.cxx              |   20 +++++++++++++---
 3 files changed, 50 insertions(+), 4 deletions(-)

New commits:
commit c42b529e8508d355e8d87b5b90f76f3b32ba36d5
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Thu Jan 21 00:42:59 2016 +0100

    sc lok: Implement unit test for .uno:{Insert,Name,Remove} for sheets.
    
    And fix indexing when at that - the inserting is 1-based, so let's be
    consistent in the .uno:Name and .uno:Remove too.
    
    Change-Id: Ib854e81551ae0a39d3ba7c68512e81ea227e9eb1

diff --git a/desktop/qa/data/sheets.ods b/desktop/qa/data/sheets.ods
new file mode 100644
index 0000000..42226b2
Binary files /dev/null and b/desktop/qa/data/sheets.ods differ
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 5e7a14d..0d39f93 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -86,6 +86,7 @@ public:
     void testRowColumnHeaders();
     void testCommandResult();
     void testWriterComments();
+    void testSheetOperations();
 
     CPPUNIT_TEST_SUITE(DesktopLOKTest);
     CPPUNIT_TEST(testGetStyles);
@@ -103,6 +104,7 @@ public:
     CPPUNIT_TEST(testRowColumnHeaders);
     CPPUNIT_TEST(testCommandResult);
     CPPUNIT_TEST(testWriterComments);
+    CPPUNIT_TEST(testSheetOperations);
     CPPUNIT_TEST_SUITE_END();
 
     uno::Reference<lang::XComponent> mxComponent;
@@ -587,6 +589,38 @@ void DesktopLOKTest::testWriterComments()
     comphelper::LibreOfficeKit::setActive(false);
 }
 
+void DesktopLOKTest::testSheetOperations()
+{
+    comphelper::LibreOfficeKit::setActive(true);
+    LibLODocument_Impl* pDocument = loadDoc("sheets.ods");
+
+    // insert the last sheet
+    pDocument->pClass->postUnoCommand(pDocument, ".uno:Insert",
+          "{ \"Name\": { \"type\": \"string\", \"value\": \"LastSheet\" }, \"Index\": { \"type\": \"long\", \"value\": 0 } }", false);
+
+    // insert the first sheet
+    pDocument->pClass->postUnoCommand(pDocument, ".uno:Insert",
+          "{ \"Name\": { \"type\": \"string\", \"value\": \"FirstSheet\" }, \"Index\": { \"type\": \"long\", \"value\": 1 } }", false);
+
+    // rename the \"Sheet1\" (2nd now) to \"Renamed\"
+    pDocument->pClass->postUnoCommand(pDocument, ".uno:Name",
+          "{ \"Name\": { \"type\": \"string\", \"value\": \"Renamed\" }, \"Index\": { \"type\": \"long\", \"value\": 2 } }", false);
+
+    // delete the \"Sheet2\" (3rd)
+    pDocument->pClass->postUnoCommand(pDocument, ".uno:Remove",
+          "{ \"Index\": { \"type\": \"long\", \"value\": 3 } }", false);
+
+    CPPUNIT_ASSERT_EQUAL(pDocument->pClass->getParts(pDocument), 6);
+
+    std::vector<OString> pExpected = { "FirstSheet", "Renamed", "Sheet3", "Sheet4", "Sheet5", "LastSheet" };
+    for (int i = 0; i < 6; ++i)
+    {
+        CPPUNIT_ASSERT_EQUAL(pExpected[i], OString(pDocument->pClass->getPartName(pDocument, i)));
+    }
+
+    comphelper::LibreOfficeKit::setActive(false);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index 53fd7c8..7502d21 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -333,8 +333,14 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                     OUString      aName;
 
                     if( pReqArgs->HasItem( FN_PARAM_1, &pItem ) )
+                    {
                         nTabNr = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
 
+                        // inserting is 1-based, let's be consistent
+                        if (nTabNr > 0)
+                            --nTabNr;
+                    }
+
                     if( pReqArgs->HasItem( nSlot, &pItem ) )
                         aName = static_cast<const SfxStringItem*>(pItem)->GetValue();
 
@@ -571,12 +577,18 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                 bool bHasIndex = (pReqArgs != nullptr);
 
                 // allow removing via the Index/FID_DELETE_TABLE parameter
-                SCTAB nIndexTab = nCurrentTab;
+                SCTAB nTabNr = nCurrentTab;
                 if (bHasIndex)
                 {
                     const SfxPoolItem* pItem;
                     if (pReqArgs->HasItem(FID_DELETE_TABLE, &pItem))
-                        nIndexTab = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
+                    {
+                        nTabNr = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
+
+                        // inserting is 1-based, let's be consistent
+                        if (nTabNr > 0)
+                            --nTabNr;
+                    }
                 }
 
                 bool bDoIt = bHasIndex;
@@ -598,8 +610,8 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                     if (bHasIndex)
                     {
                         // sheet no. provided by the parameter
-                        TheTabs.push_back(nIndexTab);
-                        if (nNewTab > nIndexTab && nNewTab > 0)
+                        TheTabs.push_back(nTabNr);
+                        if (nNewTab > nTabNr && nNewTab > 0)
                             --nNewTab;
                     }
                     else


More information about the Libreoffice-commits mailing list