sc/qa/unit/copy_paste_test.cxx | 106 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-)
New commits: commit 47d0e1be83810ccdb2d5350167c3713ea5d923ba Author: Jan Holesovsky <[email protected]> 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 <[email protected]> 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" ) { _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
