diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-05-13 06:18:10 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-05-13 06:24:43 +0200 |
commit | 33dd700085441e0903a1cfdc876f2d6338c76bef (patch) | |
tree | f435d2441e9de291711bb318543df1a927749890 /sc/qa/unit | |
parent | 2c5be9611c3c74d02bd4fd5ac05170ea83d1ba20 (diff) |
extract copy&paste test from import tests
It makes more sense to use an independent test for these type of tests.
Change-Id: Ied0cf3e42ccd391594f1dc884617f9dc498e700e
Diffstat (limited to 'sc/qa/unit')
-rw-r--r-- | sc/qa/unit/copy_paste_test.cxx | 151 | ||||
-rw-r--r-- | sc/qa/unit/subsequent_filters-test.cxx | 81 |
2 files changed, 151 insertions, 81 deletions
diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx new file mode 100644 index 000000000000..73259e649ed8 --- /dev/null +++ b/sc/qa/unit/copy_paste_test.cxx @@ -0,0 +1,151 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> + +#include "docsh.hxx" +#include "tabvwsh.hxx" + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/frame/XModel2.hpp> + +#include "helper/qahelper.hxx" + +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; + +class ScCopyPasteTest : public ScBootstrapFixture +{ +public: + ScCopyPasteTest(); + + virtual void setUp() SAL_OVERRIDE; + virtual void tearDown() SAL_OVERRIDE; + + void testCopyPasteXLS(); + + CPPUNIT_TEST_SUITE(ScCopyPasteTest); + CPPUNIT_TEST(testCopyPasteXLS); + CPPUNIT_TEST_SUITE_END(); + +private: + + uno::Reference<uno::XInterface> m_xCalcComponent; +}; + +// tdf#83366 +void ScCopyPasteTest::testCopyPasteXLS() +{ + uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext()); + CPPUNIT_ASSERT( xDesktop.is() ); + + // create a frame + Reference< frame::XFrame > xTargetFrame = xDesktop->findFrame( OUString("_blank"), 0 ); + CPPUNIT_ASSERT( xTargetFrame.is() ); + + // 1. Open the document + ScDocShellRef xDocSh = loadDoc("chartx.", XLS); + CPPUNIT_ASSERT_MESSAGE("Failed to load chartx.xls.", xDocSh.Is()); + + 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 != NULL); + + // 2. Highlight B2:C5 + ScRange aSrcRange; + sal_uInt16 nRes = aSrcRange.Parse("B2:C5", &rDoc, rDoc.GetAddressConvention()); + CPPUNIT_ASSERT_MESSAGE("Failed to parse.", (nRes & SCA_VALID) != 0); + + ScMarkData aMark; + aMark.SetMarkArea(aSrcRange); + + pViewShell->GetViewData().GetMarkData().SetMarkArea(aSrcRange); + + // 3. Copy + ScDocument aClipDoc(SCDOCMODE_CLIP); + pViewShell->GetViewData().GetView()->CopyToClip(&aClipDoc, false, false, false, false); + + // 4. Close the document (Ctrl-W) + xDocSh->DoClose(); + + // 5. Create a new Spreadsheet + Sequence < beans::PropertyValue > args(1); + args[0].Name = "Hidden"; + args[0].Value <<= sal_True; + + uno::Reference< lang::XComponent > xComponent = xDesktop->loadComponentFromURL( + OUString("private:factory/scalc"), + OUString("_blank"), + 0, + args ); + CPPUNIT_ASSERT( xComponent.is() ); + + // Get the document model + SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent); + CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell); + + xDocSh = dynamic_cast<ScDocShell*>(pFoundShell); + CPPUNIT_ASSERT(xDocSh != NULL); + + // Get the document controller + pViewShell = xDocSh->GetBestViewShell(false); + CPPUNIT_ASSERT(pViewShell != NULL); + + // 6. Paste + pViewShell->GetViewData().GetView()->PasteFromClip(IDF_ALL, &aClipDoc); + + xDocSh->DoClose(); +} + +ScCopyPasteTest::ScCopyPasteTest() + : ScBootstrapFixture( "/sc/qa/unit/data" ) +{ +} + +void ScCopyPasteTest::setUp() +{ + test::BootstrapFixture::setUp(); + + // This is a bit of a fudge, we do this to ensure that ScGlobals::ensure, + // which is a private symbol to us, gets called + m_xCalcComponent = + getMultiServiceFactory()->createInstance("com.sun.star.comp.Calc.SpreadsheetDocument"); + CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is()); +} + +void ScCopyPasteTest::tearDown() +{ + uno::Reference< lang::XComponent >( m_xCalcComponent, UNO_QUERY_THROW )->dispose(); + test::BootstrapFixture::tearDown(); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ScCopyPasteTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 61fd98f43cfa..12bb93a03c72 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -194,7 +194,6 @@ public: void testVBAUserFunctionXLSM(); void testEmbeddedImageXLS(); void testEditEngStrikeThroughXLSX(); - void testCopyPasteXLS(); CPPUNIT_TEST_SUITE(ScFiltersTest); CPPUNIT_TEST(testBooleanFormatXLSX); @@ -284,7 +283,6 @@ public: CPPUNIT_TEST(testEmbeddedImageXLS); CPPUNIT_TEST(testErrorOnExternalReferences); CPPUNIT_TEST(testEditEngStrikeThroughXLSX); - CPPUNIT_TEST(testCopyPasteXLS); CPPUNIT_TEST_SUITE_END(); private: @@ -2941,85 +2939,6 @@ void ScFiltersTest::testEditEngStrikeThroughXLSX() } } -// tdf#83366 -void ScFiltersTest::testCopyPasteXLS() -{ - uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext()); - CPPUNIT_ASSERT( xDesktop.is() ); - - // create a frame - Reference< frame::XFrame > xTargetFrame = xDesktop->findFrame( OUString("_blank"), 0 ); - CPPUNIT_ASSERT( xTargetFrame.is() ); - - // 1. Open the document - ScDocShellRef xDocSh = loadDoc("chartx.", XLS); - CPPUNIT_ASSERT_MESSAGE("Failed to load chartx.xls.", xDocSh.Is()); - - 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 != NULL); - - // 2. Highlight B2:C5 - ScRange aSrcRange; - sal_uInt16 nRes = aSrcRange.Parse("B2:C5", &rDoc, rDoc.GetAddressConvention()); - CPPUNIT_ASSERT_MESSAGE("Failed to parse.", (nRes & SCA_VALID) != 0); - - ScMarkData aMark; - aMark.SetMarkArea(aSrcRange); - - pViewShell->GetViewData().GetMarkData().SetMarkArea(aSrcRange); - - // 3. Copy - ScDocument aClipDoc(SCDOCMODE_CLIP); - pViewShell->GetViewData().GetView()->CopyToClip(&aClipDoc, false, false, false, false); - - // 4. Close the document (Ctrl-W) - xDocSh->DoClose(); - - // 5. Create a new Spreadsheet - Sequence < beans::PropertyValue > args(1); - args[0].Name = "Hidden"; - args[0].Value <<= sal_True; - - uno::Reference< lang::XComponent > xComponent = xDesktop->loadComponentFromURL( - OUString("private:factory/scalc"), - OUString("_blank"), - 0, - args ); - CPPUNIT_ASSERT( xComponent.is() ); - - // Get the document model - SfxObjectShell* pFoundShell = SfxObjectShell::GetShellFromComponent(xComponent); - CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell); - - xDocSh = dynamic_cast<ScDocShell*>(pFoundShell); - CPPUNIT_ASSERT(xDocSh != NULL); - - // Get the document controller - pViewShell = xDocSh->GetBestViewShell(false); - CPPUNIT_ASSERT(pViewShell != NULL); - - // 6. Paste - pViewShell->GetViewData().GetView()->PasteFromClip(IDF_ALL, &aClipDoc); - - xDocSh->DoClose(); -} - ScFiltersTest::ScFiltersTest() : ScBootstrapFixture( "/sc/qa/unit/data" ) { |