[Libreoffice-commits] core.git: 2 commits - sc/qa

Jan Holesovsky kendy at collabora.com
Mon Jun 6 08:57:29 UTC 2016


 sc/qa/unit/copy_paste_test.cxx |  106 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 105 insertions(+), 1 deletion(-)

New commits:
commit 47d0e1be83810ccdb2d5350167c3713ea5d923ba
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Jun 6 10:29:42 2016 +0200

    tdf#84411 unit test: Trivial follow-up updates.
    
    Change-Id: Ia19fec237d3301297e4e1caa2338519264c4b724

diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx
index 7db0bf9..0e9addf 100644
--- a/sc/qa/unit/copy_paste_test.cxx
+++ b/sc/qa/unit/copy_paste_test.cxx
@@ -123,6 +123,8 @@ void ScCopyPasteTest::testCopyPasteXLS()
     xComponent->dispose();
 }
 
+namespace {
+
 void lcl_copy( const OUString& rSrcRange, const OUString& rDstRange, ScDocument& rDoc, ScTabViewShell* pViewShell )
 {
     ScDocument aClipDoc(SCDOCMODE_CLIP);
@@ -142,6 +144,8 @@ void lcl_copy( const OUString& rSrcRange, const OUString& rDstRange, ScDocument&
     pViewShell->GetViewData().GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
 }
 
+} // anonymous namespace
+
 void ScCopyPasteTest::testTdf84411()
 {
     uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext());
@@ -202,6 +206,7 @@ void ScCopyPasteTest::testTdf84411()
     // 3. Disable OpenCL
     ScModelObj* pModel = ScModelObj::getImplementation(pFoundShell->GetModel());
     CPPUNIT_ASSERT(pModel != nullptr);
+    bool bOpenCLState = ScCalcConfig::isOpenCLEnabled();
     pModel->enableOpenCL(false);
     CPPUNIT_ASSERT(ScCalcConfig::isOpenCLEnabled() == false);
     pModel->enableAutomaticCalculation(true);
@@ -217,6 +222,7 @@ void ScCopyPasteTest::testTdf84411()
 
 
     // 5. Close the document (Ctrl-W)
+    pModel->enableOpenCL(bOpenCLState);
     xComponent->dispose();
 }
 
@@ -246,5 +252,4 @@ CPPUNIT_TEST_SUITE_REGISTRATION(ScCopyPasteTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
 
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 770493f3cf4c724e115b51a4280b00fe00b7f42e
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Sun Jun 5 21:31:15 2016 +0200

    tdf#84411 - unit test
    
    Change-Id: I0be17c6e9e7f14d73597410a52539240f22a9b68

diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx
index cf1ea0e..7db0bf9 100644
--- a/sc/qa/unit/copy_paste_test.cxx
+++ b/sc/qa/unit/copy_paste_test.cxx
@@ -32,9 +32,11 @@ public:
     virtual void tearDown() override;
 
     void testCopyPasteXLS();
+    void testTdf84411();
 
     CPPUNIT_TEST_SUITE(ScCopyPasteTest);
     CPPUNIT_TEST(testCopyPasteXLS);
+    CPPUNIT_TEST(testTdf84411);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -121,6 +123,103 @@ void ScCopyPasteTest::testCopyPasteXLS()
     xComponent->dispose();
 }
 
