[Libreoffice-commits] core.git: sc/qa
Markus Mohrhard
markus.mohrhard at googlemail.com
Tue Mar 14 07:06:58 UTC 2017
sc/qa/unit/ucalc.cxx | 44 ++++++++++++++++++++++++++++++++++++++++++++
sc/qa/unit/ucalc.hxx | 2 ++
2 files changed, 46 insertions(+)
New commits:
commit 8137bcb9c2915b179c541154cee050a11c54ba59
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Tue Mar 14 00:47:35 2017 +0100
add test for tdf#106456
Change-Id: Icf8a52db84536ef540c5dcffceabfbeb5c1deb02
Reviewed-on: https://gerrit.libreoffice.org/35153
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 4fda600..9a51d92 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4909,6 +4909,50 @@ void Test::testCopyPasteFormulasExternalDoc()
xExtDocSh->DoClose();
}
+void Test::testCopyPasteReferencesExternalDoc()
+{
+ OUString aDocName("file:///source.fake");
+ SfxMedium* pMedium = new SfxMedium(aDocName, StreamMode::STD_READWRITE);
+ getDocShell().DoInitNew(pMedium);
+ m_pDoc = &getDocShell().GetDocument();
+
+ ScDocShellRef xExtDocSh = new ScDocShell;
+ xExtDocSh->SetIsInUcalc();
+ OUString aExtDocName("file:///extdata.fake");
+ OUString aExtSh1Name("ExtSheet1");
+ SfxMedium* pMed = new SfxMedium(aExtDocName, StreamMode::STD_READWRITE);
+ xExtDocSh->DoInitNew(pMed);
+ CPPUNIT_ASSERT_MESSAGE("external document instance not loaded.",
+ findLoadedDocShellByName(aExtDocName) != nullptr);
+
+ ScDocument& rExtDoc = xExtDocSh->GetDocument();
+ rExtDoc.InsertTab(0, aExtSh1Name);
+
+ m_pDoc->InsertTab(0, "Sheet1");
+
+ m_pDoc->SetString(0,5,0, "=SUM($Sheet1.A1:A5)");
+
+ ScRange aRange(0,2,0,0,5,0);
+ ScClipParam aClipParam(aRange, false);
+ ScMarkData aMark;
+ aMark.SetMarkArea(aRange);
+ ScDocument aClipDoc(SCDOCMODE_CLIP);
+ m_pDoc->CopyToClip(aClipParam, &aClipDoc, &aMark, false, false);
+
+ InsertDeleteFlags nFlags = InsertDeleteFlags::ALL;
+ aRange = ScRange(0,0,0,0,3,0);
+ ScMarkData aMarkData2;
+ aMarkData2.SetMarkArea(aRange);
+ rExtDoc.CopyFromClip(aRange, aMarkData2, nFlags, nullptr, &aClipDoc);
+
+ OUString aFormula;
+ rExtDoc.GetFormula(0,3,0, aFormula);
+ //adjust absolute refs pointing to the copy area
+ CPPUNIT_ASSERT_EQUAL(aFormula, OUString("=SUM('file:///source.fake'#$Sheet1.A#REF!:A3)"));
+
+ xExtDocSh->DoClose();
+}
+
void Test::testFindAreaPosVertical()
{
const char* aData[][3] = {
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 5d94547..076e5b0 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -422,6 +422,7 @@ public:
void testAutoFillSimple();
void testCopyPasteFormulas();
void testCopyPasteFormulasExternalDoc();
+ void testCopyPasteReferencesExternalDoc(); // tdf#106456
void testFindAreaPosVertical();
void testFindAreaPosColRight();
@@ -702,6 +703,7 @@ public:
CPPUNIT_TEST(testAutoFillSimple);
CPPUNIT_TEST(testCopyPasteFormulas);
CPPUNIT_TEST(testCopyPasteFormulasExternalDoc);
+ CPPUNIT_TEST(testCopyPasteReferencesExternalDoc);
CPPUNIT_TEST(testFindAreaPosVertical);
CPPUNIT_TEST(testFindAreaPosColRight);
CPPUNIT_TEST(testSort);
More information about the Libreoffice-commits
mailing list