summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2015-05-07 17:01:36 -0400
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-05-13 06:24:43 +0200
commit2c5be9611c3c74d02bd4fd5ac05170ea83d1ba20 (patch)
tree9215387c9fdbd6b852db0296c43d126e4c4fa1c8
parent12fd50bfdff0f91cb4a7ae2e90049f25838a2433 (diff)
Unit test for tdf#83366
Change-Id: If0bea3c3a2b0d098e82fd54c069f99041e6ace81
-rw-r--r--sc/CppunitTest_sc_subsequent_filters_test.mk1
-rw-r--r--sc/qa/unit/subsequent_filters-test.cxx84
2 files changed, 85 insertions, 0 deletions
diff --git a/sc/CppunitTest_sc_subsequent_filters_test.mk b/sc/CppunitTest_sc_subsequent_filters_test.mk
index d56fd20c4653..08dedbb705ce 100644
--- a/sc/CppunitTest_sc_subsequent_filters_test.mk
+++ b/sc/CppunitTest_sc_subsequent_filters_test.mk
@@ -98,6 +98,7 @@ $(eval $(call gb_CppunitTest_use_components,sc_subsequent_filters_test,\
sfx2/util/sfx \
sot/util/sot \
svl/util/svl \
+ svl/source/fsstor/fsstorage \
svtools/util/svt \
toolkit/util/tk \
ucb/source/core/ucb1 \
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
index dbc5ac173330..61fd98f43cfa 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -50,6 +50,7 @@
#include "cellvalue.hxx"
#include "attrib.hxx"
#include "dpshttab.hxx"
+#include "tabvwsh.hxx"
#include <scopetools.hxx>
#include <columnspanset.hxx>
#include <tokenstringcontext.hxx>
@@ -63,7 +64,9 @@
#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/GeneralFunction.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
#include <com/sun/star/text/textfield/Type.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/chart2/data/XDataReceiver.hpp>
@@ -191,6 +194,7 @@ public:
void testVBAUserFunctionXLSM();
void testEmbeddedImageXLS();
void testEditEngStrikeThroughXLSX();
+ void testCopyPasteXLS();
CPPUNIT_TEST_SUITE(ScFiltersTest);
CPPUNIT_TEST(testBooleanFormatXLSX);
@@ -280,6 +284,7 @@ public:
CPPUNIT_TEST(testEmbeddedImageXLS);
CPPUNIT_TEST(testErrorOnExternalReferences);
CPPUNIT_TEST(testEditEngStrikeThroughXLSX);
+ CPPUNIT_TEST(testCopyPasteXLS);
CPPUNIT_TEST_SUITE_END();
private:
@@ -2936,6 +2941,85 @@ 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" )
{