+void lcl_copy( const OUString& rSrcRange, const OUString& rDstRange, ScDocument& rDoc, ScTabViewShell* pViewShell )
+{
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+
+    // 1. Copy
+    ScRange aSrcRange;
+    ScRefFlags nRes = aSrcRange.Parse(rSrcRange, &rDoc, rDoc.GetAddressConvention());
+    CPPUNIT_ASSERT_MESSAGE("Failed to parse.", (nRes & ScRefFlags::VALID));
+    pViewShell->GetViewData().GetMarkData().SetMarkArea(aSrcRange);
+    pViewShell->GetViewData().GetView()->CopyToClip(&aClipDoc, false, false, false, false);
+
+    // 2. Paste
+    ScRange aDstRange;
+    nRes = aDstRange.Parse(rDstRange, &rDoc, rDoc.GetAddressConvention());
+    CPPUNIT_ASSERT_MESSAGE("Failed to parse.", (nRes & ScRefFlags::VALID));
+    pViewShell->GetViewData().GetMarkData().SetMarkArea(aDstRange);
+    pViewShell->GetViewData().GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
+}
+
+void ScCopyPasteTest::testTdf84411()
+{
+    uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext());
+    CPPUNIT_ASSERT( xDesktop.is() );
+
+    // create a frame
+    Reference< frame::XFrame > xTargetFrame = xDesktop->findFrame( "_blank", 0 );
+    CPPUNIT_ASSERT( xTargetFrame.is() );
+
+    // 1. Create spreadsheet
+    uno::Sequence< beans::PropertyValue > aEmptyArgList;
+    uno::Reference< lang::XComponent > xComponent = xDesktop->loadComponentFromURL(
+            "private:factory/scalc",
+            "_blank",
+            0,
+            aEmptyArgList );
+    CPPUNIT_ASSERT( xComponent.is() );
+
+    // Get the document model
+    SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent);
+    CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell);
+
+    ScDocShellRef xDocSh = dynamic_cast<ScDocShell*>(pFoundShell);
+    CPPUNIT_ASSERT(xDocSh != nullptr);
+
+    uno::Reference< frame::XModel2 > xModel2 ( xDocSh->GetModel(), UNO_QUERY );
+    CPPUNIT_ASSERT( xModel2.is() );
+
+    Reference< frame::XController2 > xController ( xModel2->createDefaultViewController( xTargetFrame ), UNO_QUERY );
+    CPPUNIT_ASSERT( xController.is() );
+
+    // introduce model/view/controller to each other
+    xController->attachModel( xModel2.get() );
+    xModel2->connectController( xController.get() );
+    xTargetFrame->setComponent( xController->getComponentWindow(), xController.get() );
+    xController->attachFrame( xTargetFrame );
+    xModel2->setCurrentController( xController.get() );
+
+    ScDocument& rDoc = xDocSh->GetDocument();
+
+    // Get the document controller
+    ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
+    CPPUNIT_ASSERT(pViewShell != nullptr);
+
+
+    // 2. Setup data and formulas
+    for (unsigned int r = 0; r <= 4991; ++r)
+        for (unsigned int c = 0; c <= 14; ++c)
+            rDoc.SetValue( ScAddress(c,r,0), (r+1)*(c+1) );
+
+    rDoc.SetString(ScAddress(15,10000,0), "=AVERAGE(A10001:O10001)");
+    rDoc.SetString(ScAddress(16,10000,0), "=MIN(A10001:O10001)");
+    rDoc.SetString(ScAddress(17,10000,0), "=MAX(A10001:O10001)");
+
+    lcl_copy("P10001:R10001", "P10002:R12500", rDoc, pViewShell);
+
+
+    // 3. Disable OpenCL
+    ScModelObj* pModel = ScModelObj::getImplementation(pFoundShell->GetModel());
+    CPPUNIT_ASSERT(pModel != nullptr);
+    pModel->enableOpenCL(false);
+    CPPUNIT_ASSERT(ScCalcConfig::isOpenCLEnabled() == false);
+    pModel->enableAutomaticCalculation(true);
+    CPPUNIT_ASSERT( ScCalcConfig::isSwInterpreterEnabled() );
+
+
+    // 4. Copy and Paste
+    lcl_copy("A1:O2500", "A10001:O12500", rDoc, pViewShell);
+
+    lcl_copy("A2501:O5000", "A12501:O15000", rDoc, pViewShell);
+
+    lcl_copy("P10001:R10001", "P12501:R15000", rDoc, pViewShell);
+
+
+    // 5. Close the document (Ctrl-W)
+    xComponent->dispose();
+}
+
 ScCopyPasteTest::ScCopyPasteTest()
       : ScBootstrapFixture( "/sc/qa/unit/data" )
 {


More information about the Libreoffice-commits mailing list