[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