sc/qa/unit/ucalc.cxx | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-)
New commits: commit f839984910f0fd4ef385552df3af5e09190e15b9 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Apr 25 01:12:48 2012 +0200 add test case for copy&paste formulas between documents diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 7662602..d875e42 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -4262,16 +4262,24 @@ void Test::testCopyPasteFormulas() void Test::testCopyPasteFormulasExternalDoc() { + rtl::OUString aDocName("file:///source.fake"); + SfxMedium* pMedium = new SfxMedium(aDocName, STREAM_STD_READWRITE); + m_xDocShRef->DoInitNew(pMedium); + m_pDoc = m_xDocShRef->GetDocument(); + ScDocShellRef xExtDocSh = new ScDocShell; - OUString aExtDocName(RTL_CONSTASCII_USTRINGPARAM("file:///extdata.fake")); - OUString aExtSh1Name(RTL_CONSTASCII_USTRINGPARAM("ExtSheet1")); - OUString aExtSh2Name(RTL_CONSTASCII_USTRINGPARAM("ExtSheet2")); - OUString aExtSh3Name(RTL_CONSTASCII_USTRINGPARAM("ExtSheet3")); + OUString aExtDocName("file:///extdata.fake"); + OUString aExtSh1Name("ExtSheet1"); + OUString aExtSh2Name("ExtSheet2"); SfxMedium* pMed = new SfxMedium(aExtDocName, STREAM_STD_READWRITE); xExtDocSh->DoInitNew(pMed); CPPUNIT_ASSERT_MESSAGE("external document instance not loaded.", findLoadedDocShellByName(aExtDocName) != NULL); + ScDocument* pExtDoc = xExtDocSh->GetDocument(); + pExtDoc->InsertTab(0, aExtSh1Name); + pExtDoc->InsertTab(1, aExtSh2Name); + m_pDoc->InsertTab(0, "Sheet1"); m_pDoc->InsertTab(1, "Sheet2"); @@ -4280,7 +4288,37 @@ void Test::testCopyPasteFormulasExternalDoc() m_pDoc->SetString(0,2,0, "=$Sheet2.A1"); m_pDoc->SetString(0,3,0, "=$Sheet2.$A$1"); m_pDoc->SetString(0,4,0, "=$Sheet2.A$1"); + m_pDoc->SetString(0,5,0, "=$Sheet1.$A$1"); + + ScRange aRange(0,0,0,0,5,0); + ScClipParam aClipParam(aRange, false); + ScMarkData aMark; + aMark.SetMarkArea(aRange); + ScDocument* pClipDoc = new ScDocument(SCDOCMODE_CLIP); + m_pDoc->CopyToClip(aClipParam, pClipDoc, &aMark); + sal_uInt16 nFlags = IDF_ALL; + aRange = ScRange(1,1,1,1,6,1); + ScMarkData aMarkData2; + aMarkData2.SetMarkArea(aRange); + pExtDoc->CopyFromClip(aRange, aMarkData2, nFlags, NULL, pClipDoc); + + rtl::OUString aFormula; + pExtDoc->GetFormula(1,1,1, aFormula); + //adjust absolute refs pointing to the copy area + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("=COLUMN($B$2)")); + pExtDoc->GetFormula(1,2,1, aFormula); + //adjust absolute refs and keep relative refs + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("=$B$2+C3")); + pExtDoc->GetFormula(1,3,1, aFormula); + // make absolute sheet refs external refs + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("='file:///source.fake'#$Sheet2.B2")); + pExtDoc->GetFormula(1,4,1, aFormula); + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("='file:///source.fake'#$Sheet2.$A$1")); + pExtDoc->GetFormula(1,5,1, aFormula); + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("='file:///source.fake'#$Sheet2.B$1")); + pExtDoc->GetFormula(1,6,1, aFormula); + CPPUNIT_ASSERT_EQUAL(aFormula, rtl::OUString("=$ExtSheet2.$B$2")); } CPPUNIT_TEST_SUITE_REGISTRATION(Test); _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits