diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-11-15 12:59:53 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-11-15 17:57:35 +0100 |
commit | ad40ad91c5400391a0848832e91c596be8fbd811 (patch) | |
tree | 15fabe20d522f4bc4660466aee7f60b025c02267 | |
parent | eedb077f8860e02838b37d75c230e51cd290a283 (diff) |
CppunitTest_sc_subsequent_filters_test2: inherit from UnoApiXmlTest
I couldn't find a way to test testTooManyColsRows,
move it to sc/qa/unit/filters-test.cxx for the
time being
Change-Id: Ie841dea8aeebcbeff8c9a75ddb91d134c2b52c53
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142741
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r-- | sc/qa/unit/filters-test.cxx | 20 | ||||
-rw-r--r-- | sc/qa/unit/helper/qahelper.cxx | 44 | ||||
-rw-r--r-- | sc/qa/unit/helper/qahelper.hxx | 22 | ||||
-rw-r--r-- | sc/qa/unit/subsequent_export_test.cxx | 6 | ||||
-rw-r--r-- | sc/qa/unit/subsequent_filters_test2.cxx | 1451 |
5 files changed, 649 insertions, 894 deletions
diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx index 91422c840ca2..862768af8390 100644 --- a/sc/qa/unit/filters-test.cxx +++ b/sc/qa/unit/filters-test.cxx @@ -26,6 +26,7 @@ #include <globalnames.hxx> #include <dbdata.hxx> #include <sortparam.hxx> +#include <scerrors.hxx> #include <scopetools.hxx> #include <scmod.hxx> #include <undomanager.hxx> @@ -84,6 +85,7 @@ public: void testSortWithSheetExternalReferencesODS_Impl( ScDocShellRef const & xDocShRef, SCROW nRow1, SCROW nRow2, bool bCheckRelativeInSheet ); void testSortWithFormattingXLS(); + void testTooManyColsRows(); void testForcepoint107(); CPPUNIT_TEST_SUITE(ScFiltersTest); @@ -112,6 +114,7 @@ public: CPPUNIT_TEST(testSortWithSharedFormulasODS); CPPUNIT_TEST(testSortWithSheetExternalReferencesODS); CPPUNIT_TEST(testSortWithFormattingXLS); + CPPUNIT_TEST(testTooManyColsRows); CPPUNIT_TEST(testForcepoint107); CPPUNIT_TEST_SUITE_END(); @@ -887,6 +890,23 @@ void ScFiltersTest::testSortWithFormattingXLS() xDocSh->DoClose(); } +void ScFiltersTest::testTooManyColsRows() +{ + // The intentionally doc has cells beyond our MAXROW/MAXCOL, so there + // should be a warning on load. + ScDocShellRef xDocSh = loadDoc(u"too-many-cols-rows.", FORMAT_ODS, /*bReadWrite*/ false, + /*bCheckErrorCode*/ false); + CPPUNIT_ASSERT(xDocSh->GetErrorCode() == SCWARN_IMPORT_ROW_OVERFLOW + || xDocSh->GetErrorCode() == SCWARN_IMPORT_COLUMN_OVERFLOW); + xDocSh->DoClose(); + + xDocSh = loadDoc(u"too-many-cols-rows.", FORMAT_XLSX, /*bReadWrite*/ false, + /*bCheckErrorCode*/ false); + CPPUNIT_ASSERT(xDocSh->GetErrorCode() == SCWARN_IMPORT_ROW_OVERFLOW + || xDocSh->GetErrorCode() == SCWARN_IMPORT_COLUMN_OVERFLOW); + xDocSh->DoClose(); +} + // just needs to not crash on recalc void ScFiltersTest::testForcepoint107() { diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx index 59d4177ef19c..3dad0c66be3f 100644 --- a/sc/qa/unit/helper/qahelper.cxx +++ b/sc/qa/unit/helper/qahelper.cxx @@ -933,48 +933,6 @@ std::shared_ptr<utl::TempFileNamed> ScBootstrapFixture::exportTo( ScDocShell& rS return pTempFile; } -void ScBootstrapFixture::miscRowHeightsTest( TestParam const * aTestValues, unsigned int numElems ) -{ - for ( unsigned int index=0; index<numElems; ++index ) - { - OUString sFileName = OUString::createFromAscii( aTestValues[ index ].sTestDoc ); - SAL_INFO( "sc.qa", "aTestValues[" << index << "] " << sFileName ); - int nImportType = aTestValues[ index ].nImportType; - int nExportType = aTestValues[ index ].nExportType; - ScDocShellRef xShell = loadDoc( sFileName, nImportType ); - - if ( nExportType != -1 ) - xShell = saveAndReload(*xShell, nExportType ); - - CPPUNIT_ASSERT(xShell.is()); - - ScDocument& rDoc = xShell->GetDocument(); - - for (int i=0; i<aTestValues[ index ].nRowData; ++i) - { - SCROW nRow = aTestValues[ index ].pData[ i].nStartRow; - SCROW nEndRow = aTestValues[ index ].pData[ i ].nEndRow; - SCTAB nTab = aTestValues[ index ].pData[ i ].nTab; - int nExpectedHeight = aTestValues[ index ].pData[ i ].nExpectedHeight; - if ( nExpectedHeight == -1 ) - nExpectedHeight = convertTwipToMm100(ScGlobal::GetStandardRowHeight()); - bool bCheckOpt = ( ( aTestValues[ index ].pData[ i ].nCheck & CHECK_OPTIMAL ) == CHECK_OPTIMAL ); - for ( ; nRow <= nEndRow; ++nRow ) - { - SAL_INFO( "sc.qa", " checking row " << nRow << " for height " << nExpectedHeight ); - int nHeight = convertTwipToMm100(rDoc.GetRowHeight(nRow, nTab, false)); - if ( bCheckOpt ) - { - bool bOpt = !(rDoc.GetRowFlags( nRow, nTab ) & CRFlags::ManualSize); - CPPUNIT_ASSERT_EQUAL(aTestValues[ index ].pData[ i ].bOptimal, bOpt); - } - CPPUNIT_ASSERT_EQUAL(nExpectedHeight, nHeight); - } - } - xShell->DoClose(); - } -} - void ScBootstrapFixture::setUp() { test::BootstrapFixture::setUp(); @@ -1041,7 +999,7 @@ ScDocShell* ScModelTestBase::getScDocShell() return pDocSh; } -void ScModelTestBase::miscRowHeightsTest( TestParam2 const * aTestValues, unsigned int numElems) +void ScModelTestBase::miscRowHeightsTest( TestParam const * aTestValues, unsigned int numElems) { for ( unsigned int index=0; index<numElems; ++index ) { diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx index f2dc6fae94e2..f330e2bc5979 100644 --- a/sc/qa/unit/helper/qahelper.hxx +++ b/sc/qa/unit/helper/qahelper.hxx @@ -83,24 +83,6 @@ struct TestParam int nCheck; // currently only CHECK_OPTIMAL ( we could add CHECK_MANUAL etc.) bool bOptimal; }; - const char* sTestDoc; - int nImportType; - int nExportType; // -1 for import test, otherwise this is an export test - int nRowData; - RowData const * pData; -}; - -struct TestParam2 -{ - struct RowData - { - SCROW nStartRow; - SCROW nEndRow; - SCTAB nTab; - int nExpectedHeight; // -1 for default height - int nCheck; // currently only CHECK_OPTIMAL ( we could add CHECK_MANUAL etc.) - bool bOptimal; - }; const std::u16string_view sTestDoc; const OUString sExportType; // empty for import test, otherwise this is an export test int nRowData; @@ -244,8 +226,6 @@ public: std::shared_ptr<utl::TempFileNamed> exportTo(ScDocShell& rShell, sal_Int32 nFormat, bool bValidate = true); - void miscRowHeightsTest( TestParam const * aTestValues, unsigned int numElems ); - virtual void setUp() override; virtual void tearDown() override; }; @@ -272,7 +252,7 @@ public: void createScDoc(const char* pName = nullptr, const char* pPassword = nullptr); ScDocument* getScDoc(); ScDocShell* getScDocShell(); - void miscRowHeightsTest( TestParam2 const * aTestValues, unsigned int numElems); + void miscRowHeightsTest( TestParam const * aTestValues, unsigned int numElems); }; #define ASSERT_DOUBLES_EQUAL( expected, result ) \ diff --git a/sc/qa/unit/subsequent_export_test.cxx b/sc/qa/unit/subsequent_export_test.cxx index 360e090b843a..34f675f36677 100644 --- a/sc/qa/unit/subsequent_export_test.cxx +++ b/sc/qa/unit/subsequent_export_test.cxx @@ -1342,7 +1342,7 @@ void ScExportTest::testDataBarExportXLSX() void ScExportTest::testMiscRowHeightExport() { - static const TestParam2::RowData DfltRowData[] = { + static const TestParam::RowData DfltRowData[] = { { 0, 4, 0, 529, 0, false }, { 5, 10, 0, 1058, 0, false }, { 17, 20, 0, 1746, 0, false }, @@ -1351,7 +1351,7 @@ void ScExportTest::testMiscRowHeightExport() { 1048573, 1048575, 0, 529, 0, false }, }; - static const TestParam2::RowData EmptyRepeatRowData[] = { + static const TestParam::RowData EmptyRepeatRowData[] = { // rows 0-4, 5-10, 17-20 are all set at various // heights, there is no content in the rows, there // was a bug where only the first row ( of repeated rows ) @@ -1361,7 +1361,7 @@ void ScExportTest::testMiscRowHeightExport() { 17, 20, 0, 1767, 0, false }, }; - TestParam2 aTestValues[] = { + TestParam aTestValues[] = { // Checks that some distributed ( non-empty ) heights remain set after export (roundtrip) // additionally there is effectively a default row height ( 5.29 mm ). So we test the // unset rows at the end of the document to ensure the effective xlsx default height diff --git a/sc/qa/unit/subsequent_filters_test2.cxx b/sc/qa/unit/subsequent_filters_test2.cxx index 293c7300d7fb..782d407bcb42 100644 --- a/sc/qa/unit/subsequent_filters_test2.cxx +++ b/sc/qa/unit/subsequent_filters_test2.cxx @@ -11,7 +11,7 @@ #include <memory> -#include <test/bootstrapfixture.hxx> +#include <test/unoapixml_test.hxx> #include <osl/thread.h> #include <svl/numformat.hxx> @@ -66,7 +66,7 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::uno; -class ScFiltersTest2 : public ScBootstrapFixture +class ScFiltersTest2 : public ScModelTestBase { public: ScFiltersTest2(); @@ -186,7 +186,6 @@ public: void testTdf139763ShapeAnchor(); void testAutofilterNamedRangesXLSX(); void testInvalidBareBiff5(); - void testTooManyColsRows(); void testTdf83671_SmartArt_import(); void testTdf83671_SmartArt_import2(); void testTdf151818_SmartArtFontColor(); @@ -305,7 +304,6 @@ public: CPPUNIT_TEST(testTdf139763ShapeAnchor); CPPUNIT_TEST(testAutofilterNamedRangesXLSX); CPPUNIT_TEST(testInvalidBareBiff5); - CPPUNIT_TEST(testTooManyColsRows); CPPUNIT_TEST(testTdf83671_SmartArt_import); CPPUNIT_TEST(testTdf83671_SmartArt_import2); CPPUNIT_TEST(testTdf151818_SmartArtFontColor); @@ -314,7 +312,7 @@ public: }; ScFiltersTest2::ScFiltersTest2() - : ScBootstrapFixture("sc/qa/unit/data") + : ScModelTestBase("sc/qa/unit/data") { } @@ -345,11 +343,12 @@ void ScFiltersTest2::testMiscRowHeights() have default row heights ( there was a problem where the optimal height was being calculated after import if no hard height ) */ - { "alldefaultheights.", FORMAT_ODS, -1, SAL_N_ELEMENTS(DfltRowData), DfltRowData }, + { u"ods/alldefaultheights.ods", OUString(), SAL_N_ELEMENTS(DfltRowData), DfltRowData }, /* Checks the imported height of some multiline input, additionally checks that the optimal height flag is set ( or not ) */ - { "multilineoptimal.", FORMAT_ODS, -1, SAL_N_ELEMENTS(MultiLineOptData), MultiLineOptData }, + { u"ods/multilineoptimal.ods", OUString(), SAL_N_ELEMENTS(MultiLineOptData), + MultiLineOptData }, }; miscRowHeightsTest(aTestValues, SAL_N_ELEMENTS(aTestValues)); } @@ -365,44 +364,44 @@ void ScFiltersTest2::testOptimalHeightReset() if (!IsDefaultDPI()) return; - ScDocShellRef xDocSh = loadDoc(u"multilineoptimal.", FORMAT_ODS, true); + createScDoc("ods/multilineoptimal.ods"); SCTAB nTab = 0; SCROW nRow = 0; - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // open document in read/write mode ( otherwise optimal height stuff won't // be triggered ) *and* you can't delete cell contents. - int nHeight = convertTwipToMm100(rDoc.GetRowHeight(nRow, nTab, false)); + int nHeight = convertTwipToMm100(pDoc->GetRowHeight(nRow, nTab, false)); CPPUNIT_ASSERT_EQUAL(1236, nHeight); - ScDocFunc& rFunc = xDocSh->GetDocFunc(); + ScDocShell* pDocSh = getScDocShell(); + ScDocFunc& rFunc = pDocSh->GetDocFunc(); // delete content of A1 ScRange aDelRange(0, 0, 0, 0, 0, 0); - ScMarkData aMark(rDoc.GetSheetLimits()); + ScMarkData aMark(pDoc->GetSheetLimits()); aMark.SetMarkArea(aDelRange); bool bRet = rFunc.DeleteContents(aMark, InsertDeleteFlags::ALL, false, true); CPPUNIT_ASSERT_MESSAGE("DeleteContents failed", bRet); // get the new height of A1 - nHeight = convertTwipToMm100(rDoc.GetRowHeight(nRow, nTab, false)); + nHeight = convertTwipToMm100(pDoc->GetRowHeight(nRow, nTab, false)); // set optimal height for empty row 2 std::vector<sc::ColRowSpan> aRowArr(1, sc::ColRowSpan(2, 2)); rFunc.SetWidthOrHeight(false, aRowArr, nTab, SC_SIZE_OPTIMAL, 0, true, true); // retrieve optimal height - int nOptimalHeight = convertTwipToMm100(rDoc.GetRowHeight(aRowArr[0].mnStart, nTab, false)); + int nOptimalHeight = convertTwipToMm100(pDoc->GetRowHeight(aRowArr[0].mnStart, nTab, false)); // check if the new height of A1 ( after delete ) is now the optimal height of an empty cell CPPUNIT_ASSERT_EQUAL(nOptimalHeight, nHeight); - xDocSh->DoClose(); } void ScFiltersTest2::testCustomNumFormatHybridCellODS() { - ScDocShellRef xDocSh = loadDoc(u"custom-numfmt-hybrid-cell.", FORMAT_ODS, false); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.SetAutoCalc(true); + createScDoc("ods/custom-numfmt-hybrid-cell.ods"); + ScDocument* pDoc = getScDoc(); + pDoc->SetAutoCalc(true); // All of B14, B16 and B18 should be displaying empty strings by virtue // of the custom number format being set on those cells. @@ -410,109 +409,97 @@ void ScFiltersTest2::testCustomNumFormatHybridCellODS() for (SCROW nRow : { 13, 15, 17 }) { ScAddress aPos(1, nRow, 0); - OUString aStr = rDoc.GetString(aPos); + OUString aStr = pDoc->GetString(aPos); CPPUNIT_ASSERT(aStr.isEmpty()); } // Now, set value of 1 to B15. This should trigger re-calc on B18 and B18 // should now show a value of 1. - rDoc.SetValue(ScAddress(1, 15, 0), 1.0); + pDoc->SetValue(ScAddress(1, 15, 0), 1.0); - OUString aStr = rDoc.GetString(ScAddress(1, 17, 0)); + OUString aStr = pDoc->GetString(ScAddress(1, 17, 0)); CPPUNIT_ASSERT_EQUAL(OUString("1"), aStr); // Make sure the cell doesn't have an error value. - ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(1, 17, 0)); + ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(1, 17, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(FormulaError::NONE, pFC->GetErrCode()); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf121040() { - ScDocShellRef xDocSh = loadDoc(u"tdf121040.", FORMAT_ODS); + createScDoc("ods/tdf121040.ods"); const SCTAB nTab = 0; - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // The first 9 rows should have the same height - const sal_uInt16 nHeight = rDoc.GetRowHeight(0, nTab, false); + const sal_uInt16 nHeight = pDoc->GetRowHeight(0, nTab, false); for (SCTAB nRow = 1; nRow < 9; nRow++) { - CPPUNIT_ASSERT_EQUAL(nHeight, rDoc.GetRowHeight(nRow, nTab, false)); + CPPUNIT_ASSERT_EQUAL(nHeight, pDoc->GetRowHeight(nRow, nTab, false)); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf118086() { - ScDocShellRef xDocSh = loadDoc(u"tdf118086.", FORMAT_ODS); + createScDoc("ods/tdf118086.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Depending on DPI, this might be 477 or 480 - CPPUNIT_ASSERT_DOUBLES_EQUAL(477, rDoc.GetRowHeight(2, static_cast<SCTAB>(0), false), 5); + CPPUNIT_ASSERT_DOUBLES_EQUAL(477, pDoc->GetRowHeight(2, static_cast<SCTAB>(0), false), 5); // Without the fix in place, this test would have failed with // - Expected: 256 // - Actual : 477 - CPPUNIT_ASSERT_EQUAL(sal_uInt16(256), rDoc.GetRowHeight(2, static_cast<SCTAB>(1), false)); - CPPUNIT_ASSERT_EQUAL(sal_uInt16(256), rDoc.GetRowHeight(2, static_cast<SCTAB>(2), false)); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(sal_uInt16(256), pDoc->GetRowHeight(2, static_cast<SCTAB>(1), false)); + CPPUNIT_ASSERT_EQUAL(sal_uInt16(256), pDoc->GetRowHeight(2, static_cast<SCTAB>(2), false)); } void ScFiltersTest2::testTdf118624() { - ScDocShellRef xDocSh = loadDoc(u"tdf118624.", FORMAT_ODS); + createScDoc("ods/tdf118624.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); CPPUNIT_ASSERT_MESSAGE("RAND() in array/matrix mode shouldn't return the same value", - rDoc.GetString(ScAddress(0, 0, 0)) - != rDoc.GetString(ScAddress(0, 1, 0))); - - xDocSh->DoClose(); + pDoc->GetString(ScAddress(0, 0, 0)) + != pDoc->GetString(ScAddress(0, 1, 0))); } void ScFiltersTest2::testTdf124454() { - ScDocShellRef xDocSh = loadDoc(u"tdf124454.", FORMAT_ODS); + createScDoc("ods/tdf124454.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("1"), rDoc.GetString(ScAddress(1, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("1"), rDoc.GetString(ScAddress(2, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(1, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(2, 0, 0))); // Without the fix in place, double negation with text in array // would have returned -1 - CPPUNIT_ASSERT_EQUAL(OUString("1"), rDoc.GetString(ScAddress(3, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("1"), pDoc->GetString(ScAddress(3, 0, 0))); } void ScFiltersTest2::testPrintRangeODS() { - ScDocShellRef xDocSh = loadDoc(u"print-range.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); - std::optional<ScRange> pRange = rDoc.GetRepeatRowRange(0); + createScDoc("ods/print-range.ods"); + ScDocument* pDoc = getScDoc(); + std::optional<ScRange> pRange = pDoc->GetRepeatRowRange(0); CPPUNIT_ASSERT(pRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 0, 0, 0, 1, 0), *pRange); - pRange = rDoc.GetRepeatRowRange(1); + pRange = pDoc->GetRepeatRowRange(1); CPPUNIT_ASSERT(pRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 2, 0, 0, 4, 0), *pRange); - - xDocSh->DoClose(); } void ScFiltersTest2::testOutlineODS() { - ScDocShellRef xDocSh = loadDoc(u"outline.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/outline.ods"); + ScDocument* pDoc = getScDoc(); - const ScOutlineTable* pTable = rDoc.GetOutlineTable(0); + const ScOutlineTable* pTable = pDoc->GetOutlineTable(0); CPPUNIT_ASSERT(pTable); const ScOutlineArray& rArr = pTable->GetRowArray(); @@ -555,48 +542,42 @@ void ScFiltersTest2::testOutlineODS() bool bVisible = pEntry->IsVisible(); CPPUNIT_ASSERT_EQUAL(aRow[i].bVisible, bVisible); } - - xDocSh->DoClose(); } void ScFiltersTest2::testColumnStyleXLSX() { - ScDocShellRef xDocSh = loadDoc(u"column-style.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/column-style.xlsx"); + ScDocument* pDoc = getScDoc(); - const ScPatternAttr* pPattern = rDoc.GetPattern(0, 0, 0); + const ScPatternAttr* pPattern = pDoc->GetPattern(0, 0, 0); CPPUNIT_ASSERT(pPattern); const ScProtectionAttr& rAttr = pPattern->GetItem(ATTR_PROTECTION); CPPUNIT_ASSERT(rAttr.GetProtection()); - pPattern = rDoc.GetPattern(0, 1, 0); + pPattern = pDoc->GetPattern(0, 1, 0); CPPUNIT_ASSERT(pPattern); const ScProtectionAttr& rAttrNew = pPattern->GetItem(ATTR_PROTECTION); CPPUNIT_ASSERT(!rAttrNew.GetProtection()); - - xDocSh->DoClose(); } void ScFiltersTest2::testColumnStyleAutoFilterXLSX() { - ScDocShellRef xDocSh = loadDoc(u"column-style-autofilter.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/column-style-autofilter.xlsx"); + ScDocument* pDoc = getScDoc(); - const ScPatternAttr* pPattern = rDoc.GetPattern(0, 10, 18); + const ScPatternAttr* pPattern = pDoc->GetPattern(0, 10, 18); CPPUNIT_ASSERT(pPattern); const ScMergeFlagAttr& rAttr = pPattern->GetItem(ATTR_MERGE_FLAG); CPPUNIT_ASSERT(!rAttr.HasAutoFilter()); - - xDocSh->DoClose(); } void ScFiltersTest2::testSharedFormulaHorizontalXLS() { - ScDocShellRef xDocSh = loadDoc(u"shared-formula/horizontal.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xls/shared-formula/horizontal.xls"); + ScDocument* pDoc = getScDoc(); // Make sure K2:S2 on the 2nd sheet are all formula cells. ScAddress aPos(0, 1, 1); @@ -604,7 +585,7 @@ void ScFiltersTest2::testSharedFormulaHorizontalXLS() { aPos.SetCol(nCol); CPPUNIT_ASSERT_EQUAL_MESSAGE("Formula cell is expected here.", CELLTYPE_FORMULA, - rDoc.GetCellType(aPos)); + pDoc->GetCellType(aPos)); } // Likewise, B3:J9 all should be formula cells. @@ -615,7 +596,7 @@ void ScFiltersTest2::testSharedFormulaHorizontalXLS() { aPos.SetRow(nRow); CPPUNIT_ASSERT_EQUAL_MESSAGE("Formula cell is expected here.", CELLTYPE_FORMULA, - rDoc.GetCellType(aPos)); + pDoc->GetCellType(aPos)); } } @@ -625,198 +606,184 @@ void ScFiltersTest2::testSharedFormulaHorizontalXLS() { aPos.SetCol(nCol); CPPUNIT_ASSERT_EQUAL_MESSAGE("Formula cell is expected here.", CELLTYPE_FORMULA, - rDoc.GetCellType(aPos)); + pDoc->GetCellType(aPos)); } // J2 has a string of "MW". aPos.SetCol(9); - CPPUNIT_ASSERT_EQUAL(OUString("MW"), rDoc.GetString(aPos)); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("MW"), pDoc->GetString(aPos)); } void ScFiltersTest2::testSharedFormulaWrappedRefsXLS() { - ScDocShellRef xDocSh = loadDoc(u"shared-formula/wrapped-refs.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xls/shared-formula/wrapped-refs.xls"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // Check the values of H7:H10. - CPPUNIT_ASSERT_EQUAL(7.0, rDoc.GetValue(ScAddress(7, 6, 0))); - CPPUNIT_ASSERT_EQUAL(8.0, rDoc.GetValue(ScAddress(7, 7, 0))); - CPPUNIT_ASSERT_EQUAL(9.0, rDoc.GetValue(ScAddress(7, 8, 0))); - CPPUNIT_ASSERT_EQUAL(10.0, rDoc.GetValue(ScAddress(7, 9, 0))); + CPPUNIT_ASSERT_EQUAL(7.0, pDoc->GetValue(ScAddress(7, 6, 0))); + CPPUNIT_ASSERT_EQUAL(8.0, pDoc->GetValue(ScAddress(7, 7, 0))); + CPPUNIT_ASSERT_EQUAL(9.0, pDoc->GetValue(ScAddress(7, 8, 0))); + CPPUNIT_ASSERT_EQUAL(10.0, pDoc->GetValue(ScAddress(7, 9, 0))); // EM7:EM10 should reference H7:H10. - CPPUNIT_ASSERT_EQUAL(7.0, rDoc.GetValue(ScAddress(142, 6, 0))); - CPPUNIT_ASSERT_EQUAL(8.0, rDoc.GetValue(ScAddress(142, 7, 0))); - CPPUNIT_ASSERT_EQUAL(9.0, rDoc.GetValue(ScAddress(142, 8, 0))); - CPPUNIT_ASSERT_EQUAL(10.0, rDoc.GetValue(ScAddress(142, 9, 0))); + CPPUNIT_ASSERT_EQUAL(7.0, pDoc->GetValue(ScAddress(142, 6, 0))); + CPPUNIT_ASSERT_EQUAL(8.0, pDoc->GetValue(ScAddress(142, 7, 0))); + CPPUNIT_ASSERT_EQUAL(9.0, pDoc->GetValue(ScAddress(142, 8, 0))); + CPPUNIT_ASSERT_EQUAL(10.0, pDoc->GetValue(ScAddress(142, 9, 0))); // Make sure EM7:EM10 are grouped. - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(142, 6, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(142, 6, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(6), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(4), pFC->GetSharedLength()); - - xDocSh->DoClose(); } void ScFiltersTest2::testSharedFormulaBIFF5() { - ScDocShellRef xDocSh = loadDoc(u"shared-formula/biff5.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xls/shared-formula/biff5.xls"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // E6:E376 should be all formulas, and they should belong to the same group. - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(4, 5, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(4, 5, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(5), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(371), pFC->GetSharedLength()); - - xDocSh->DoClose(); } void ScFiltersTest2::testSharedFormulaXLSB() { - ScDocShellRef xDocSh = loadDoc(u"shared_formula.", FORMAT_XLSB); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xlsb/shared_formula.xlsb"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // A1:A30 should be all formulas, and they should belong to the same group. - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(0, 0, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(0, 0, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(0), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(30), pFC->GetSharedLength()); for (SCROW nRow = 0; nRow < 30; ++nRow) { - ASSERT_DOUBLES_EQUAL(3.0, rDoc.GetValue(0, nRow, 0)); + ASSERT_DOUBLES_EQUAL(3.0, pDoc->GetValue(0, nRow, 0)); } - - xDocSh->DoClose(); } void ScFiltersTest2::testSharedFormulaXLS() { { // fdo#80091 - ScDocShellRef xDocSh = loadDoc(u"shared-formula/relative-refs1.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xls/shared-formula/relative-refs1.xls"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // A1:A30 should be all formulas, and they should belong to the same group. - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(0, 1, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(0, 1, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(29), pFC->GetSharedLength()); for (SCROW nRow = 0; nRow < 30; ++nRow) { - ASSERT_DOUBLES_EQUAL(double(nRow + 1), rDoc.GetValue(0, nRow, 0)); + ASSERT_DOUBLES_EQUAL(double(nRow + 1), pDoc->GetValue(0, nRow, 0)); } - - xDocSh->DoClose(); } { // fdo#84556 and some related tests - ScDocShellRef xDocSh = loadDoc(u"shared-formula/relative-refs2.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xls/shared-formula/relative-refs2.xls"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); { - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(2, 1, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(2, 1, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - pFC = rDoc.GetFormulaCell(ScAddress(2, 10, 0)); + pFC = pDoc->GetFormulaCell(ScAddress(2, 10, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(1), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - OUString aFormula = rDoc.GetFormula(2, 1, 0); + OUString aFormula = pDoc->GetFormula(2, 1, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B9:D9)"), aFormula); - aFormula = rDoc.GetFormula(2, 10, 0); + aFormula = pDoc->GetFormula(2, 10, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(B18:D18)"), aFormula); } { - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(4, 8, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(4, 8, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - pFC = rDoc.GetFormulaCell(ScAddress(4, 17, 0)); + pFC = pDoc->GetFormulaCell(ScAddress(4, 17, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - OUString aFormula = rDoc.GetFormula(4, 8, 0); + OUString aFormula = pDoc->GetFormula(4, 8, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(G9:EY9)"), aFormula); - aFormula = rDoc.GetFormula(4, 17, 0); + aFormula = pDoc->GetFormula(4, 17, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(G18:EY18)"), aFormula); } { - const ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(6, 15, 0)); + const ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(6, 15, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(15), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - pFC = rDoc.GetFormulaCell(ScAddress(6, 24, 0)); + pFC = pDoc->GetFormulaCell(ScAddress(6, 24, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(15), pFC->GetSharedTopRow()); CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(10), pFC->GetSharedLength()); - OUString aFormula = rDoc.GetFormula(6, 15, 0); + OUString aFormula = pDoc->GetFormula(6, 15, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A16:A40000)"), aFormula); - aFormula = rDoc.GetFormula(6, 24, 0); + aFormula = pDoc->GetFormula(6, 24, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM(A25:A40009)"), aFormula); } - - xDocSh->DoClose(); } } void ScFiltersTest2::testSharedFormulaColumnLabelsODS() { - ScDocShellRef xDocSh = loadDoc(u"shared-formula/column-labels.", FORMAT_ODS); - - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("ods/shared-formula/column-labels.ods"); - CPPUNIT_ASSERT_EQUAL(5.0, rDoc.GetValue(ScAddress(2, 1, 0))); - CPPUNIT_ASSERT_EQUAL(15.0, rDoc.GetValue(ScAddress(2, 2, 0))); - CPPUNIT_ASSERT_EQUAL(30.0, rDoc.GetValue(ScAddress(2, 3, 0))); - CPPUNIT_ASSERT_EQUAL(28.0, rDoc.GetValue(ScAddress(2, 4, 0))); - CPPUNIT_ASSERT_EQUAL(48.0, rDoc.GetValue(ScAddress(2, 5, 0))); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(ScAddress(3, 1, 0))); - CPPUNIT_ASSERT_EQUAL(50.0, rDoc.GetValue(ScAddress(3, 2, 0))); - CPPUNIT_ASSERT_EQUAL(144.0, rDoc.GetValue(ScAddress(3, 3, 0))); - CPPUNIT_ASSERT_EQUAL(147.0, rDoc.GetValue(ScAddress(3, 4, 0))); - CPPUNIT_ASSERT_EQUAL(320.0, rDoc.GetValue(ScAddress(3, 5, 0))); + CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(2, 1, 0))); + CPPUNIT_ASSERT_EQUAL(15.0, pDoc->GetValue(ScAddress(2, 2, 0))); + CPPUNIT_ASSERT_EQUAL(30.0, pDoc->GetValue(ScAddress(2, 3, 0))); + CPPUNIT_ASSERT_EQUAL(28.0, pDoc->GetValue(ScAddress(2, 4, 0))); + CPPUNIT_ASSERT_EQUAL(48.0, pDoc->GetValue(ScAddress(2, 5, 0))); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(ScAddress(4, 1, 0))); - CPPUNIT_ASSERT_EQUAL(2.0, rDoc.GetValue(ScAddress(4, 2, 0))); - CPPUNIT_ASSERT_EQUAL(4.0, rDoc.GetValue(ScAddress(4, 3, 0))); - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(ScAddress(4, 4, 0))); - CPPUNIT_ASSERT_EQUAL(5.0, rDoc.GetValue(ScAddress(4, 5, 0))); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(3, 1, 0))); + CPPUNIT_ASSERT_EQUAL(50.0, pDoc->GetValue(ScAddress(3, 2, 0))); + CPPUNIT_ASSERT_EQUAL(144.0, pDoc->GetValue(ScAddress(3, 3, 0))); + CPPUNIT_ASSERT_EQUAL(147.0, pDoc->GetValue(ScAddress(3, 4, 0))); + CPPUNIT_ASSERT_EQUAL(320.0, pDoc->GetValue(ScAddress(3, 5, 0))); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(4, 1, 0))); + CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(4, 2, 0))); + CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 4, 0))); + CPPUNIT_ASSERT_EQUAL(5.0, pDoc->GetValue(ScAddress(4, 5, 0))); } void ScFiltersTest2::testSharedFormulaColumnRowLabelsODS() { - ScDocShellRef xDocSh = loadDoc(u"shared-formula/column-row-labels.", FORMAT_ODS); + createScDoc("ods/shared-formula/column-row-labels.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // Expected output in each of the three ranges. // @@ -835,7 +802,7 @@ void ScFiltersTest2::testSharedFormulaColumnRowLabelsODS() for (SCROW nRow = 0; nRow <= 2; ++nRow) { ScAddress aPos(nStartCol + nCol, nStartRow + nRow, 0); - CPPUNIT_ASSERT_EQUAL(fExpected, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(fExpected, pDoc->GetValue(aPos)); fExpected += 1.0; } } @@ -844,88 +811,78 @@ void ScFiltersTest2::testSharedFormulaColumnRowLabelsODS() aCheckFunc(5, 1); // F2:H4 aCheckFunc(9, 1); // J2:L4 aCheckFunc(1, 6); // B7:D9 - - xDocSh->DoClose(); } void ScFiltersTest2::testExternalRefCacheXLSX() { - ScDocShellRef xDocSh = loadDoc(u"external-refs.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/external-refs.xlsx"); + ScDocument* pDoc = getScDoc(); // These string values are cached external cell values. - CPPUNIT_ASSERT_EQUAL(OUString("Name"), rDoc.GetString(ScAddress(0, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("Andy"), rDoc.GetString(ScAddress(0, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("Bruce"), rDoc.GetString(ScAddress(0, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("Charlie"), rDoc.GetString(ScAddress(0, 3, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("Name"), pDoc->GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("Andy"), pDoc->GetString(ScAddress(0, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("Bruce"), pDoc->GetString(ScAddress(0, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("Charlie"), pDoc->GetString(ScAddress(0, 3, 0))); } void ScFiltersTest2::testExternalRefCacheODS() { - ScDocShellRef xDocSh = loadDoc(u"external-ref-cache.", FORMAT_ODS); + createScDoc("ods/external-ref-cache.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Cells B2:B4 have VLOOKUP with external references which should all show "text". - CPPUNIT_ASSERT_EQUAL(OUString("text"), rDoc.GetString(ScAddress(1, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("text"), rDoc.GetString(ScAddress(1, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("text"), rDoc.GetString(ScAddress(1, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("text"), pDoc->GetString(ScAddress(1, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("text"), pDoc->GetString(ScAddress(1, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("text"), pDoc->GetString(ScAddress(1, 3, 0))); // Both cells A6 and A7 should be registered with scExternalRefManager properly CPPUNIT_ASSERT_EQUAL( - true, rDoc.GetExternalRefManager()->hasCellExternalReference(ScAddress(0, 5, 0))); + true, pDoc->GetExternalRefManager()->hasCellExternalReference(ScAddress(0, 5, 0))); CPPUNIT_ASSERT_EQUAL( - true, rDoc.GetExternalRefManager()->hasCellExternalReference(ScAddress(0, 6, 0))); - - xDocSh->DoClose(); + true, pDoc->GetExternalRefManager()->hasCellExternalReference(ScAddress(0, 6, 0))); } void ScFiltersTest2::testHybridSharedStringODS() { - ScDocShellRef xDocSh = loadDoc(u"hybrid-shared-string.", FORMAT_ODS); + createScDoc("ods/hybrid-shared-string.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // A2 contains formula with MATCH function. The result must be 2, not #N/A! - CPPUNIT_ASSERT_EQUAL(2.0, rDoc.GetValue(ScAddress(0, 1, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(ScAddress(0, 1, 0))); } void ScFiltersTest2::testCopyMergedNumberFormats() { - ScDocShellRef xDocSh = loadDoc(u"copy-merged-number-formats.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/copy-merged-number-formats.ods"); + ScDocument* pDoc = getScDoc(); // Cells B1, C1 and D1 are formatted as dates. - OUString aStrB1 = rDoc.GetString(ScAddress(1, 0, 0)); - OUString aStrC1 = rDoc.GetString(ScAddress(2, 0, 0)); - OUString aStrD1 = rDoc.GetString(ScAddress(3, 0, 0)); + OUString aStrB1 = pDoc->GetString(ScAddress(1, 0, 0)); + OUString aStrC1 = pDoc->GetString(ScAddress(2, 0, 0)); + OUString aStrD1 = pDoc->GetString(ScAddress(3, 0, 0)); ScDocument aCopyDoc; aCopyDoc.InsertTab(0, "CopyHere"); - rDoc.CopyStaticToDocument(ScRange(1, 0, 0, 3, 0, 0), 0, aCopyDoc); + pDoc->CopyStaticToDocument(ScRange(1, 0, 0, 3, 0, 0), 0, aCopyDoc); // Make sure the date formats are copied to the new document. CPPUNIT_ASSERT_EQUAL(aStrB1, aCopyDoc.GetString(ScAddress(1, 0, 0))); CPPUNIT_ASSERT_EQUAL(aStrC1, aCopyDoc.GetString(ScAddress(2, 0, 0))); CPPUNIT_ASSERT_EQUAL(aStrD1, aCopyDoc.GetString(ScAddress(3, 0, 0))); - - xDocSh->DoClose(); } void ScFiltersTest2::testVBAUserFunctionXLSM() { - ScDocShellRef xDocSh = loadDoc(u"vba-user-function.", FORMAT_XLSM); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsm/vba-user-function.xlsm"); + ScDocument* pDoc = getScDoc(); // A1 contains formula with user-defined function, and the function is defined in VBA. - ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(0, 0, 0)); + ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(0, 0, 0)); CPPUNIT_ASSERT(pFC); - sc::CompileFormulaContext aCxt(rDoc); + sc::CompileFormulaContext aCxt(*pDoc); OUString aFormula = pFC->GetFormula(aCxt); CPPUNIT_ASSERT_EQUAL(OUString("=MYFUNC()"), aFormula); @@ -935,9 +892,7 @@ void ScFiltersTest2::testVBAUserFunctionXLSM() CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(nErrCode)); // Check the result. - CPPUNIT_ASSERT_EQUAL(42.0, rDoc.GetValue(ScAddress(0, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(42.0, pDoc->GetValue(ScAddress(0, 0, 0))); } void ScFiltersTest2::testEmbeddedImageXLS() @@ -945,10 +900,10 @@ void ScFiltersTest2::testEmbeddedImageXLS() // The document has one embedded image on the first sheet. Make sure it's // imported properly. - ScDocShellRef xDocSh = loadDoc(u"file-with-png-image.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xls/file-with-png-image.xls"); + ScDocument* pDoc = getScDoc(); - ScDrawLayer* pDL = rDoc.GetDrawLayer(); + ScDrawLayer* pDL = pDoc->GetDrawLayer(); CPPUNIT_ASSERT(pDL); const SdrPage* pPage = pDL->GetPage(0); CPPUNIT_ASSERT(pPage); @@ -961,97 +916,92 @@ void ScFiltersTest2::testEmbeddedImageXLS() CPPUNIT_ASSERT_MESSAGE( "Bitmap content should not be empty if the image has been properly imported.", !aBMP.IsEmpty()); - - xDocSh->DoClose(); } void ScFiltersTest2::testErrorOnExternalReferences() { - ScDocShellRef xDocSh = loadDoc(u"blank.", FORMAT_ODS); + createScDoc("ods/blank.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Test tdf#89330 - rDoc.SetString(ScAddress(0, 0, 0), "='file:///Path/To/FileA.ods'#$Sheet1.A1A"); + pDoc->SetString(ScAddress(0, 0, 0), "='file:///Path/To/FileA.ods'#$Sheet1.A1A"); - ScFormulaCell* pFC = rDoc.GetFormulaCell(ScAddress(0, 0, 0)); + ScFormulaCell* pFC = pDoc->GetFormulaCell(ScAddress(0, 0, 0)); CPPUNIT_ASSERT(pFC); CPPUNIT_ASSERT_EQUAL(int(FormulaError::NoName), static_cast<int>(pFC->GetErrCode())); - ASSERT_FORMULA_EQUAL(rDoc, ScAddress(0, 0, 0), "'file:///Path/To/FileA.ods'#$Sheet1.A1A", + ASSERT_FORMULA_EQUAL(*pDoc, ScAddress(0, 0, 0), "'file:///Path/To/FileA.ods'#$Sheet1.A1A", "Formula changed"); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf145054() { - ScDocShellRef xDocSh = loadDoc(u"tdf145054.", FORMAT_XLSX); + createScDoc("xlsx/tdf145054.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Copy sheet - rDoc.CopyTab(0, 1); - CPPUNIT_ASSERT_EQUAL(SCTAB(2), rDoc.GetTableCount()); + pDoc->CopyTab(0, 1); + CPPUNIT_ASSERT_EQUAL(SCTAB(2), pDoc->GetTableCount()); // Make sure named DB was copied - ScDBData* pDBData = rDoc.GetDBCollection()->getNamedDBs().findByName("__Anonymous_Sheet_DB__1"); + ScDBData* pDBData + = pDoc->GetDBCollection()->getNamedDBs().findByName("__Anonymous_Sheet_DB__1"); CPPUNIT_ASSERT(pDBData); } void ScFiltersTest2::testTdf84762() { - ScDocShellRef xDocSh = loadDoc(u"blank.", FORMAT_ODS); + createScDoc("ods/blank.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - rDoc.SetString(ScAddress(0, 0, 0), "=RAND()"); - rDoc.SetString(ScAddress(0, 1, 0), "=RAND()"); - rDoc.SetString(ScAddress(1, 0, 0), "=RAND()*A1"); - rDoc.SetString(ScAddress(1, 1, 0), "=RAND()*B1"); + pDoc->SetString(ScAddress(0, 0, 0), "=RAND()"); + pDoc->SetString(ScAddress(0, 1, 0), "=RAND()"); + pDoc->SetString(ScAddress(1, 0, 0), "=RAND()*A1"); + pDoc->SetString(ScAddress(1, 1, 0), "=RAND()*B1"); double nValA1, nValB1, nValA2, nValB2; + ScDocShell* pDocSh = getScDocShell(); + // Without the fix in place, some cells wouldn't have been updated // after using F9 a few times for (sal_Int16 i = 0; i < 10; ++i) { - nValA1 = rDoc.GetValue(0, 0, 0); - nValB1 = rDoc.GetValue(0, 1, 0); - nValA2 = rDoc.GetValue(1, 0, 0); - nValB2 = rDoc.GetValue(1, 1, 0); + nValA1 = pDoc->GetValue(0, 0, 0); + nValB1 = pDoc->GetValue(0, 1, 0); + nValA2 = pDoc->GetValue(1, 0, 0); + nValB2 = pDoc->GetValue(1, 1, 0); - xDocSh->DoRecalc(false); + pDocSh->DoRecalc(false); - CPPUNIT_ASSERT(nValA1 != rDoc.GetValue(0, 0, 0)); - CPPUNIT_ASSERT(nValA2 != rDoc.GetValue(0, 1, 0)); - CPPUNIT_ASSERT(nValB1 != rDoc.GetValue(1, 0, 0)); - CPPUNIT_ASSERT(nValB2 != rDoc.GetValue(1, 1, 0)); + CPPUNIT_ASSERT(nValA1 != pDoc->GetValue(0, 0, 0)); + CPPUNIT_ASSERT(nValA2 != pDoc->GetValue(0, 1, 0)); + CPPUNIT_ASSERT(nValB1 != pDoc->GetValue(1, 0, 0)); + CPPUNIT_ASSERT(nValB2 != pDoc->GetValue(1, 1, 0)); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf44076() { - ScDocShellRef xDocSh = loadDoc(u"blank.", FORMAT_ODS); - - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/blank.ods"); - rDoc.SetString(ScAddress(0, 0, 0), "=(-8)^(1/3)"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(-2.0, rDoc.GetValue(ScAddress(0, 0, 0))); + pDoc->SetString(ScAddress(0, 0, 0), "=(-8)^(1/3)"); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(-2.0, pDoc->GetValue(ScAddress(0, 0, 0))); } void ScFiltersTest2::testEditEngStrikeThroughXLSX() { - ScDocShellRef xDocSh = loadDoc(u"strike-through.", FORMAT_XLSX); + createScDoc("xlsx/strike-through.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - const EditTextObject* pObj = rDoc.GetEditText(ScAddress(0, 0, 0)); + const EditTextObject* pObj = pDoc->GetEditText(ScAddress(0, 0, 0)); CPPUNIT_ASSERT(pObj); CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pObj->GetParagraphCount()); CPPUNIT_ASSERT_EQUAL(OUString("this is strike through this not"), pObj->GetText(0)); @@ -1073,31 +1023,27 @@ void ScFiltersTest2::testEditEngStrikeThroughXLSX() } } } - - xDocSh->DoClose(); } void ScFiltersTest2::testRefStringXLSX() { - ScDocShellRef xDocSh = loadDoc(u"ref_string.", FORMAT_XLSX); + createScDoc("xlsx/ref_string.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - double nVal = rDoc.GetValue(2, 2, 0); + double nVal = pDoc->GetValue(2, 2, 0); ASSERT_DOUBLES_EQUAL(3.0, nVal); - const ScCalcConfig& rCalcConfig = rDoc.GetCalcConfig(); + const ScCalcConfig& rCalcConfig = pDoc->GetCalcConfig(); CPPUNIT_ASSERT_EQUAL(formula::FormulaGrammar::CONV_XL_A1, rCalcConfig.meStringRefAddressSyntax); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf130132() { - ScDocShellRef xDocSh = loadDoc(u"tdf130132.", FORMAT_ODS); + createScDoc("ods/tdf130132.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); - const ScPatternAttr* pAttr = rDoc.GetPattern(434, 0, 0); + ScDocument* pDoc = getScDoc(); + const ScPatternAttr* pAttr = pDoc->GetPattern(434, 0, 0); { const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND); @@ -1110,11 +1056,11 @@ void ScFiltersTest2::testTdf130132() void ScFiltersTest2::testTdf133327() { - ScDocShellRef xDocSh = loadDoc(u"tdf133327.", FORMAT_ODS); + createScDoc("ods/tdf133327.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - const ScPatternAttr* pAttr = rDoc.GetPattern(250, 1, 0); + const ScPatternAttr* pAttr = pDoc->GetPattern(250, 1, 0); const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND); const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem); @@ -1128,10 +1074,10 @@ void ScFiltersTest2::testTdf133327() void ScFiltersTest2::testColumnStyle2XLSX() { - ScDocShellRef xDocSh = loadDoc(u"column_style.", FORMAT_XLSX); + createScDoc("xlsx/column_style.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); - const ScPatternAttr* pAttr = rDoc.GetPattern(1, 1, 0); + ScDocument* pDoc = getScDoc(); + const ScPatternAttr* pAttr = pDoc->GetPattern(1, 1, 0); { const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND); @@ -1159,16 +1105,13 @@ void ScFiltersTest2::testColumnStyle2XLSX() OUString aName = rFont.GetFamilyName(); CPPUNIT_ASSERT_EQUAL(OUString("Linux Biolinum G"), aName); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf110440XLSX() { - ScDocShellRef xDocSh = loadDoc(u"tdf110440.", FORMAT_XLSX); + createScDoc("xlsx/tdf110440.xlsx"); - uno::Reference<frame::XModel> xModel = xDocSh->GetModel(); - uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, uno::UNO_QUERY_THROW); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIA->getByIndex(0), uno::UNO_QUERY_THROW); @@ -1178,16 +1121,14 @@ void ScFiltersTest2::testTdf110440XLSX() xShape->getPropertyValue("Visible") >>= bVisible; // This failed: group shape's hidden property was lost on import. CPPUNIT_ASSERT(!bVisible); - - xDocSh->DoClose(); } void ScFiltersTest2::testBnc762542() { - ScDocShellRef xDocSh = loadDoc(u"bnc762542.", FORMAT_XLSX); + createScDoc("xlsx/bnc762542.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + ScDocument* pDoc = getScDoc(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); @@ -1204,34 +1145,28 @@ void ScFiltersTest2::testBnc762542() CPPUNIT_ASSERT_MESSAGE("Drawing object shouldn't be rotated.", aRect.GetWidth() > aRect.GetHeight()); } - - xDocSh->DoClose(); } void ScFiltersTest2::testHiddenSheetsXLSX() { - ScDocShellRef xDocSh = loadDoc(u"hidden_sheets.", FORMAT_XLSX); - - ScDocument& rDoc = xDocSh->GetDocument(); - CPPUNIT_ASSERT_EQUAL_MESSAGE("1st sheet should be hidden", false, rDoc.IsVisible(0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("2nd sheet should be visible", true, rDoc.IsVisible(1)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("3rd sheet should be hidden", false, rDoc.IsVisible(2)); + createScDoc("xlsx/hidden_sheets.xlsx"); - xDocSh->DoClose(); + ScDocument* pDoc = getScDoc(); + CPPUNIT_ASSERT_EQUAL_MESSAGE("1st sheet should be hidden", false, pDoc->IsVisible(0)); + CPPUNIT_ASSERT_EQUAL_MESSAGE("2nd sheet should be visible", true, pDoc->IsVisible(1)); + CPPUNIT_ASSERT_EQUAL_MESSAGE("3rd sheet should be hidden", false, pDoc->IsVisible(2)); } void ScFiltersTest2::testAutofilterXLSX() { - ScDocShellRef xDocSh = loadDoc(u"autofilter.", FORMAT_XLSX); + createScDoc("xlsx/autofilter.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); - const ScDBData* pData = rDoc.GetDBCollection()->GetDBNearCursor(0, 0, 0); + ScDocument* pDoc = getScDoc(); + const ScDBData* pData = pDoc->GetDBCollection()->GetDBNearCursor(0, 0, 0); CPPUNIT_ASSERT(pData); ScRange aRange; pData->GetArea(aRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 0, 0, 2, 4, 0), aRange); - - xDocSh->DoClose(); } namespace @@ -1252,307 +1187,277 @@ void checkValidationFormula(const ScAddress& rPos, const ScDocument& rDoc, void ScFiltersTest2::testRelFormulaValidationXLS() { - ScDocShellRef xDocSh = loadDoc(u"validation.", FORMAT_XLS); + createScDoc("xls/validation.xls"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - checkValidationFormula(ScAddress(3, 4, 0), rDoc, "C5"); - checkValidationFormula(ScAddress(5, 8, 0), rDoc, "D7"); - - xDocSh->DoClose(); + checkValidationFormula(ScAddress(3, 4, 0), *pDoc, "C5"); + checkValidationFormula(ScAddress(5, 8, 0), *pDoc, "D7"); } void ScFiltersTest2::testTdf136364() { - ScDocShellRef xDocSh = loadDoc(u"tdf136364.", FORMAT_XLSX); + createScDoc("xlsx/tdf136364.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Without the fix in place, it would have failed with // - Expected: =SUM((B2:B3~C4:C5~D6:D7)) // - Actual : =SUM((B2:B3~C4:C5,D6:D7)) - OUString aFormula = rDoc.GetFormula(4, 0, 0); + OUString aFormula = pDoc->GetFormula(4, 0, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM((B2:B3~C4:C5~D6:D7))"), aFormula); - CPPUNIT_ASSERT_EQUAL(27.0, rDoc.GetValue(ScAddress(4, 0, 0))); + CPPUNIT_ASSERT_EQUAL(27.0, pDoc->GetValue(ScAddress(4, 0, 0))); // - Expected: =SUM((B2~C4~D6)) // - Actual : =SUM((B2~C4,D6)) - aFormula = rDoc.GetFormula(4, 1, 0); + aFormula = pDoc->GetFormula(4, 1, 0); CPPUNIT_ASSERT_EQUAL(OUString("=SUM((B2~C4~D6))"), aFormula); - CPPUNIT_ASSERT_EQUAL(12.0, rDoc.GetValue(ScAddress(4, 1, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(12.0, pDoc->GetValue(ScAddress(4, 1, 0))); } void ScFiltersTest2::testTdf103734() { - ScDocShellRef xDocSh = loadDoc(u"tdf103734.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf103734.ods"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, MAX() would have returned -1.8E+308 - CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), rDoc.GetString(ScAddress(2, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), pDoc->GetString(ScAddress(2, 0, 0))); } void ScFiltersTest2::testTdf126116() { - ScDocShellRef xDocSh = loadDoc(u"tdf126116.", FORMAT_FODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("fods/tdf126116.fods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("02/02/21"), rDoc.GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("02/02/21"), pDoc->GetString(ScAddress(0, 0, 0))); - rDoc.SetString(ScAddress(0, 0, 0), "03/03"); + pDoc->SetString(ScAddress(0, 0, 0), "03/03"); - sal_uInt32 nNumberFormat = rDoc.GetNumberFormat(0, 0, 0); - const SvNumberformat* pNumberFormat = rDoc.GetFormatTable()->GetEntry(nNumberFormat); + sal_uInt32 nNumberFormat = pDoc->GetNumberFormat(0, 0, 0); + const SvNumberformat* pNumberFormat = pDoc->GetFormatTable()->GetEntry(nNumberFormat); const OUString& rFormatStr = pNumberFormat->GetFormatstring(); // Without the fix in place, this test would have failed with // - Expected: MM/DD/YY // - Actual : MM/DD/YYYY CPPUNIT_ASSERT_EQUAL(OUString("MM/DD/YY"), rFormatStr); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf144209() { - ScDocShellRef xDocSh = loadDoc(u"tdf144209.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf144209.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("AA 0"), rDoc.GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("AA 0"), pDoc->GetString(ScAddress(0, 0, 0))); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); // Without the fix in place, this test would have failed with // - Expected: AA 33263342642.5385 // - Actual : AA 0 - CPPUNIT_ASSERT_EQUAL(OUString("AA 33263342642.5385"), rDoc.GetString(ScAddress(0, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("AA 33263342642.5385"), pDoc->GetString(ScAddress(0, 0, 0))); } void ScFiltersTest2::testTdf98844() { - ScDocShellRef xDocSh = loadDoc(u"tdf98844.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf98844.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(47.6227, rDoc.GetValue(ScAddress(0, 7, 0))); - CPPUNIT_ASSERT_EQUAL(48.0, rDoc.GetValue(ScAddress(0, 8, 0))); + CPPUNIT_ASSERT_EQUAL(47.6227, pDoc->GetValue(ScAddress(0, 7, 0))); + CPPUNIT_ASSERT_EQUAL(48.0, pDoc->GetValue(ScAddress(0, 8, 0))); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); // Without the fix in place, SUM() wouldn't have been updated when // Precision as shown is enabled - CPPUNIT_ASSERT_EQUAL(48.0, rDoc.GetValue(ScAddress(0, 7, 0))); - CPPUNIT_ASSERT_EQUAL(48.0, rDoc.GetValue(ScAddress(0, 8, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(48.0, pDoc->GetValue(ScAddress(0, 7, 0))); + CPPUNIT_ASSERT_EQUAL(48.0, pDoc->GetValue(ScAddress(0, 8, 0))); } void ScFiltersTest2::testTdf100458() { - ScDocShellRef xDocSh = loadDoc(u"tdf100458_lost_zero_value.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); - CPPUNIT_ASSERT(rDoc.HasValueData(0, 0, 0)); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(0, 0, 0)); - CPPUNIT_ASSERT(!rDoc.HasStringData(0, 0, 0)); - xDocSh->DoClose(); + createScDoc("ods/tdf100458_lost_zero_value.ods"); + ScDocument* pDoc = getScDoc(); + CPPUNIT_ASSERT(pDoc->HasValueData(0, 0, 0)); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(0, 0, 0)); + CPPUNIT_ASSERT(!pDoc->HasStringData(0, 0, 0)); } void ScFiltersTest2::testTdf118561() { - ScDocShellRef xDocSh = loadDoc(u"tdf118561.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf118561.ods"); + ScDocument* pDoc = getScDoc(); //Without the fix in place, it would have failed with //- Expected: apple //- Actual : Err:502 - CPPUNIT_ASSERT_EQUAL(OUString("apple"), rDoc.GetString(ScAddress(1, 1, 1))); - CPPUNIT_ASSERT_EQUAL(OUString("apple"), rDoc.GetString(ScAddress(2, 1, 1))); - CPPUNIT_ASSERT_EQUAL(OUString("TRUE"), rDoc.GetString(ScAddress(3, 1, 1))); - CPPUNIT_ASSERT_EQUAL(OUString("fruits"), rDoc.GetString(ScAddress(4, 1, 1))); - CPPUNIT_ASSERT_EQUAL(OUString("apple"), rDoc.GetString(ScAddress(5, 1, 1))); - CPPUNIT_ASSERT_EQUAL(OUString("hat"), rDoc.GetString(ScAddress(6, 1, 1))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("apple"), pDoc->GetString(ScAddress(1, 1, 1))); + CPPUNIT_ASSERT_EQUAL(OUString("apple"), pDoc->GetString(ScAddress(2, 1, 1))); + CPPUNIT_ASSERT_EQUAL(OUString("TRUE"), pDoc->GetString(ScAddress(3, 1, 1))); + CPPUNIT_ASSERT_EQUAL(OUString("fruits"), pDoc->GetString(ScAddress(4, 1, 1))); + CPPUNIT_ASSERT_EQUAL(OUString("apple"), pDoc->GetString(ScAddress(5, 1, 1))); + CPPUNIT_ASSERT_EQUAL(OUString("hat"), pDoc->GetString(ScAddress(6, 1, 1))); } void ScFiltersTest2::testTdf125099() { - ScDocShellRef xDocSh = loadDoc(u"tdf125099.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf125099.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("03:53:46"), rDoc.GetString(ScAddress(0, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("03:23:59"), rDoc.GetString(ScAddress(0, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("03:53:46"), pDoc->GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("03:23:59"), pDoc->GetString(ScAddress(0, 1, 0))); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); - CPPUNIT_ASSERT_EQUAL(OUString("03:53:46"), rDoc.GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("03:53:46"), pDoc->GetString(ScAddress(0, 0, 0))); // Without the fix in place, this would have failed with // - Expected: 03:24:00 // - Actual : 03:23:59 - CPPUNIT_ASSERT_EQUAL(OUString("03:24:00"), rDoc.GetString(ScAddress(0, 1, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("03:24:00"), pDoc->GetString(ScAddress(0, 1, 0))); } void ScFiltersTest2::testTdf134455() { - ScDocShellRef xDocSh = loadDoc(u"tdf134455.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf134455.xlsx"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("00:05"), rDoc.GetString(ScAddress(3, 4, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("00:10"), rDoc.GetString(ScAddress(3, 5, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("00:59"), rDoc.GetString(ScAddress(3, 6, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("00:05"), pDoc->GetString(ScAddress(3, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("00:10"), pDoc->GetString(ScAddress(3, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("00:59"), pDoc->GetString(ScAddress(3, 6, 0))); // Without the fix in place, TIMEVALUE would have returned Err:502 for values // greater than 59 - CPPUNIT_ASSERT_EQUAL(OUString("01:05"), rDoc.GetString(ScAddress(3, 7, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("04:00"), rDoc.GetString(ScAddress(3, 8, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("01:05"), pDoc->GetString(ScAddress(3, 7, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("04:00"), pDoc->GetString(ScAddress(3, 8, 0))); } void ScFiltersTest2::testTdf119533() { - ScDocShellRef xDocSh = loadDoc(u"tdf119533.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf119533.ods"); + ScDocument* pDoc = getScDoc(); // Without fix in place, this test would have failed with // - Expected: 0.5 // - Actual : 0.483333333333333 - CPPUNIT_ASSERT_EQUAL(OUString("0.5"), rDoc.GetString(ScAddress(4, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("0.5"), pDoc->GetString(ScAddress(4, 0, 0))); // Without fix in place, this test would have failed with // - Expected: 9.5 // - Actual : 9.51666666666667 - CPPUNIT_ASSERT_EQUAL(OUString("9.5"), rDoc.GetString(ScAddress(5, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("9.5"), pDoc->GetString(ScAddress(5, 0, 0))); } void ScFiltersTest2::testTdf127982() { - ScDocShellRef xDocSh = loadDoc(u"tdf127982.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf127982.ods"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, these cells would be empty - CPPUNIT_ASSERT_EQUAL(OUString("R1"), rDoc.GetString(ScAddress(3, 5, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R6"), rDoc.GetString(ScAddress(3, 6, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R7"), rDoc.GetString(ScAddress(3, 7, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R1"), pDoc->GetString(ScAddress(3, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R6"), pDoc->GetString(ScAddress(3, 6, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R7"), pDoc->GetString(ScAddress(3, 7, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R1"), rDoc.GetString(ScAddress(4, 5, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R6"), rDoc.GetString(ScAddress(4, 6, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R7"), rDoc.GetString(ScAddress(4, 7, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R1"), pDoc->GetString(ScAddress(4, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R6"), pDoc->GetString(ScAddress(4, 6, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R7"), pDoc->GetString(ScAddress(4, 7, 0))); // Without the fix in place, these cells would be empty - CPPUNIT_ASSERT_EQUAL(OUString("R1"), rDoc.GetString(ScAddress(4, 5, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R6"), rDoc.GetString(ScAddress(4, 6, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("R7"), rDoc.GetString(ScAddress(4, 7, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("R1"), pDoc->GetString(ScAddress(4, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R6"), pDoc->GetString(ScAddress(4, 6, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("R7"), pDoc->GetString(ScAddress(4, 7, 0))); } void ScFiltersTest2::testTdf109409() { - ScDocShellRef xDocSh = loadDoc(u"tdf109409.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf109409.ods"); + ScDocument* pDoc = getScDoc(); // TEXTJOIN - CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), rDoc.GetString(ScAddress(3, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), rDoc.GetString(ScAddress(3, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("A1;A2;A3;B1;B2;B3"), rDoc.GetString(ScAddress(3, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), pDoc->GetString(ScAddress(3, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), pDoc->GetString(ScAddress(3, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1;A2;A3;B1;B2;B3"), pDoc->GetString(ScAddress(3, 4, 0))); // Without the fix in place, it would have failed with //- Expected: A1;B1;A2;B2;A3;B3 //- Actual : A1;A2;A3;B1;B2;B3 - CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), rDoc.GetString(ScAddress(3, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1;B1;A2;B2;A3;B3"), pDoc->GetString(ScAddress(3, 5, 0))); // CONCAT - CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), rDoc.GetString(ScAddress(6, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), rDoc.GetString(ScAddress(6, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("A1A2A3B1B2B3"), rDoc.GetString(ScAddress(6, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), pDoc->GetString(ScAddress(6, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), pDoc->GetString(ScAddress(6, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("A1A2A3B1B2B3"), pDoc->GetString(ScAddress(6, 4, 0))); // Without the fix in place, it would have failed with //- Expected: A1B1A2B2A3B3 //- Actual : A1A2A3B1B2B3 - CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), rDoc.GetString(ScAddress(6, 5, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("A1B1A2B2A3B3"), pDoc->GetString(ScAddress(6, 5, 0))); } void ScFiltersTest2::testTdf132105() { - ScDocShellRef xDocSh = loadDoc(u"tdf132105.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf132105.ods"); + ScDocument* pDoc = getScDoc(); // MATCH - CPPUNIT_ASSERT_EQUAL(OUString("5"), rDoc.GetString(ScAddress(0, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("5"), rDoc.GetString(ScAddress(1, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("5"), pDoc->GetString(ScAddress(0, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("5"), pDoc->GetString(ScAddress(1, 1, 0))); // COUNT - CPPUNIT_ASSERT_EQUAL(OUString("0"), rDoc.GetString(ScAddress(0, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("20"), rDoc.GetString(ScAddress(1, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(0, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("20"), pDoc->GetString(ScAddress(1, 2, 0))); // COUNTA - CPPUNIT_ASSERT_EQUAL(OUString("20"), rDoc.GetString(ScAddress(0, 3, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("20"), rDoc.GetString(ScAddress(1, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("20"), pDoc->GetString(ScAddress(0, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("20"), pDoc->GetString(ScAddress(1, 3, 0))); // COUNTBLANK // Without the fix in place, it would have failed with // - Expected: 0 //- Actual : Err:504 - CPPUNIT_ASSERT_EQUAL(OUString("0"), rDoc.GetString(ScAddress(0, 4, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("0"), rDoc.GetString(ScAddress(1, 4, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(0, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("0"), pDoc->GetString(ScAddress(1, 4, 0))); } void ScFiltersTest2::testTdf131424() { - ScDocShellRef xDocSh = loadDoc(u"tdf131424.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf131424.xlsx"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, table reference would have failed - CPPUNIT_ASSERT_EQUAL(35.0, rDoc.GetValue(ScAddress(2, 1, 0))); - CPPUNIT_ASSERT_EQUAL(58.0, rDoc.GetValue(ScAddress(2, 2, 0))); - CPPUNIT_ASSERT_EQUAL(81.0, rDoc.GetValue(ScAddress(2, 3, 0))); - CPPUNIT_ASSERT_EQUAL(104.0, rDoc.GetValue(ScAddress(2, 4, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(35.0, pDoc->GetValue(ScAddress(2, 1, 0))); + CPPUNIT_ASSERT_EQUAL(58.0, pDoc->GetValue(ScAddress(2, 2, 0))); + CPPUNIT_ASSERT_EQUAL(81.0, pDoc->GetValue(ScAddress(2, 3, 0))); + CPPUNIT_ASSERT_EQUAL(104.0, pDoc->GetValue(ScAddress(2, 4, 0))); } void ScFiltersTest2::testTdf100709XLSX() { - ScDocShellRef xDocSh = ScBootstrapFixture::loadDoc(u"tdf100709.", FORMAT_XLSX); + createScDoc("xlsx/tdf100709.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); CPPUNIT_ASSERT_EQUAL_MESSAGE("Cell B52 should not be formatted with a $", OUString("218"), - rDoc.GetString(1, 51, 0)); + pDoc->GetString(1, 51, 0)); CPPUNIT_ASSERT_EQUAL_MESSAGE("Cell A75 should not be formatted as a date", OUString("218"), - rDoc.GetString(0, 74, 0)); - - xDocSh->DoClose(); + pDoc->GetString(0, 74, 0)); } void ScFiltersTest2::testTdf97598XLSX() { - ScDocShellRef xDocSh = loadDoc(u"tdf97598_scenarios.", FORMAT_XLSX); + createScDoc("xlsx/tdf97598_scenarios.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); - OUString aStr = rDoc.GetString(0, 0, 0); // A1 + ScDocument* pDoc = getScDoc(); + OUString aStr = pDoc->GetString(0, 0, 0); // A1 CPPUNIT_ASSERT_EQUAL(OUString("Cell A1"), aStr); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf83672XLSX() { - ScDocShellRef xDocSh = loadDoc(u"tdf83672.", FORMAT_XLSX); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + createScDoc("xlsx/tdf83672.xlsx"); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); @@ -1560,7 +1465,6 @@ void ScFiltersTest2::testTdf83672XLSX() sal_Int32 nRotate = 0; xShapeProperties->getPropertyValue("RotateAngle") >>= nRotate; CPPUNIT_ASSERT(nRotate != 0); - xDocSh->DoClose(); } void ScFiltersTest2::testUnicodeFileNameGnumeric() @@ -1573,48 +1477,44 @@ void ScFiltersTest2::testUnicodeFileNameGnumeric() { return; } - ScDocShellRef xDocSh = loadDoc(u"t\u00E4\u00DFt.", FORMAT_GNUMERIC); - - xDocSh->DoClose(); + loadFromURL(u"gnumeric/t\u00E4\u00DFt.gnumeric"); } void ScFiltersTest2::testMergedCellsXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"merged-cells.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/merged-cells.xml"); + ScDocument* pDoc = getScDoc(); // B1:C1 is merged. ScRange aMergedRange(1, 0, 0); // B1 - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(1, 0, 0, 2, 0, 0), aMergedRange); // D1:F1 is merged. aMergedRange = ScRange(3, 0, 0); // D1 - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(3, 0, 0, 5, 0, 0), aMergedRange); // A2:A3 is merged. aMergedRange = ScRange(0, 1, 0); // A2 - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 1, 0, 0, 2, 0), aMergedRange); // A4:A6 is merged. aMergedRange = ScRange(0, 3, 0); // A4 - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 3, 0, 0, 5, 0), aMergedRange); // C3:F6 is merged. aMergedRange = ScRange(2, 2, 0); // C3 - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(2, 2, 0, 5, 5, 0), aMergedRange); - - xDocSh->DoClose(); } void ScFiltersTest2::testBackgroundColorStandardXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"background-color-standard.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/background-color-standard.xml"); + ScDocument* pDoc = getScDoc(); struct Check { @@ -1640,10 +1540,10 @@ void ScFiltersTest2::testBackgroundColorStandardXLSXML() for (size_t nRow = 0; nRow < aChecks.size(); ++nRow) { ScAddress aPos(0, nRow, 0); - OUString aStr = rDoc.GetString(aPos); + OUString aStr = pDoc->GetString(aPos); CPPUNIT_ASSERT_EQUAL(aChecks[nRow].aCellValue, aStr); - const ScPatternAttr* pPat = rDoc.GetPattern(aPos); + const ScPatternAttr* pPat = pDoc->GetPattern(aPos); CPPUNIT_ASSERT(pPat); const SvxColorItem& rColor = pPat->GetItem(ATTR_FONT_COLOR); @@ -1652,28 +1552,26 @@ void ScFiltersTest2::testBackgroundColorStandardXLSXML() const SvxBrushItem& rBgColor = pPat->GetItem(ATTR_BACKGROUND); CPPUNIT_ASSERT_EQUAL(aChecks[nRow].aBgColor, rBgColor.GetColor()); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf131536() { - ScDocShellRef xDocSh = loadDoc(u"tdf131536.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf131536.xlsx"); + ScDocument* pDoc = getScDoc(); ScAddress aPos(3, 9, 0); - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(aPos)); ASSERT_FORMULA_EQUAL( - rDoc, aPos, + *pDoc, aPos, "IF(D$4=\"-\",\"-\",MID(TEXT(INDEX($Comparison.$I:$J,$Comparison.$A5,$Comparison.D$2),\"\")" ",2,4)" "=RIGHT(TEXT(INDEX($Comparison.$L:$Z,$Comparison.$A5,$Comparison.D$4),\"\"),4))", nullptr); ScAddress aPos2(4, 9, 0); - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(aPos2)); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(aPos2)); ASSERT_FORMULA_EQUAL( - rDoc, aPos2, + *pDoc, aPos2, "IF(D$4=\"-\",\"-\",MID(TEXT(INDEX($Comparison.$I:$J,$Comparison.$A5,$Comparison.D$2)," "\"0\"),2,4)" "=RIGHT(TEXT(INDEX($Comparison.$L:$Z,$Comparison.$A5,$Comparison.D$4),\"0\"),4))", @@ -1682,58 +1580,58 @@ void ScFiltersTest2::testTdf131536() void ScFiltersTest2::testTdf130583() { - ScDocShellRef xDocSh = loadDoc(u"tdf130583.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf130583.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("b"), rDoc.GetString(ScAddress(1, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("c"), rDoc.GetString(ScAddress(1, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("a"), rDoc.GetString(ScAddress(1, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("d"), rDoc.GetString(ScAddress(1, 3, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), rDoc.GetString(ScAddress(1, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("b"), pDoc->GetString(ScAddress(1, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("c"), pDoc->GetString(ScAddress(1, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(1, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("d"), pDoc->GetString(ScAddress(1, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), pDoc->GetString(ScAddress(1, 4, 0))); // Without the fix in place, SWITCH would have returned #VALUE! - CPPUNIT_ASSERT_EQUAL(OUString("b"), rDoc.GetString(ScAddress(4, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("c"), rDoc.GetString(ScAddress(4, 1, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("a"), rDoc.GetString(ScAddress(4, 2, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("d"), rDoc.GetString(ScAddress(4, 3, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), rDoc.GetString(ScAddress(4, 4, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("b"), pDoc->GetString(ScAddress(4, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("c"), pDoc->GetString(ScAddress(4, 1, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("a"), pDoc->GetString(ScAddress(4, 2, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("d"), pDoc->GetString(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("#N/A"), pDoc->GetString(ScAddress(4, 4, 0))); } void ScFiltersTest2::testTdf85617() { - ScDocShellRef xDocSh = loadDoc(u"tdf85617.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf85617.xlsx"); + ScDocument* pDoc = getScDoc(); ScAddress aPos(2, 2, 0); //Without the fix in place, it would be Err:509 - CPPUNIT_ASSERT_EQUAL(4.5, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(4.5, pDoc->GetValue(aPos)); } void ScFiltersTest2::testTdf134234() { - ScDocShellRef xDocSh = loadDoc(u"tdf134234.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf134234.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(ScAddress(1, 0, 1))); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(1, 0, 1))); //Without the fix in place, SUMPRODUCT would have returned 0 - CPPUNIT_ASSERT_EQUAL(36.54, rDoc.GetValue(ScAddress(2, 0, 1))); + CPPUNIT_ASSERT_EQUAL(36.54, pDoc->GetValue(ScAddress(2, 0, 1))); CPPUNIT_ASSERT_EQUAL(sal_uInt32(833), - static_cast<sal_uInt32>(rDoc.GetValue(ScAddress(3, 0, 1)))); + static_cast<sal_uInt32>(pDoc->GetValue(ScAddress(3, 0, 1)))); } void ScFiltersTest2::testTdf42481() { - ScDocShellRef xDocSh = loadDoc(u"tdf42481.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf42481.ods"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(OUString("#VALUE!"), rDoc.GetString(ScAddress(3, 9, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("#VALUE!"), pDoc->GetString(ScAddress(3, 9, 0))); // Without the fix in place, this test would have failed with // - Expected: #VALUE! // - Actual : 14 - CPPUNIT_ASSERT_EQUAL(OUString("#VALUE!"), rDoc.GetString(ScAddress(3, 10, 0))); - CPPUNIT_ASSERT_EQUAL(OUString("14"), rDoc.GetString(ScAddress(3, 11, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("#VALUE!"), pDoc->GetString(ScAddress(3, 10, 0))); + CPPUNIT_ASSERT_EQUAL(OUString("14"), pDoc->GetString(ScAddress(3, 11, 0))); } void ScFiltersTest2::testNamedExpressionsXLSXML() @@ -1741,60 +1639,56 @@ void ScFiltersTest2::testNamedExpressionsXLSXML() { // global named expressions - ScDocShellRef xDocSh = loadDoc(u"named-exp-global.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/named-exp-global.xml"); + ScDocument* pDoc = getScDoc(); // A7 ScAddress aPos(0, 6, 0); - CPPUNIT_ASSERT_EQUAL(15.0, rDoc.GetValue(aPos)); - ASSERT_FORMULA_EQUAL(rDoc, aPos, "SUM(MyRange)", nullptr); + CPPUNIT_ASSERT_EQUAL(15.0, pDoc->GetValue(aPos)); + ASSERT_FORMULA_EQUAL(*pDoc, aPos, "SUM(MyRange)", nullptr); // B7 aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(55.0, rDoc.GetValue(aPos)); - ASSERT_FORMULA_EQUAL(rDoc, aPos, "SUM(MyRange2)", nullptr); + CPPUNIT_ASSERT_EQUAL(55.0, pDoc->GetValue(aPos)); + ASSERT_FORMULA_EQUAL(*pDoc, aPos, "SUM(MyRange2)", nullptr); - const ScRangeData* pRD = rDoc.GetRangeName()->findByUpperName("MYRANGE"); + const ScRangeData* pRD = pDoc->GetRangeName()->findByUpperName("MYRANGE"); CPPUNIT_ASSERT(pRD); - pRD = rDoc.GetRangeName()->findByUpperName("MYRANGE2"); + pRD = pDoc->GetRangeName()->findByUpperName("MYRANGE2"); CPPUNIT_ASSERT(pRD); - - xDocSh->DoClose(); } { // sheet-local named expressions - ScDocShellRef xDocSh = loadDoc(u"named-exp-local.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/named-exp-local.xml"); + ScDocument* pDoc = getScDoc(); // A7 on Sheet1 ScAddress aPos(0, 6, 0); - CPPUNIT_ASSERT_EQUAL(27.0, rDoc.GetValue(aPos)); - ASSERT_FORMULA_EQUAL(rDoc, aPos, "SUM(MyRange)", nullptr); + CPPUNIT_ASSERT_EQUAL(27.0, pDoc->GetValue(aPos)); + ASSERT_FORMULA_EQUAL(*pDoc, aPos, "SUM(MyRange)", nullptr); // A7 on Sheet2 aPos.IncTab(); - CPPUNIT_ASSERT_EQUAL(74.0, rDoc.GetValue(aPos)); - ASSERT_FORMULA_EQUAL(rDoc, aPos, "SUM(MyRange)", nullptr); + CPPUNIT_ASSERT_EQUAL(74.0, pDoc->GetValue(aPos)); + ASSERT_FORMULA_EQUAL(*pDoc, aPos, "SUM(MyRange)", nullptr); - const ScRangeName* pRN = rDoc.GetRangeName(0); + const ScRangeName* pRN = pDoc->GetRangeName(0); CPPUNIT_ASSERT(pRN); const ScRangeData* pRD = pRN->findByUpperName("MYRANGE"); CPPUNIT_ASSERT(pRD); - pRN = rDoc.GetRangeName(1); + pRN = pDoc->GetRangeName(1); CPPUNIT_ASSERT(pRN); pRD = pRN->findByUpperName("MYRANGE"); CPPUNIT_ASSERT(pRD); - - xDocSh->DoClose(); } } void ScFiltersTest2::testEmptyRowsXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"empty-rows.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/empty-rows.xml"); + ScDocument* pDoc = getScDoc(); { // Expected output table content. 0 = empty cell @@ -1811,22 +1705,20 @@ void ScFiltersTest2::testEmptyRowsXLSXML() }; ScRange aDataRange; - aDataRange.Parse("A1:B9", rDoc); - bool bSuccess = checkOutput(&rDoc, aDataRange, aOutputCheck, "Expected output"); + aDataRange.Parse("A1:B9", *pDoc); + bool bSuccess = checkOutput(pDoc, aDataRange, aOutputCheck, "Expected output"); CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess); } ScAddress aPos; - aPos.Parse("B9", rDoc); - ASSERT_FORMULA_EQUAL(rDoc, aPos, "SUM(B4:B8)", nullptr); - - xDocSh->DoClose(); + aPos.Parse("B9", *pDoc); + ASSERT_FORMULA_EQUAL(*pDoc, aPos, "SUM(B4:B8)", nullptr); } void ScFiltersTest2::testBorderDirectionsXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"border-directions.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/border-directions.xml"); + ScDocument* pDoc = getScDoc(); struct Check { @@ -1884,7 +1776,7 @@ void ScFiltersTest2::testBorderDirectionsXLSXML() for (const Check& c : aChecks) { - const ScPatternAttr* pPat = rDoc.GetPattern(c.aPos); + const ScPatternAttr* pPat = pDoc->GetPattern(c.aPos); CPPUNIT_ASSERT(pPat); const SvxBoxItem& rBox = pPat->GetItem(ATTR_BORDER); @@ -1907,17 +1799,15 @@ void ScFiltersTest2::testBorderDirectionsXLSXML() pLine = pPat->GetItem(ATTR_BORDER_BLTR).GetLine(); CPPUNIT_ASSERT(funcCheckBorder(c.bTRtoBL, pLine)); } - - xDocSh->DoClose(); } void ScFiltersTest2::testBorderColorsXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"border-colors.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/border-colors.xml"); + ScDocument* pDoc = getScDoc(); // B3 - red - const ScPatternAttr* pPat = rDoc.GetPattern(ScAddress(1, 2, 0)); + const ScPatternAttr* pPat = pDoc->GetPattern(ScAddress(1, 2, 0)); CPPUNIT_ASSERT(pPat); const editeng::SvxBorderLine* pLine = pPat->GetItem(ATTR_BORDER).GetRight(); CPPUNIT_ASSERT(pLine); @@ -1925,7 +1815,7 @@ void ScFiltersTest2::testBorderColorsXLSXML() CPPUNIT_ASSERT_EQUAL(Color(255, 0, 0), pLine->GetColor()); // B4 - blue - pPat = rDoc.GetPattern(ScAddress(1, 3, 0)); + pPat = pDoc->GetPattern(ScAddress(1, 3, 0)); CPPUNIT_ASSERT(pPat); pLine = pPat->GetItem(ATTR_BORDER).GetRight(); CPPUNIT_ASSERT(pLine); @@ -1933,7 +1823,7 @@ void ScFiltersTest2::testBorderColorsXLSXML() CPPUNIT_ASSERT_EQUAL(Color(0, 112, 192), pLine->GetColor()); // B5 - green - pPat = rDoc.GetPattern(ScAddress(1, 4, 0)); + pPat = pDoc->GetPattern(ScAddress(1, 4, 0)); CPPUNIT_ASSERT(pPat); pLine = pPat->GetItem(ATTR_BORDER).GetRight(); CPPUNIT_ASSERT(pLine); @@ -1941,7 +1831,7 @@ void ScFiltersTest2::testBorderColorsXLSXML() CPPUNIT_ASSERT_EQUAL(Color(0, 176, 80), pLine->GetColor()); // B7 - yellow (left), purple (right), light blue (cross) - pPat = rDoc.GetPattern(ScAddress(1, 6, 0)); + pPat = pDoc->GetPattern(ScAddress(1, 6, 0)); CPPUNIT_ASSERT(pPat); pLine = pPat->GetItem(ATTR_BORDER).GetLeft(); @@ -1963,14 +1853,12 @@ void ScFiltersTest2::testBorderColorsXLSXML() CPPUNIT_ASSERT(pLine); CPPUNIT_ASSERT_EQUAL(SvxBorderLineStyle::SOLID, pLine->GetBorderLineStyle()); CPPUNIT_ASSERT_EQUAL(Color(0, 176, 240), pLine->GetColor()); // light blue - - xDocSh->DoClose(); } void ScFiltersTest2::testHiddenRowsColumnsXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"hidden-rows-columns.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/hidden-rows-columns.xml"); + ScDocument* pDoc = getScDoc(); struct Check { @@ -1986,13 +1874,13 @@ void ScFiltersTest2::testHiddenRowsColumnsXLSXML() { 4, 4, false }, { 5, 7, true }, { 8, 8, false }, - { 9, rDoc.MaxRow(), true }, + { 9, pDoc->MaxRow(), true }, }; for (const Check& c : aRowChecks) { SCROW nRow1 = -1, nRow2 = -1; - bool bVisible = !rDoc.RowHidden(c.nPos1, 0, &nRow1, &nRow2); + bool bVisible = !pDoc->RowHidden(c.nPos1, 0, &nRow1, &nRow2); CPPUNIT_ASSERT_EQUAL(bVisible, c.bVisible); CPPUNIT_ASSERT_EQUAL(c.nPos1, nRow1); CPPUNIT_ASSERT_EQUAL(c.nPos2, nRow2); @@ -2003,25 +1891,23 @@ void ScFiltersTest2::testHiddenRowsColumnsXLSXML() { 2, 5, false }, { 6, 9, true }, { 10, 10, false }, - { 11, rDoc.MaxCol(), true }, + { 11, pDoc->MaxCol(), true }, }; for (const Check& c : aColChecks) { SCCOL nCol1 = -1, nCol2 = -1; - bool bVisible = !rDoc.ColHidden(c.nPos1, 1, &nCol1, &nCol2); + bool bVisible = !pDoc->ColHidden(c.nPos1, 1, &nCol1, &nCol2); CPPUNIT_ASSERT_EQUAL(bVisible, c.bVisible); CPPUNIT_ASSERT_EQUAL(c.nPos1, SCCOLROW(nCol1)); CPPUNIT_ASSERT_EQUAL(c.nPos2, SCCOLROW(nCol2)); } - - xDocSh->DoClose(); } void ScFiltersTest2::testColumnWidthRowHeightXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"column-width-row-height.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/column-width-row-height.xml"); + ScDocument* pDoc = getScDoc(); struct RowHeight { @@ -2038,7 +1924,7 @@ void ScFiltersTest2::testColumnWidthRowHeightXLSXML() { for (SCROW i = rh.nRow1; i <= rh.nRow2; ++i) { - sal_uInt16 nHeight = rDoc.GetRowHeight(i, 0); + sal_uInt16 nHeight = pDoc->GetRowHeight(i, 0); CPPUNIT_ASSERT_EQUAL(sal_uInt16(rh.nHeight * 20), nHeight); } } @@ -2058,23 +1944,21 @@ void ScFiltersTest2::testColumnWidthRowHeightXLSXML() { for (SCCOL i = cw.nCol1; i <= cw.nCol2; ++i) { - sal_uInt16 nWidth = rDoc.GetColWidth(i, 0); + sal_uInt16 nWidth = pDoc->GetColWidth(i, 0); CPPUNIT_ASSERT_EQUAL(sal_uInt16(cw.nWidth * 20), nWidth); } } - - xDocSh->DoClose(); } void ScFiltersTest2::testCharacterSetXLSXML() { - ScDocShellRef xDocSh = loadDoc(u"character-set.", FORMAT_XLS_XML); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xml/character-set.xml"); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(SCTAB(1), rDoc.GetTableCount()); + CPPUNIT_ASSERT_EQUAL(SCTAB(1), pDoc->GetTableCount()); OUString aName; - rDoc.GetName(0, aName); + pDoc->GetName(0, aName); // Check the sheet name. The values are all Cyrillic letters. std::vector<sal_Unicode> aBuf = { 0x041b, 0x0438, 0x0441, 0x0442, 0x0031 }; @@ -2082,58 +1966,51 @@ void ScFiltersTest2::testCharacterSetXLSXML() CPPUNIT_ASSERT_EQUAL(aExpected, aName); // Check the value of I4 - OUString aVal = rDoc.GetString(ScAddress(8, 3, 0)); + OUString aVal = pDoc->GetString(ScAddress(8, 3, 0)); aBuf = { 0x0421, 0x0443, 0x043c, 0x043c, 0x0430 }; aExpected = OUString(aBuf.data(), aBuf.size()); CPPUNIT_ASSERT_EQUAL(aExpected, aVal); // Check the value of J3 - aVal = rDoc.GetString(ScAddress(9, 2, 0)); + aVal = pDoc->GetString(ScAddress(9, 2, 0)); aBuf = { 0x041e, 0x0441, 0x0442, 0x0430, 0x0442, 0x043e, 0x043a }; aExpected = OUString(aBuf.data(), aBuf.size()); CPPUNIT_ASSERT_EQUAL(aExpected, aVal); - - xDocSh->DoClose(); } void ScFiltersTest2::testCondFormatXLSB() { - ScDocShellRef xDocSh = loadDoc(u"cond_format.", FORMAT_XLSB); + createScDoc("xlsb/cond_format.xlsb"); - ScDocument& rDoc = xDocSh->GetDocument(); - ScConditionalFormatList* pList = rDoc.GetCondFormList(0); + ScDocument* pDoc = getScDoc(); + ScConditionalFormatList* pList = pDoc->GetCondFormList(0); CPPUNIT_ASSERT(pList); CPPUNIT_ASSERT_EQUAL(size_t(1), pList->size()); ScConditionalFormat* pFormat = pList->begin()->get(); CPPUNIT_ASSERT(pFormat); CPPUNIT_ASSERT_EQUAL(size_t(1), pFormat->size()); - - xDocSh->DoClose(); } void ScFiltersTest2::testPageScalingXLSX() { - ScDocShellRef xDocSh = loadDoc(u"page_scale.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/page_scale.xlsx"); + ScDocument* pDoc = getScDoc(); - OUString aStyleName = rDoc.GetPageStyle(0); - ScStyleSheetPool* pStylePool = rDoc.GetStyleSheetPool(); + OUString aStyleName = pDoc->GetPageStyle(0); + ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool(); SfxStyleSheetBase* pStyleSheet = pStylePool->Find(aStyleName, SfxStyleFamily::Page); CPPUNIT_ASSERT(pStyleSheet); SfxItemSet& rSet = pStyleSheet->GetItemSet(); sal_uInt16 nVal = rSet.Get(ATTR_PAGE_SCALE).GetValue(); CPPUNIT_ASSERT_EQUAL(sal_uInt16(90), nVal); - - xDocSh->DoClose(); } void ScFiltersTest2::testActiveXCheckboxXLSX() { - ScDocShellRef xDocSh = loadDoc(u"activex_checkbox.", FORMAT_XLSX); - uno::Reference<frame::XModel> xModel = xDocSh->GetModel(); - uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, UNO_QUERY_THROW); + createScDoc("xlsx/activex_checkbox.xlsx"); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIA->getByIndex(0), UNO_QUERY_THROW); @@ -2166,15 +2043,12 @@ void ScFiltersTest2::testActiveXCheckboxXLSX() sal_Int16 nState; xPropertySet->getPropertyValue("State") >>= nState; CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nState); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf60673() { - ScDocShellRef xDocSh = loadDoc(u"tdf60673.", FORMAT_XLSX); - uno::Reference<frame::XModel> xModel = xDocSh->GetModel(); - uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, UNO_QUERY_THROW); + createScDoc("xlsx/tdf60673.xlsx"); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIA->getByIndex(0), UNO_QUERY_THROW); @@ -2196,9 +2070,8 @@ void ScFiltersTest2::testTdf60673() void ScFiltersTest2::testtdf120301_xmlSpaceParsingXLSX() { - ScDocShellRef xDocSh = loadDoc(u"tdf120301_xmlSpaceParsing.", FORMAT_XLSX); - uno::Reference<frame::XModel> xModel = xDocSh->GetModel(); - uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, UNO_QUERY_THROW); + createScDoc("xlsx/tdf120301_xmlSpaceParsing.xlsx"); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), UNO_QUERY_THROW); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIA->getByIndex(0), UNO_QUERY_THROW); @@ -2211,7 +2084,6 @@ void ScFiltersTest2::testtdf120301_xmlSpaceParsingXLSX() OUString sCaption; XPropSet->getPropertyValue("Label") >>= sCaption; CPPUNIT_ASSERT_EQUAL(OUString("Check Box 1"), sCaption); - xDocSh->DoClose(); } namespace @@ -2236,22 +2108,21 @@ struct PaintListener : public SfxListener void ScFiltersTest2::testCondFormatFormulaListenerXLSX() { - ScDocShellRef xDocSh = loadDoc(u"cond_format_formula_listener.", FORMAT_XLSX); + createScDoc("xlsx/cond_format_formula_listener.xlsx"); + ScDocShell* pDocSh = getScDocShell(); PaintListener aListener; - aListener.StartListening(*xDocSh); - ScDocument& rDoc = xDocSh->GetDocument(); - ScConditionalFormatList* pList = rDoc.GetCondFormList(0); + aListener.StartListening(*pDocSh); + ScDocument* pDoc = getScDoc(); + ScConditionalFormatList* pList = pDoc->GetCondFormList(0); CPPUNIT_ASSERT(pList); CPPUNIT_ASSERT_EQUAL(size_t(1), pList->size()); ScConditionalFormat* pFormat = pList->begin()->get(); CPPUNIT_ASSERT(pFormat); - rDoc.SetDocVisible(true); - rDoc.SetValue(0, 0, 0, 2.0); + pDoc->SetDocVisible(true); + pDoc->SetValue(0, 0, 0, 2.0); CPPUNIT_ASSERT(aListener.mbCalled); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf137091() @@ -2266,14 +2137,13 @@ void ScFiltersTest2::testTdf137091() aOptions.Commit(); }); - ScDocShellRef xDocSh = loadDoc(u"tdf137091.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf137091.xlsx"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: 28/4 // - Actual : Err:507 - CPPUNIT_ASSERT_EQUAL(OUString("28/4"), rDoc.GetString(ScAddress(2, 1, 0))); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("28/4"), pDoc->GetString(ScAddress(2, 1, 0))); } void ScFiltersTest2::testTdf141495() @@ -2288,162 +2158,146 @@ void ScFiltersTest2::testTdf141495() aOptions.Commit(); }); - ScDocShellRef xDocSh = loadDoc(u"tdf141495.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf141495.xlsx"); + ScDocument* pDoc = getScDoc(); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); // Without the fix in place, this test would have failed with - // - Expected: 44956 + // - Expected: 44926 // - Actual : #ADDIN? - CPPUNIT_ASSERT_EQUAL(OUString("44956"), rDoc.GetString(ScAddress(11, 6, 0))); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("44926"), pDoc->GetString(ScAddress(11, 6, 0))); } void ScFiltersTest2::testTdf70455() { - ScDocShellRef xDocSh = loadDoc(u"tdf70455.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf70455.xlsx"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: €780.00 // - Actual : Err:509 - CPPUNIT_ASSERT_EQUAL(OUString(u"€780.00"), rDoc.GetString(ScAddress(7, 7, 0))); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString(u"€780.00"), pDoc->GetString(ScAddress(7, 7, 0))); } void ScFiltersTest2::testTdf62268() { - ScDocShellRef xDocSh = loadDoc(u"tdf62268.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf62268.ods"); + ScDocument* pDoc = getScDoc(); int nHeight; SCTAB nTab = 0; - nHeight = rDoc.GetRowHeight(0, nTab, false); + nHeight = pDoc->GetRowHeight(0, nTab, false); CPPUNIT_ASSERT_LESSEQUAL(3, abs(256 - nHeight)); - nHeight = rDoc.GetRowHeight(1, nTab, false); + nHeight = pDoc->GetRowHeight(1, nTab, false); CPPUNIT_ASSERT_LESSEQUAL(19, abs(1905 - nHeight)); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf137453() { - ScDocShellRef xDocSh = loadDoc(u"tdf137453.", FORMAT_ODS); + createScDoc("ods/tdf137453.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: 3333333333/100 // - Actual : -961633963/100 - CPPUNIT_ASSERT_EQUAL(OUString("3333333333/100"), rDoc.GetString(ScAddress(0, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("3333333333/100"), pDoc->GetString(ScAddress(0, 0, 0))); } void ScFiltersTest2::testTdf112780() { - ScDocShellRef xDocSh = loadDoc(u"tdf112780.", FORMAT_ODS); + createScDoc("ods/tdf112780.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: // - Actual : #VALUE! - CPPUNIT_ASSERT_EQUAL(OUString(""), rDoc.GetString(ScAddress(3, 5, 0))); + CPPUNIT_ASSERT_EQUAL(OUString(""), pDoc->GetString(ScAddress(3, 5, 0))); - OUString aFormula = rDoc.GetFormula(3, 5, 0); + OUString aFormula = pDoc->GetFormula(3, 5, 0); CPPUNIT_ASSERT_EQUAL(OUString("=G6+J6+M6"), aFormula); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf72470() { // Without the fix in place, this test would have hung - ScDocShellRef xDocSh = loadDoc(u"tdf72470.", FORMAT_XLS); - - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xls/tdf72470.xls"); - CPPUNIT_ASSERT_EQUAL(OUString("name"), rDoc.GetString(ScAddress(0, 0, 0))); - CPPUNIT_ASSERT_EQUAL(OUString(u"أسمي walid"), rDoc.GetString(ScAddress(0, 1, 0))); + ScDocument* pDoc = getScDoc(); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(OUString("name"), pDoc->GetString(ScAddress(0, 0, 0))); + CPPUNIT_ASSERT_EQUAL(OUString(u"أسمي walid"), pDoc->GetString(ScAddress(0, 1, 0))); } void ScFiltersTest2::testTdf35636() { - ScDocShellRef xDocSh = loadDoc(u"tdf35636.", FORMAT_ODS); + createScDoc("ods/tdf35636.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Without the fix in place, SUMIF would have returned 0.0 // with empty cells in the criteria - CPPUNIT_ASSERT_EQUAL(50.0, rDoc.GetValue(ScAddress(1, 4, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(50.0, pDoc->GetValue(ScAddress(1, 4, 0))); } void ScFiltersTest2::testTdf98481() { - ScDocShellRef xDocSh = loadDoc(u"tdf98481.", FORMAT_XLSX); + createScDoc("xlsx/tdf98481.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: 4 // - Actual : 0 - CPPUNIT_ASSERT_EQUAL(4.0, rDoc.GetValue(ScAddress(4, 1, 0))); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(ScAddress(4, 2, 0))); - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(ScAddress(4, 3, 0))); - CPPUNIT_ASSERT_EQUAL(4.0, rDoc.GetValue(ScAddress(1, 4, 0))); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(ScAddress(2, 4, 0))); - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(ScAddress(3, 4, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(4, 1, 0))); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(4, 2, 0))); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(4, 3, 0))); + CPPUNIT_ASSERT_EQUAL(4.0, pDoc->GetValue(ScAddress(1, 4, 0))); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(ScAddress(2, 4, 0))); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(3, 4, 0))); } void ScFiltersTest2::testTdf115022() { - ScDocShellRef xDocSh = loadDoc(u"tdf115022.", FORMAT_XLSX); + createScDoc("xlsx/tdf115022.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_EQUAL(6.0, rDoc.GetValue(ScAddress(1, 8, 0))); + CPPUNIT_ASSERT_EQUAL(6.0, pDoc->GetValue(ScAddress(1, 8, 0))); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); // Without the fix in place, this test would have failed with // - Expected: 6 // - Actual : 21 - CPPUNIT_ASSERT_EQUAL(6.0, rDoc.GetValue(ScAddress(1, 8, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(6.0, pDoc->GetValue(ScAddress(1, 8, 0))); } void ScFiltersTest2::testVBAMacroFunctionODS() { - ScDocShellRef xDocSh = loadDoc(u"vba_macro_functions.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/vba_macro_functions.ods"); + ScDocument* pDoc = getScDoc(); - OUString aFunction = rDoc.GetFormula(2, 0, 0); + OUString aFunction = pDoc->GetFormula(2, 0, 0); std::cout << aFunction << std::endl; - CPPUNIT_ASSERT_DOUBLES_EQUAL(10.0, rDoc.GetValue(2, 0, 0), 1e-6); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_DOUBLES_EQUAL(10.0, pDoc->GetValue(2, 0, 0), 1e-6); } void ScFiltersTest2::testAutoheight2Rows() { - ScDocShellRef xDocSh = loadDoc(u"autoheight2rows.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/autoheight2rows.ods"); + ScDocument* pDoc = getScDoc(); SCTAB nTab = 0; - int nHeight1 = rDoc.GetRowHeight(0, nTab, false); - int nHeight2 = rDoc.GetRowHeight(1, nTab, false); - int nHeight4 = rDoc.GetRowHeight(3, nTab, false); - int nHeight5 = rDoc.GetRowHeight(4, nTab, false); + int nHeight1 = pDoc->GetRowHeight(0, nTab, false); + int nHeight2 = pDoc->GetRowHeight(1, nTab, false); + int nHeight4 = pDoc->GetRowHeight(3, nTab, false); + int nHeight5 = pDoc->GetRowHeight(4, nTab, false); // We will do relative comparison, because calculated autoheight // can be different on different platforms @@ -2451,53 +2305,45 @@ void ScFiltersTest2::testAutoheight2Rows() abs(nHeight1 - nHeight4) < 10); CPPUNIT_ASSERT_MESSAGE("Row #2 and row #5 must have same height after load & auto-adjust", abs(nHeight2 - nHeight5) < 10); - - xDocSh->DoClose(); } void ScFiltersTest2::testXLSDefColWidth() { // XLS has only 256 columns; but on import, we need to set default width to all above that limit - ScDocShellRef xDocSh = loadDoc(u"chartx.", FORMAT_XLS); // just some XLS with narrow columns - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xls/chartx.xls"); + ScDocument* pDoc = getScDoc(); - int nWidth = rDoc.GetColWidth(rDoc.MaxCol(), 0, false); + int nWidth = pDoc->GetColWidth(pDoc->MaxCol(), 0, false); // This was 1280 CPPUNIT_ASSERT_EQUAL(1005, nWidth); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf148423() { - ScDocShellRef xDocSh = loadDoc(u"tdf148423.", FORMAT_CSV); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("csv/tdf148423.csv"); + ScDocument* pDoc = getScDoc(); - int nWidth = rDoc.GetColWidth(0, 0, false); + int nWidth = pDoc->GetColWidth(0, 0, false); // Without the fix in place, this test would have failed with // - Expected: 32880 // - Actual : 112 CPPUNIT_ASSERT_EQUAL(32880, nWidth); - - xDocSh->DoClose(); } void ScFiltersTest2::testPreviewMissingObjLink() { - ScDocShellRef xDocSh = loadDoc(u"keep-preview-missing-obj-link.", FORMAT_ODS); + createScDoc("ods/keep-preview-missing-obj-link.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); // Retrieve the ole object - const SdrOle2Obj* pOleObj = getSingleOleObject(rDoc, 0); + const SdrOle2Obj* pOleObj = getSingleOleObject(*pDoc, 0); CPPUNIT_ASSERT_MESSAGE("Failed to retrieve an ole object from the 2nd sheet.", pOleObj); const Graphic* pGraphic = pOleObj->GetGraphic(); CPPUNIT_ASSERT_MESSAGE( "the ole object links to a missing file, but we should retain its preview", pGraphic); - - xDocSh->DoClose(); } void ScFiltersTest2::testShapeRotationImport() @@ -2506,8 +2352,8 @@ void ScFiltersTest2::testShapeRotationImport() return; // tdf#83593 Incorrectly calculated bounding rectangles caused shapes to appear as if there // were extra or missing rotations. Hence, we check the sizes of these rectangles. - ScDocShellRef xDocSh = loadDoc(u"testShapeRotationImport.", FORMAT_XLSX); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + createScDoc("xlsx/testShapeRotationImport.xlsx"); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); @@ -2551,9 +2397,9 @@ void ScFiltersTest2::testShapeRotationImport() void ScFiltersTest2::testShapeDisplacementOnRotationImport() { // tdf#135918 shape is displaced on rotation if it is placed next to the sheets upper/left edges - ScDocShellRef xDocSh = loadDoc(u"testShapeDisplacementOnRotationImport.", FORMAT_XLSX); + createScDoc("xlsx/testShapeDisplacementOnRotationImport.xlsx"); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); @@ -2568,9 +2414,9 @@ void ScFiltersTest2::testShapeDisplacementOnRotationImport() void ScFiltersTest2::testTextBoxBodyUpright() { // tdf#106197 We should import the "upright" attribute of txBody. - ScDocShellRef xDocSh = loadDoc(u"tdf106197_import_upright.", FORMAT_XLSX); + createScDoc("xlsx/tdf106197_import_upright.xlsx"); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); @@ -2611,9 +2457,9 @@ void ScFiltersTest2::testTextBoxBodyUpright() void ScFiltersTest2::testTextBoxBodyRotateAngle() { - ScDocShellRef xDocSh = loadDoc(u"tdf141644.", FORMAT_XLSX); + createScDoc("xlsx/tdf141644.xlsx"); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); @@ -2628,30 +2474,30 @@ void ScFiltersTest2::testTextBoxBodyRotateAngle() void ScFiltersTest2::testTextLengthDataValidityXLSX() { - ScDocShellRef xDocSh = loadDoc(u"textLengthDataValidity.", FORMAT_XLSX); + createScDoc("xlsx/textLengthDataValidity.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - const ScValidationData* pData = rDoc.GetValidationEntry(1); + const ScValidationData* pData = pDoc->GetValidationEntry(1); ScRefCellValue aCellA1; // A1 = 1234(numeric value) ScAddress aValBaseAddrA1(0, 0, 0); - aCellA1.assign(rDoc, aValBaseAddrA1); + aCellA1.assign(*pDoc, aValBaseAddrA1); bool bValidA1 = pData->IsDataValid(aCellA1, aValBaseAddrA1); ScRefCellValue aCellA2; // A2 = 1234(numeric value format as text) ScAddress aValBaseAddrA2(0, 1, 0); - aCellA2.assign(rDoc, aValBaseAddrA2); + aCellA2.assign(*pDoc, aValBaseAddrA2); bool bValidA2 = pData->IsDataValid(aCellA2, aValBaseAddrA2); ScRefCellValue aCellA3; // A3 = 1234.00(numeric value) ScAddress aValBaseAddrA3(0, 2, 0); - aCellA3.assign(rDoc, aValBaseAddrA3); + aCellA3.assign(*pDoc, aValBaseAddrA3); bool bValidA3 = pData->IsDataValid(aCellA3, aValBaseAddrA3); ScRefCellValue aCellA4; // A4 = 12.3(numeric value) ScAddress aValBaseAddrA4(0, 3, 0); - aCellA4.assign(rDoc, aValBaseAddrA4); + aCellA4.assign(*pDoc, aValBaseAddrA4); bool bValidA4 = pData->IsDataValid(aCellA4, aValBaseAddrA4); // True if text length = 4 @@ -2659,66 +2505,62 @@ void ScFiltersTest2::testTextLengthDataValidityXLSX() CPPUNIT_ASSERT_EQUAL(true, bValidA2); CPPUNIT_ASSERT_EQUAL(true, bValidA3); CPPUNIT_ASSERT_EQUAL(true, bValidA4); - - xDocSh->DoClose(); } void ScFiltersTest2::testDeleteCircles() { - ScDocShellRef xDocSh = loadDoc(u"testDeleteCircles.", FORMAT_XLSX); + createScDoc("xlsx/testDeleteCircles.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); ScRefCellValue aCellA1; // A1 = "Hello" ScAddress aPosA1(0, 0, 0); - aCellA1.assign(rDoc, aPosA1); + aCellA1.assign(*pDoc, aPosA1); // Mark invalid value bool bOverflow; - bool bMarkInvalid = ScDetectiveFunc(rDoc, 0).MarkInvalid(bOverflow); + bool bMarkInvalid = ScDetectiveFunc(*pDoc, 0).MarkInvalid(bOverflow); CPPUNIT_ASSERT_EQUAL(true, bMarkInvalid); // There should be a circle object! CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pPage->GetObjCount()); // The value of A1 change to Hello1. - rDoc.SetString(0, 0, 0, "Hello1"); + pDoc->SetString(0, 0, 0, "Hello1"); // Check that the data is valid.(True if text length = 6) - const ScValidationData* pData = rDoc.GetValidationEntry(1); + const ScValidationData* pData = pDoc->GetValidationEntry(1); bool bValidA1 = pData->IsDataValid(aCellA1, aPosA1); // if valid, delete circle. if (bValidA1) - ScDetectiveFunc(rDoc, 0).DeleteCirclesAt(aPosA1.Col(), aPosA1.Row()); + ScDetectiveFunc(*pDoc, 0).DeleteCirclesAt(aPosA1.Col(), aPosA1.Row()); // There should not be a circle object! CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pPage->GetObjCount()); - - xDocSh->DoClose(); } void ScFiltersTest2::testDrawCircleInMergeCells() { - ScDocShellRef xDocSh = loadDoc(u"testDrawCircleInMergeCells.", FORMAT_XLSX); + createScDoc("xlsx/testDrawCircleInMergeCells.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); // A1:B2 is merged. ScRange aMergedRange(0, 0, 0); - rDoc.ExtendTotalMerge(aMergedRange); + pDoc->ExtendTotalMerge(aMergedRange); CPPUNIT_ASSERT_EQUAL(ScRange(0, 0, 0, 1, 1, 0), aMergedRange); // Mark invalid value bool bOverflow; - bool bMarkInvalid = ScDetectiveFunc(rDoc, 0).MarkInvalid(bOverflow); + bool bMarkInvalid = ScDetectiveFunc(*pDoc, 0).MarkInvalid(bOverflow); CPPUNIT_ASSERT_EQUAL(true, bMarkInvalid); // There should be a circle object! @@ -2729,7 +2571,7 @@ void ScFiltersTest2::testDrawCircleInMergeCells() Point aStartCircle = aRect.TopLeft(); Point aEndCircle = aRect.BottomRight(); - tools::Rectangle aCellRect = rDoc.GetMMRect(0, 0, 1, 1, 0); + tools::Rectangle aCellRect = pDoc->GetMMRect(0, 0, 1, 1, 0); aCellRect.AdjustLeft(-250); aCellRect.AdjustRight(250); aCellRect.AdjustTop(-70); @@ -2743,7 +2585,7 @@ void ScFiltersTest2::testDrawCircleInMergeCells() CPPUNIT_ASSERT_EQUAL(aEndCell.Y(), aEndCircle.Y()); // Change the height of the first row. (556 ~ 1cm) - rDoc.SetRowHeight(0, 0, 556); + pDoc->SetRowHeight(0, 0, 556); ScDrawObjData* pData = ScDrawLayer::GetObjData(pObj); pDrawLayer->RecalcPos(pObj, *pData, false, false); @@ -2751,7 +2593,7 @@ void ScFiltersTest2::testDrawCircleInMergeCells() Point aStartRecalcCircle = aRecalcRect.TopLeft(); Point aEndRecalcCircle = aRecalcRect.BottomRight(); - tools::Rectangle aRecalcCellRect = rDoc.GetMMRect(0, 0, 1, 1, 0); + tools::Rectangle aRecalcCellRect = pDoc->GetMMRect(0, 0, 1, 1, 0); aRecalcCellRect.AdjustLeft(-250); aRecalcCellRect.AdjustRight(250); aRecalcCellRect.AdjustTop(-70); @@ -2763,17 +2605,15 @@ void ScFiltersTest2::testDrawCircleInMergeCells() CPPUNIT_ASSERT_EQUAL(aEndRecalcCell1.X(), aEndRecalcCircle.X()); CPPUNIT_ASSERT_EQUAL(aStartRecalcCell.Y(), aStartRecalcCircle.Y()); CPPUNIT_ASSERT_EQUAL(aEndRecalcCell1.Y(), aEndRecalcCircle.Y()); - - xDocSh->DoClose(); } void ScFiltersTest2::testDeleteCirclesInRowAndCol() { - ScDocShellRef xDocSh = loadDoc(u"deleteCirclesInRowAndCol.", FORMAT_ODS); + createScDoc("ods/deleteCirclesInRowAndCol.ods"); - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); @@ -2781,121 +2621,107 @@ void ScFiltersTest2::testDeleteCirclesInRowAndCol() CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(6), pPage->GetObjCount()); // Delete first row. - pDrawLayer->DeleteObjectsInArea(0, 0, 0, rDoc.MaxCol(), 0, true); + pDrawLayer->DeleteObjectsInArea(0, 0, 0, pDoc->MaxCol(), 0, true); // There should be 3 circle objects! CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), pPage->GetObjCount()); // Delete first col. - pDrawLayer->DeleteObjectsInArea(0, 0, 0, 0, rDoc.MaxRow(), true); + pDrawLayer->DeleteObjectsInArea(0, 0, 0, 0, pDoc->MaxRow(), true); // There should not be a circle object! CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), pPage->GetObjCount()); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf129940() { // Test pure span elements inside text:ruby-base - ScDocShellRef xDocSh = loadDoc(u"tdf129940.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf129940.ods"); + ScDocument* pDoc = getScDoc(); // Pure text within text:ruby-base - OUString aStr = rDoc.GetString(ScAddress(0, 0, 0)); + OUString aStr = pDoc->GetString(ScAddress(0, 0, 0)); CPPUNIT_ASSERT_EQUAL(OUString(u"小笠原"), aStr); - aStr = rDoc.GetString(ScAddress(1, 0, 0)); + aStr = pDoc->GetString(ScAddress(1, 0, 0)); CPPUNIT_ASSERT_EQUAL(OUString(u"徳彦"), aStr); // Multiple text:span within text:ruby-base - aStr = rDoc.GetString(ScAddress(2, 0, 0)); + aStr = pDoc->GetString(ScAddress(2, 0, 0)); CPPUNIT_ASSERT_EQUAL(OUString(u"注音符號"), aStr); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf119190() { - ScDocShellRef xDocSh = loadDoc(u"tdf119190.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("xlsx/tdf119190.xlsx"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed here - CPPUNIT_ASSERT(rDoc.HasNote(ScAddress(2, 0, 0))); + CPPUNIT_ASSERT(pDoc->HasNote(ScAddress(2, 0, 0))); - ScPostIt* pNote = rDoc.GetNote(ScAddress(2, 0, 0)); + ScPostIt* pNote = pDoc->GetNote(ScAddress(2, 0, 0)); CPPUNIT_ASSERT(pNote); CPPUNIT_ASSERT_EQUAL(true, pNote->IsCaptionShown()); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf139612() { - ScDocShellRef xDocSh = loadDoc(u"tdf139612.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf139612.ods"); + ScDocument* pDoc = getScDoc(); - xDocSh->DoHardRecalc(); + ScDocShell* pDocSh = getScDocShell(); + pDocSh->DoHardRecalc(); // Without the fix in place, this test would have failed with // - Expected: 1 // - Actual : 0 - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(ScAddress(1, 15, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(ScAddress(1, 15, 0))); } void ScFiltersTest2::testTdf144740() { - ScDocShellRef xDocSh = loadDoc(u"tdf144740.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf144740.ods"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: 1 // - Actual : 2 - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(ScAddress(1, 0, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(ScAddress(1, 0, 0))); } void ScFiltersTest2::testTdf146722() { - ScDocShellRef xDocSh = loadDoc(u"tdf146722.", FORMAT_ODS); - ScDocument& rDoc = xDocSh->GetDocument(); + createScDoc("ods/tdf146722.ods"); + ScDocument* pDoc = getScDoc(); // Without the fix in place, this test would have failed with // - Expected: 3 // - Actual : 0 - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(ScAddress(1, 2, 0))); - - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(ScAddress(1, 2, 0))); } void ScFiltersTest2::testTdf147014() { - ScDocShellRef xDocSh = loadDoc(u"tdf147014.", FORMAT_XLSX); - uno::Reference<frame::XModel> xModel = xDocSh->GetModel(); - uno::Reference<sheet::XSpreadsheetDocument> xDoc(xModel, uno::UNO_QUERY_THROW); + createScDoc("xlsx/tdf147014.xlsx"); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIA(xDoc->getSheets(), uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xIA->getByIndex(0), uno::UNO_QUERY_THROW); xIA.set(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW); // The sheet has a single shape, without the fix it was not imported, except in 32-bit builds CPPUNIT_ASSERT_EQUAL_MESSAGE("Shape not imported", static_cast<sal_Int32>(1), xIA->getCount()); - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf139763ShapeAnchor() { - ScDocShellRef xDocSh = loadDoc(u"tdf139763ShapeAnchor.", FORMAT_XLSX); + createScDoc("xlsx/tdf139763ShapeAnchor.xlsx"); // There are two objects on the first sheet, anchored to page by element xdr:absoluteAnchor // and anchored to cell by element xdr:oneCellAnchor. Error was, that they were imported as // "anchor to cell (resize with cell". - ScDocument& rDoc = xDocSh->GetDocument(); + ScDocument* pDoc = getScDoc(); - CPPUNIT_ASSERT_MESSAGE("There should be at least one sheet.", rDoc.GetTableCount() > 0); + CPPUNIT_ASSERT_MESSAGE("There should be at least one sheet.", pDoc->GetTableCount() > 0); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); CPPUNIT_ASSERT_MESSAGE("draw page for sheet 1 should exist.", pPage); // There should be 2 shapes @@ -2910,16 +2736,14 @@ void ScFiltersTest2::testTdf139763ShapeAnchor() CPPUNIT_ASSERT_MESSAGE("Shape must be anchored to cell.", ScDrawLayer::IsCellAnchored(*pObj)); CPPUNIT_ASSERT_MESSAGE("Shape must not resize with cell.", !ScDrawLayer::IsResizeWithCell(*pObj)); - - xDocSh->DoClose(); } void ScFiltersTest2::testAutofilterNamedRangesXLSX() { - ScDocShellRef xDocSh = loadDoc(u"autofilternamedrange.", FORMAT_XLSX); + createScDoc("xlsx/autofilternamedrange.xlsx"); - ScDocument& rDoc = xDocSh->GetDocument(); - const ScDBData* pDBData = rDoc.GetDBCollection()->GetDBNearCursor(0, 0, 0); + ScDocument* pDoc = getScDoc(); + const ScDBData* pDBData = pDoc->GetDBCollection()->GetDBNearCursor(0, 0, 0); CPPUNIT_ASSERT(pDBData); ScRange aRange; pDBData->GetArea(aRange); @@ -2927,127 +2751,106 @@ void ScFiltersTest2::testAutofilterNamedRangesXLSX() OUString aPosStr; bool bSheetLocal = false; // test there is no '_xlnm._FilterDatabase' named range on the filter area - const ScRangeData* pRData = rDoc.GetRangeAtBlock(aRange, aPosStr, &bSheetLocal); + const ScRangeData* pRData = pDoc->GetRangeAtBlock(aRange, aPosStr, &bSheetLocal); CPPUNIT_ASSERT(!pRData); CPPUNIT_ASSERT_EQUAL(OUString(), aPosStr); - - xDocSh->DoClose(); } void ScFiltersTest2::testInvalidBareBiff5() { - ScDocShellRef xDocSh = loadDoc(u"tdf144732.", FORMAT_XLS); - ScDocument& rDoc = xDocSh->GetDocument(); - rDoc.CalcAll(); + createScDoc("xls/tdf144732.xls"); + ScDocument* pDoc = getScDoc(); + pDoc->CalcAll(); // Check that we import the contents from such file, as Excel does - CPPUNIT_ASSERT_EQUAL(SCTAB(1), rDoc.GetTableCount()); + CPPUNIT_ASSERT_EQUAL(SCTAB(1), pDoc->GetTableCount()); // Row 1 ScAddress aPos(0, 0, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(2.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(3.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); // Row 2 aPos = ScAddress(0, 1, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, rDoc.GetCellType(aPos)); - OUString sFormula = rDoc.GetFormula(aPos.Col(), aPos.Row(), aPos.Tab()); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, pDoc->GetCellType(aPos)); + OUString sFormula = pDoc->GetFormula(aPos.Col(), aPos.Row(), aPos.Tab()); CPPUNIT_ASSERT_EQUAL(OUString("=TRUE()"), sFormula); - CPPUNIT_ASSERT_EQUAL(1.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(1.0, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, rDoc.GetCellType(aPos)); - sFormula = rDoc.GetFormula(aPos.Col(), aPos.Row(), aPos.Tab()); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, pDoc->GetCellType(aPos)); + sFormula = pDoc->GetFormula(aPos.Col(), aPos.Row(), aPos.Tab()); CPPUNIT_ASSERT_EQUAL(OUString("=FALSE()"), sFormula); - CPPUNIT_ASSERT_EQUAL(0.0, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(0.0, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"sheetjs"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"sheetjs"), pDoc->GetString(aPos)); // Row 3 aPos = ScAddress(0, 2, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"foo bar"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"foo bar"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"baz"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"baz"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(41689.4375, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(41689.4375, pDoc->GetValue(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"0.3"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"0.3"), pDoc->GetString(aPos)); // Row 4 aPos = ScAddress(0, 3, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"baz"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"baz"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"_"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"_"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(3.14159, rDoc.GetValue(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(3.14159, pDoc->GetValue(aPos)); // Row 5 aPos = ScAddress(0, 4, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"hidden"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"hidden"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); // Row 6 aPos = ScAddress(0, 5, 0); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(u"visible"), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(u"visible"), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); aPos.IncCol(); - CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, rDoc.GetCellType(aPos)); - CPPUNIT_ASSERT_EQUAL(OUString(), rDoc.GetString(aPos)); - - xDocSh->DoClose(); -} - -void ScFiltersTest2::testTooManyColsRows() -{ - // The intentionally doc has cells beyond our MAXROW/MAXCOL, so there - // should be a warning on load. - ScDocShellRef xDocSh = loadDoc(u"too-many-cols-rows.", FORMAT_ODS, /*bReadWrite*/ false, - /*bCheckErrorCode*/ false); - CPPUNIT_ASSERT(xDocSh->GetErrorCode() == SCWARN_IMPORT_ROW_OVERFLOW - || xDocSh->GetErrorCode() == SCWARN_IMPORT_COLUMN_OVERFLOW); - xDocSh->DoClose(); - - xDocSh = loadDoc(u"too-many-cols-rows.", FORMAT_XLSX, /*bReadWrite*/ false, - /*bCheckErrorCode*/ false); - CPPUNIT_ASSERT(xDocSh->GetErrorCode() == SCWARN_IMPORT_ROW_OVERFLOW - || xDocSh->GetErrorCode() == SCWARN_IMPORT_COLUMN_OVERFLOW); - xDocSh->DoClose(); + CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, pDoc->GetCellType(aPos)); + CPPUNIT_ASSERT_EQUAL(OUString(), pDoc->GetString(aPos)); } void ScFiltersTest2::testTdf83671_SmartArt_import() @@ -3066,9 +2869,9 @@ void ScFiltersTest2::testTdf83671_SmartArt_import() } // Get document and shape - ScDocShellRef xDocSh = loadDoc(u"tdf83671_SmartArt_import.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + createScDoc("xlsx/tdf83671_SmartArt_import.xlsx"); + ScDocument* pDoc = getScDoc(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); SdrObject* pObj = pPage->GetObj(0); @@ -3090,8 +2893,6 @@ void ScFiltersTest2::testTdf83671_SmartArt_import() officecfg::Office::Common::Filter::Microsoft::Import::SmartArtToShapes::set(false, pChange); pChange->commit(); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf83671_SmartArt_import2() @@ -3111,9 +2912,9 @@ void ScFiltersTest2::testTdf83671_SmartArt_import2() } // Get document and shape - ScDocShellRef xDocSh = loadDoc(u"tdf83671_SmartArt_import.", FORMAT_XLSX); - ScDocument& rDoc = xDocSh->GetDocument(); - ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); + createScDoc("xlsx/tdf83671_SmartArt_import.xlsx"); + ScDocument* pDoc = getScDoc(); + ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer(); SdrPage* pPage = pDrawLayer->GetPage(0); SdrObject* pObj = pPage->GetObj(0); @@ -3136,8 +2937,6 @@ void ScFiltersTest2::testTdf83671_SmartArt_import2() officecfg::Office::Common::Filter::Microsoft::Import::SmartArtToShapes::set(true, pChange); pChange->commit(); } - - xDocSh->DoClose(); } void ScFiltersTest2::testTdf151818_SmartArtFontColor() @@ -3157,8 +2956,8 @@ void ScFiltersTest2::testTdf151818_SmartArtFontColor() } // Get document and shape in SmartArt object - ScDocShellRef xDocSh = loadDoc(u"tdf151818_SmartartThemeFontColor.", FORMAT_XLSX); - uno::Reference<drawing::XDrawPagesSupplier> xDoc(xDocSh->GetModel(), uno::UNO_QUERY_THROW); + createScDoc("xlsx/tdf151818_SmartartThemeFontColor.xlsx"); + uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); uno::Reference<drawing::XShapes> xSmartArt(xPage->getByIndex(0), uno::UNO_QUERY_THROW); @@ -3191,8 +2990,6 @@ void ScFiltersTest2::testTdf151818_SmartArtFontColor() officecfg::Office::Common::Filter::Microsoft::Import::SmartArtToShapes::set(false, pChange); pChange->commit(); } - - xDocSh->DoClose(); } CPPUNIT_TEST_SUITE_REGISTRATION(ScFiltersTest2); |