diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/CppunitTest_sc_tablecolumnsobj.mk | 3 | ||||
-rw-r--r-- | sc/CppunitTest_sc_tablerowsobj.mk | 3 | ||||
-rw-r--r-- | sc/CppunitTest_sc_tablesheetobj.mk | 3 | ||||
-rw-r--r-- | sc/inc/sheetlimits.hxx | 9 | ||||
-rw-r--r-- | sc/qa/extras/sctablecolumnsobj.cxx | 4 | ||||
-rw-r--r-- | sc/qa/extras/sctablerowsobj.cxx | 4 | ||||
-rw-r--r-- | sc/qa/extras/sctablesheetobj.cxx | 7 | ||||
-rw-r--r-- | sc/qa/unit/mark_test.cxx | 146 | ||||
-rw-r--r-- | sc/qa/unit/rangelst_test.cxx | 2 | ||||
-rw-r--r-- | sc/qa/unit/ucalc.cxx | 2 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_formula.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/documen2.cxx | 16 |
12 files changed, 115 insertions, 86 deletions
diff --git a/sc/CppunitTest_sc_tablecolumnsobj.mk b/sc/CppunitTest_sc_tablecolumnsobj.mk index 04d41985aa22..29e65d860830 100644 --- a/sc/CppunitTest_sc_tablecolumnsobj.mk +++ b/sc/CppunitTest_sc_tablecolumnsobj.mk @@ -22,12 +22,15 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_tablecolumnsobj, \ $(eval $(call gb_CppunitTest_use_libraries,sc_tablecolumnsobj, \ cppu \ sal \ + salhelper \ + sc \ subsequenttest \ test \ unotest \ )) $(eval $(call gb_CppunitTest_set_include,sc_tablecolumnsobj,\ + -I$(SRCDIR)/sc/inc \ $$(INCLUDE) \ )) diff --git a/sc/CppunitTest_sc_tablerowsobj.mk b/sc/CppunitTest_sc_tablerowsobj.mk index 4c82243b4f1a..ffbd3850aebd 100644 --- a/sc/CppunitTest_sc_tablerowsobj.mk +++ b/sc/CppunitTest_sc_tablerowsobj.mk @@ -22,12 +22,15 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_tablerowsobj, \ $(eval $(call gb_CppunitTest_use_libraries,sc_tablerowsobj, \ cppu \ sal \ + salhelper \ + sc \ subsequenttest \ test \ unotest \ )) $(eval $(call gb_CppunitTest_set_include,sc_tablerowsobj,\ + -I$(SRCDIR)/sc/inc \ $$(INCLUDE) \ )) diff --git a/sc/CppunitTest_sc_tablesheetobj.mk b/sc/CppunitTest_sc_tablesheetobj.mk index 44e72d112bc8..52f7f427b27a 100644 --- a/sc/CppunitTest_sc_tablesheetobj.mk +++ b/sc/CppunitTest_sc_tablesheetobj.mk @@ -22,12 +22,15 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sc_tablesheetobj, \ $(eval $(call gb_CppunitTest_use_libraries,sc_tablesheetobj, \ cppu \ sal \ + salhelper \ + sc \ subsequenttest \ test \ unotest \ )) $(eval $(call gb_CppunitTest_set_include,sc_tablesheetobj,\ + -I$(SRCDIR)/sc/inc \ $$(INCLUDE) \ )) diff --git a/sc/inc/sheetlimits.hxx b/sc/inc/sheetlimits.hxx index cbc017c9d10e..1d1410b9056a 100644 --- a/sc/inc/sheetlimits.hxx +++ b/sc/inc/sheetlimits.hxx @@ -31,12 +31,13 @@ struct ScSheetLimits final : public salhelper::SimpleReferenceObject ScSheetLimits(SCCOL nMaxCol, SCROW nMaxRow) : mnMaxCol(nMaxCol) - , mnMaxRow(nMaxRow){} - - [[nodiscard]] bool ValidCol(SCCOL nCol) const + , mnMaxRow(nMaxRow) { - return ::ValidCol(nCol, mnMaxCol); } + + SC_DLLPUBLIC static ScSheetLimits CreateDefault(); + + [[nodiscard]] bool ValidCol(SCCOL nCol) const { return ::ValidCol(nCol, mnMaxCol); } [[nodiscard]] bool ValidRow(SCROW nRow) const { return ::ValidRow(nRow, mnMaxRow); } [[nodiscard]] bool ValidColRow(SCCOL nCol, SCROW nRow) const { diff --git a/sc/qa/extras/sctablecolumnsobj.cxx b/sc/qa/extras/sctablecolumnsobj.cxx index 406e559489fa..ccb96f7c786d 100644 --- a/sc/qa/extras/sctablecolumnsobj.cxx +++ b/sc/qa/extras/sctablecolumnsobj.cxx @@ -29,6 +29,8 @@ #include <com/sun/star/uno/Reference.hxx> +#include <sheetlimits.hxx> + using namespace css; namespace sc_apitest @@ -90,7 +92,7 @@ private: ScTableColumnsObj::ScTableColumnsObj() : CalcUnoApiTest("/sc/qa/extras/testdocuments") , XElementAccess(cppu::UnoType<table::XCellRange>::get()) - , XIndexAccess(1024) + , XIndexAccess(ScSheetLimits::CreateDefault().GetMaxColCount()) , XNameAccess("ABC") , XServiceInfo("ScTableColumnsObj", "com.sun.star.table.TableColumns") { diff --git a/sc/qa/extras/sctablerowsobj.cxx b/sc/qa/extras/sctablerowsobj.cxx index 5efe6bc64cac..419a326f48cd 100644 --- a/sc/qa/extras/sctablerowsobj.cxx +++ b/sc/qa/extras/sctablerowsobj.cxx @@ -28,6 +28,8 @@ #include <cppu/unotype.hxx> +#include <sheetlimits.hxx> + using namespace css; using namespace css::uno; @@ -79,7 +81,7 @@ private: ScTableRowsObj::ScTableRowsObj() : CalcUnoApiTest("/sc/qa/extras/testdocuments") , XElementAccess(cppu::UnoType<table::XCellRange>::get()) - , XIndexAccess(1048576) + , XIndexAccess(ScSheetLimits::CreateDefault().GetMaxRowCount()) , XServiceInfo("ScTableRowsObj", "com.sun.star.table.TableRows") { } diff --git a/sc/qa/extras/sctablesheetobj.cxx b/sc/qa/extras/sctablesheetobj.cxx index 3179ae54d2d3..055de3babb2b 100644 --- a/sc/qa/extras/sctablesheetobj.cxx +++ b/sc/qa/extras/sctablesheetobj.cxx @@ -48,6 +48,8 @@ #include <com/sun/star/sheet/XSpreadsheet.hpp> #include <com/sun/star/table/CellRangeAddress.hpp> +#include <sheetlimits.hxx> + using namespace css; using namespace css::uno; @@ -248,7 +250,10 @@ private: ScTableSheetObj::ScTableSheetObj(): CalcUnoApiTest("/sc/qa/extras/testdocuments"), apitest::XCellSeries(1, 0), - apitest::XFormulaQuery(table::CellRangeAddress(0, 0, 0, 1023, 1048575), table::CellRangeAddress(0, 0, 0, 1023, 1048575), 0, 0), + apitest::XFormulaQuery( + table::CellRangeAddress(0, 0, 0, ScSheetLimits::CreateDefault().MaxCol(), ScSheetLimits::CreateDefault().MaxRow()), + table::CellRangeAddress(0, 0, 0, ScSheetLimits::CreateDefault().MaxCol(), ScSheetLimits::CreateDefault().MaxRow()), + 0, 0), apitest::XReplaceable("searchReplaceString", "replaceReplaceString"), apitest::XSearchable("test", 4) { diff --git a/sc/qa/unit/mark_test.cxx b/sc/qa/unit/mark_test.cxx index 55a13cb0da57..bca735aae202 100644 --- a/sc/qa/unit/mark_test.cxx +++ b/sc/qa/unit/mark_test.cxx @@ -96,7 +96,8 @@ class Test : public CppUnit::TestFixture public: void testSimpleMark( const ScRange& rRange, const ScRange& rSelectionCover, const ScRangeList& rLeftEnvelope, const ScRangeList& rRightEnvelope, - const ScRangeList& rTopEnvelope, const ScRangeList& rBottomEnvelope ); + const ScRangeList& rTopEnvelope, const ScRangeList& rBottomEnvelope, + const ScSheetLimits& rLimits ); void testSimpleMark_Simple(); void testSimpleMark_Column(); void testSimpleMark_Row(); @@ -147,10 +148,10 @@ static void lcl_GetSortedRanges( const ScRangeList& rRangeList, ScRangeList& rRa void Test::testSimpleMark( const ScRange& rRange, const ScRange& rSelectionCover, const ScRangeList& rLeftEnvelope, const ScRangeList& rRightEnvelope, - const ScRangeList& rTopEnvelope, const ScRangeList& rBottomEnvelope ) + const ScRangeList& rTopEnvelope, const ScRangeList& rBottomEnvelope, + const ScSheetLimits& rLimits ) { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); + ScMarkData aMark(rLimits); CPPUNIT_ASSERT( !aMark.IsMarked() ); CPPUNIT_ASSERT( !aMark.IsMultiMarked() ); @@ -168,29 +169,29 @@ void Test::testSimpleMark( const ScRange& rRange, const ScRange& rSelectionCover SCCOL nOutCol2 = rRange.aStart.Col() - 1; CPPUNIT_ASSERT( aMark.IsCellMarked( nMidCol, nMidRow ) ); - if ( ValidCol( nOutCol1, MAXCOL ) && ValidRow( nOutRow1, MAXROW ) ) + if ( ValidCol( nOutCol1, rLimits.MaxCol() ) && ValidRow( nOutRow1, rLimits.MaxRow() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nOutCol1, nOutRow1 ) ); - if ( ValidCol( nOutCol2, MAXCOL ) && ValidRow( nOutRow2, MAXROW ) ) + if ( ValidCol( nOutCol2, rLimits.MaxCol() ) && ValidRow( nOutRow2, rLimits.MaxRow() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nOutCol2, nOutRow2 ) ); - if ( ValidRow( nOutRow1, MAXROW ) ) + if ( ValidRow( nOutRow1, rLimits.MaxRow() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nMidCol, nOutRow1 ) ); - if ( ValidCol( nOutCol1, MAXCOL ) ) + if ( ValidCol( nOutCol1, rLimits.MaxCol() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nOutCol1, nMidRow ) ); - if ( ValidRow( nOutRow2, MAXROW ) ) + if ( ValidRow( nOutRow2, rLimits.MaxRow() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nMidCol, nOutRow2 ) ); - if ( ValidCol( nOutCol2, MAXCOL ) ) + if ( ValidCol( nOutCol2, rLimits.MaxCol() ) ) CPPUNIT_ASSERT( !aMark.IsCellMarked( nOutCol2, nMidRow ) ); - if ( rRange.aStart.Row() == 0 && rRange.aEnd.Row() == MAXROW ) + if ( rRange.aStart.Row() == 0 && rRange.aEnd.Row() == rLimits.MaxRow() ) CPPUNIT_ASSERT( aMark.IsColumnMarked( nMidCol ) ); else CPPUNIT_ASSERT( !aMark.IsColumnMarked( nMidCol ) ); - if ( rRange.aStart.Col() == 0 && rRange.aEnd.Col() == MAXCOL ) + if ( rRange.aStart.Col() == 0 && rRange.aEnd.Col() == rLimits.MaxCol() ) CPPUNIT_ASSERT( aMark.IsRowMarked( nMidRow ) ); else CPPUNIT_ASSERT( !aMark.IsRowMarked( nMidRow ) ); @@ -206,58 +207,65 @@ void Test::testSimpleMark( const ScRange& rRange, const ScRange& rSelectionCover void Test::testSimpleMark_Simple() { + ScSheetLimits limits( ScSheetLimits::CreateDefault()); testSimpleMark( ScRange( 10, 15, 0, 20, 30, 0 ), // Simple range ScRange( 9, 14, 0, 21, 31, 0 ), // Cover ScRangeList( ScRange( 9, 15, 0, 9, 30, 0 ) ), // Left envelope ScRangeList( ScRange( 21, 15, 0, 21, 30, 0 ) ), // Right envelope ScRangeList( ScRange( 10, 14, 0, 20, 14, 0 ) ), // Top envelope - ScRangeList( ScRange( 10, 31, 0, 20, 31, 0 ) ) ); // Bottom envelope + ScRangeList( ScRange( 10, 31, 0, 20, 31, 0 ) ), // Bottom envelope + limits ); } void Test::testSimpleMark_Column() { + ScSheetLimits limits( ScSheetLimits::CreateDefault()); // Column 10, rows from 15 to 30 testSimpleMark( ScRange( 10, 15, 0, 10, 30, 0 ), // Simple range ScRange( 9, 14, 0, 11, 31, 0 ), // Cover ScRangeList( ScRange( 9, 15, 0, 9, 30, 0 ) ), // Left envelope ScRangeList( ScRange( 11, 15, 0, 11, 30, 0 ) ), // Right envelope ScRangeList( ScRange( 10, 14, 0, 10, 14, 0 ) ), // Top envelope - ScRangeList( ScRange( 10, 31, 0, 10, 31, 0 ) ) ); // Bottom envelope + ScRangeList( ScRange( 10, 31, 0, 10, 31, 0 ) ), // Bottom envelope + limits ); // Full Column 10 - testSimpleMark( ScRange( 10, 0, 0, 10, MAXROW, 0 ), // Simple range - ScRange( 9, 0, 0, 11, MAXROW, 0 ), // Cover - ScRangeList( ScRange( 9, 0, 0, 9, MAXROW, 0 ) ), // Left envelope - ScRangeList( ScRange( 11, 0, 0, 11, MAXROW, 0 ) ), // Right envelope + testSimpleMark( ScRange( 10, 0, 0, 10, limits.MaxRow(), 0 ), // Simple range + ScRange( 9, 0, 0, 11, limits.MaxRow(), 0 ), // Cover + ScRangeList( ScRange( 9, 0, 0, 9, limits.MaxRow(), 0 ) ), // Left envelope + ScRangeList( ScRange( 11, 0, 0, 11, limits.MaxRow(), 0 ) ), // Right envelope ScRangeList(), // Top envelope - ScRangeList()); // Bottom envelope + ScRangeList(), // Bottom envelope + limits ); } void Test::testSimpleMark_Row() { + ScSheetLimits limits( ScSheetLimits::CreateDefault()); // Row 15, cols from 10 to 20 testSimpleMark( ScRange( 10, 15, 0, 20, 15, 0 ), // Simple range ScRange( 9, 14, 0, 21, 16, 0 ), // Cover ScRangeList( ScRange( 9, 15, 0, 9, 15, 0 ) ), // Left envelope ScRangeList( ScRange( 21, 15, 0, 21, 15, 0 ) ), // Right envelope ScRangeList( ScRange( 10, 14, 0, 20, 14, 0 ) ), // Top envelope - ScRangeList( ScRange( 10, 16, 0, 20, 16, 0 ) ) ); // Bottom envelope + ScRangeList( ScRange( 10, 16, 0, 20, 16, 0 ) ), // Bottom envelope + limits ); // Full Row 15 - testSimpleMark( ScRange( 0, 15, 0, MAXCOL, 15, 0 ), // Simple range - ScRange( 0, 14, 0, MAXCOL, 16, 0 ), // Cover + testSimpleMark( ScRange( 0, 15, 0, limits.MaxCol(), 15, 0 ), // Simple range + ScRange( 0, 14, 0, limits.MaxCol(), 16, 0 ), // Cover ScRangeList(), // Left envelope ScRangeList(), // Right envelope - ScRangeList( ScRange( 0, 14, 0, MAXCOL, 14, 0 ) ), // Top envelope - ScRangeList( ScRange( 0, 16, 0, MAXCOL, 16, 0 ) ) ); // Bottom envelope + ScRangeList( ScRange( 0, 14, 0, limits.MaxCol(), 14, 0 ) ), // Top envelope + ScRangeList( ScRange( 0, 16, 0, limits.MaxCol(), 16, 0 ) ), // Bottom envelope + limits ); } void Test::testMultiMark( const MultiMarkTestData& rMarksData ) { - - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); - ScMultiSel aMultiSel(aSheetLimits); + ScSheetLimits limits( ScSheetLimits::CreateDefault()); + ScMarkData aMark(limits); + ScMultiSel aMultiSel(limits); CPPUNIT_ASSERT( !aMark.IsMarked() ); CPPUNIT_ASSERT( !aMark.IsMultiMarked() ); CPPUNIT_ASSERT_EQUAL( SCCOL(0), aMultiSel.GetMultiSelectionCount() ); @@ -286,13 +294,13 @@ void Test::testMultiMark( const MultiMarkTestData& rMarksData ) for ( const auto& rCol : rAreaTestData.aColumnsWithFullMarks ) { CPPUNIT_ASSERT( aMark.IsColumnMarked( rCol ) ); - CPPUNIT_ASSERT( aMultiSel.IsAllMarked( rCol, 0, MAXROW ) ); + CPPUNIT_ASSERT( aMultiSel.IsAllMarked( rCol, 0, limits.MaxRow() ) ); } for ( const auto& rCol : rAreaTestData.aColumnsWithoutFullMarks ) { CPPUNIT_ASSERT( !aMark.IsColumnMarked( rCol ) ); - CPPUNIT_ASSERT( !aMultiSel.IsAllMarked( rCol, 0, MAXROW ) ); + CPPUNIT_ASSERT( !aMultiSel.IsAllMarked( rCol, 0, limits.MaxRow() ) ); } for ( const auto& rRow : rAreaTestData.aRowsWithFullMarks ) @@ -415,6 +423,7 @@ void Test::testMultiMark( const MultiMarkTestData& rMarksData ) void Test::testMultiMark_FourRanges() { + ScSheetLimits limits( ScSheetLimits::CreateDefault()); MultiMarkTestData aData; MarkTestData aSingle1; @@ -449,7 +458,7 @@ void Test::testMultiMark_FourRanges() aSingle1.aNextMarked.emplace_back( 15, 1, 0, 1, 5, 0 ); // Search down aSingle1.aNextMarked.emplace_back( 15, 15, 0, 0, 10, 0 ); // Search up - aSingle1.aNextMarked.emplace_back( 15, 15, 0, 1, MAXROWCOUNT, 0 ); // Search down fail + aSingle1.aNextMarked.emplace_back( 15, 15, 0, 1, limits.GetMaxRowCount(), 0 ); // Search down fail aSingle1.aNextMarked.emplace_back( 15, 4, 0, 0, -1, 0 ); // Search up fail aSingle1.aColumnsWithAtLeastOneMark.push_back( 10 ); @@ -495,7 +504,7 @@ void Test::testMultiMark_FourRanges() aSingle2.aNextMarked.emplace_back( 27, 16, 0, 0, 15, 0 ); // up ok aSingle2.aNextMarked.emplace_back( 27, 4, 0, 1, 7, 0 ); // down ok aSingle2.aNextMarked.emplace_back( 27, 4, 0, 0, -1, 0 ); // up fail - aSingle2.aNextMarked.emplace_back( 27, 16, 0, 1, MAXROWCOUNT, 0 ); // down fail + aSingle2.aNextMarked.emplace_back( 27, 16, 0, 1, limits.GetMaxRowCount(), 0 ); // down fail aSingle2.aColumnsWithAtLeastOneMark = aSingle1.aColumnsWithAtLeastOneMark; aSingle2.aColumnsWithAtLeastOneMark.push_back( 25 ); @@ -510,7 +519,7 @@ void Test::testMultiMark_FourRanges() // Full row = 20 MarkTestData aSingle3; - aSingle3.aRange = ScRange( 0, 20, 0, MAXCOL, 20, 0 ); + aSingle3.aRange = ScRange( 0, 20, 0, limits.MaxCol(), 20, 0 ); aSingle3.bMark = true; aSingle3.aInsideAddresses = aSingle2.aInsideAddresses; @@ -525,13 +534,13 @@ void Test::testMultiMark_FourRanges() aSingle3.aRowsWithFullMarks.push_back( 20 ); aSingle3.aRangesWithFullMarks = aSingle2.aRangesWithFullMarks; - aSingle3.aRangesWithFullMarks.emplace_back( 0, 20, 0, MAXCOL, 20, 0 ); + aSingle3.aRangesWithFullMarks.emplace_back( 0, 20, 0, limits.MaxCol(), 20, 0 ); aSingle3.aRangesWithFullMarks.emplace_back( 15, 20, 0, 55, 20, 0 ); aSingle3.aNextMarked.emplace_back( 15, 16, 0, 0, 10, 0 ); // up ok aSingle3.aNextMarked.emplace_back( 15, 16, 0, 1, 20, 0 ); // down ok aSingle3.aNextMarked.emplace_back( 22, 15, 0, 0, -1, 0 ); // up fail - aSingle3.aNextMarked.emplace_back( 22, 25, 0, 1, MAXROWCOUNT, 0 ); // down fail + aSingle3.aNextMarked.emplace_back( 22, 25, 0, 1, limits.GetMaxRowCount(), 0 ); // down fail aSingle3.aColumnsWithAtLeastOneMark = aSingle2.aColumnsWithAtLeastOneMark; aSingle3.aColumnsWithAtLeastOneMark.push_back( 39 ); @@ -539,7 +548,7 @@ void Test::testMultiMark_FourRanges() // Full col = 35 MarkTestData aSingle4; - aSingle4.aRange = ScRange( 35, 0, 0, 35, MAXROW, 0 ); + aSingle4.aRange = ScRange( 35, 0, 0, 35, limits.MaxRow(), 0 ); aSingle4.bMark = true; aSingle4.aInsideAddresses = aSingle3.aInsideAddresses; @@ -556,7 +565,7 @@ void Test::testMultiMark_FourRanges() aSingle4.aRowsWithFullMarks.push_back( 20 ); aSingle4.aRangesWithFullMarks = aSingle3.aRangesWithFullMarks; - aSingle4.aRangesWithFullMarks.emplace_back( 35, 0, 0, 35, MAXROW, 0 ); + aSingle4.aRangesWithFullMarks.emplace_back( 35, 0, 0, 35, limits.MaxRow(), 0 ); aSingle4.aRangesWithFullMarks.emplace_back( 35, 10, 0, 35, 25, 0 ); // Add the rectangle data to aData @@ -565,26 +574,26 @@ void Test::testMultiMark_FourRanges() aData.aMarks.push_back( aSingle3 ); aData.aMarks.push_back( aSingle4 ); - aData.aSelectionCover = ScRange( 0, 0, 0, MAXCOL, MAXROW, 0 ); + aData.aSelectionCover = ScRange( 0, 0, 0, limits.MaxCol(), limits.MaxRow(), 0 ); aData.aLeftEnvelope.push_back( ScRange( 9, 5, 0, 9, 10, 0 ) ); aData.aLeftEnvelope.push_back( ScRange( 24, 7, 0, 24, 15, 0 ) ); aData.aLeftEnvelope.push_back( ScRange( 34, 0, 0, 34, 19, 0 ) ); - aData.aLeftEnvelope.push_back( ScRange( 34, 21, 0, 34, MAXROW, 0 ) ); + aData.aLeftEnvelope.push_back( ScRange( 34, 21, 0, 34, limits.MaxRow(), 0 ) ); aData.aRightEnvelope.push_back( ScRange( 21, 5, 0, 21, 10, 0 ) ); aData.aRightEnvelope.push_back( ScRange( 31, 7, 0, 31, 15, 0 ) ); aData.aRightEnvelope.push_back( ScRange( 36, 0, 0, 36, 19, 0 ) ); - aData.aRightEnvelope.push_back( ScRange( 36, 21, 0, 36, MAXROW, 0 ) ); + aData.aRightEnvelope.push_back( ScRange( 36, 21, 0, 36, limits.MaxRow(), 0 ) ); aData.aTopEnvelope.push_back( ScRange( 10, 4, 0, 20, 4, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 25, 6, 0, 30, 6, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 0, 19, 0, 34, 19, 0 ) ); - aData.aTopEnvelope.push_back( ScRange( 36, 19, 0, MAXCOL, 19, 0 ) ); + aData.aTopEnvelope.push_back( ScRange( 36, 19, 0, limits.MaxCol(), 19, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 10, 11, 0, 20, 11, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 25, 16, 0, 30, 16, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 0, 21, 0, 34, 21, 0 ) ); - aData.aBottomEnvelope.push_back( ScRange( 36, 21, 0, MAXCOL, 21, 0 ) ); + aData.aBottomEnvelope.push_back( ScRange( 36, 21, 0, limits.MaxCol(), 21, 0 ) ); MarkArrayTestData aMarkArrayTestData1; aMarkArrayTestData1.nCol = 5; @@ -610,7 +619,7 @@ void Test::testMultiMark_FourRanges() MarkArrayTestData aMarkArrayTestData6; aMarkArrayTestData6.nCol = 35; - aMarkArrayTestData6.aMarkedRowSegs.emplace_back( 0, MAXROW ); + aMarkArrayTestData6.aMarkedRowSegs.emplace_back( 0, limits.MaxRow() ); MarkArrayTestData aMarkArrayTestData7; aMarkArrayTestData7.nCol = 40; @@ -627,7 +636,7 @@ void Test::testMultiMark_FourRanges() aData.aColsWithOneMark.emplace_back( 5, 20, 0, 0, 20, 0 ); aData.aColsWithOneMark.emplace_back( 22, 20, 0, 0, 20, 0 ); aData.aColsWithOneMark.emplace_back( 32, 20, 0, 0, 20, 0 ); - aData.aColsWithOneMark.emplace_back( 35, 0, 0, 0, MAXROW, 0 ); + aData.aColsWithOneMark.emplace_back( 35, 0, 0, 0, limits.MaxRow(), 0 ); aData.aColsWithOneMark.emplace_back( 50, 20, 0, 0, 20, 0 ); aData.aColsWithoutOneMark.push_back( 10 ); @@ -642,7 +651,7 @@ void Test::testMultiMark_FourRanges() aData.aColsAllMarked.emplace_back( 10, 20, 0, 0, 20, 0 ); aData.aColsAllMarked.emplace_back( 25, 7, 0, 0, 15, 0 ); aData.aColsAllMarked.emplace_back( 30, 7, 0, 0, 15, 0 ); - aData.aColsAllMarked.emplace_back( 35, 0, 0, 0, MAXROW, 0 ); + aData.aColsAllMarked.emplace_back( 35, 0, 0, 0, limits.MaxRow(), 0 ); aData.aColsAllMarked.emplace_back( 100, 20, 0, 0, 20, 0 ); aData.aColsNotAllMarked.emplace_back( 5, 5, 0, 0, 25, 0 ); @@ -676,11 +685,12 @@ void Test::testMultiMark_FourRanges() void Test::testMultiMark_NegativeMarking() { + ScSheetLimits limits( ScSheetLimits::CreateDefault()); MultiMarkTestData aData; // Create full row = 5 MarkTestData aSingle1; - aSingle1.aRange = ScRange( 0, 5, 0, MAXCOL, 5, 0 ); + aSingle1.aRange = ScRange( 0, 5, 0, limits.MaxCol(), 5, 0 ); aSingle1.bMark = true; // Create rectangle ( 10, 8, 25, 20 ) @@ -690,7 +700,7 @@ void Test::testMultiMark_NegativeMarking() // Create full row = 12 MarkTestData aSingle3; - aSingle3.aRange = ScRange( 0, 12, 0, MAXCOL, 12, 0 ); + aSingle3.aRange = ScRange( 0, 12, 0, limits.MaxCol(), 12, 0 ); aSingle3.bMark = true; // Create deselection rectangle ( 17, 5, 20, 5 ) @@ -765,7 +775,7 @@ void Test::testMultiMark_NegativeMarking() aData.aMarks.push_back( aSingle4 ); aData.aMarks.push_back( aSingle5 ); - aData.aSelectionCover = ScRange( 0, 4, 0, MAXCOL, 21, 0 ); + aData.aSelectionCover = ScRange( 0, 4, 0, limits.MaxCol(), 21, 0 ); aData.aLeftEnvelope.push_back( ScRange( 9, 8, 0, 9, 11, 0 ) ); aData.aLeftEnvelope.push_back( ScRange( 9, 13, 0, 9, 20, 0 ) ); aData.aLeftEnvelope.push_back( ScRange( 18, 10, 0, 18, 14, 0 ) ); @@ -777,17 +787,17 @@ void Test::testMultiMark_NegativeMarking() aData.aRightEnvelope.push_back( ScRange( 26, 13, 0, 26, 20, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 0, 4, 0, 16, 4, 0 ) ); - aData.aTopEnvelope.push_back( ScRange( 21, 4, 0, MAXCOL, 4, 0 ) ); + aData.aTopEnvelope.push_back( ScRange( 21, 4, 0, limits.MaxCol(), 4, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 10, 7, 0, 25, 7, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 0, 11, 0, 9, 11, 0 ) ); - aData.aTopEnvelope.push_back( ScRange( 26, 11, 0, MAXCOL, 11, 0 ) ); + aData.aTopEnvelope.push_back( ScRange( 26, 11, 0, limits.MaxCol(), 11, 0 ) ); aData.aTopEnvelope.push_back( ScRange( 15, 14, 0, 18, 14, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 0, 6, 0, 16, 6, 0 ) ); - aData.aBottomEnvelope.push_back( ScRange( 21, 6, 0, MAXCOL, 6, 0 ) ); + aData.aBottomEnvelope.push_back( ScRange( 21, 6, 0, limits.MaxCol(), 6, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 15, 10, 0, 18, 10, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 0, 13, 0, 9, 13, 0 ) ); - aData.aBottomEnvelope.push_back( ScRange( 26, 13, 0, MAXCOL, 13, 0 ) ); + aData.aBottomEnvelope.push_back( ScRange( 26, 13, 0, limits.MaxCol(), 13, 0 ) ); aData.aBottomEnvelope.push_back( ScRange( 10, 21, 0, 25, 21, 0 ) ); aData.aColsWithOneMark.emplace_back( 19, 8, 0, 0, 20, 0 ); @@ -834,8 +844,7 @@ void Test::testMultiMark_NegativeMarking() void Test::testInsertTabBeforeSelected() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); + ScMarkData aMark(ScSheetLimits::CreateDefault()); aMark.SelectOneTable(0); aMark.InsertTab(0); CPPUNIT_ASSERT_EQUAL(SCTAB(1), aMark.GetSelectCount()); @@ -844,8 +853,7 @@ void Test::testInsertTabBeforeSelected() void Test::testInsertTabAfterSelected() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); + ScMarkData aMark(ScSheetLimits::CreateDefault()); aMark.SelectOneTable(0); aMark.InsertTab(1); CPPUNIT_ASSERT_EQUAL(SCTAB(1), aMark.GetSelectCount()); @@ -854,8 +862,7 @@ void Test::testInsertTabAfterSelected() void Test::testDeleteTabBeforeSelected() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); + ScMarkData aMark(ScSheetLimits::CreateDefault()); aMark.SelectOneTable(1); aMark.DeleteTab(0); CPPUNIT_ASSERT_EQUAL(SCTAB(1), aMark.GetSelectCount()); @@ -864,8 +871,7 @@ void Test::testDeleteTabBeforeSelected() void Test::testDeleteTabAfterSelected() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData aMark(aSheetLimits); + ScMarkData aMark(ScSheetLimits::CreateDefault()); aMark.SelectOneTable(0); aMark.DeleteTab(1); CPPUNIT_ASSERT_EQUAL(SCTAB(1), aMark.GetSelectCount()); @@ -882,17 +888,17 @@ void Test::testScMarkArraySearch_check(const ScMarkArray & ar, SCROW nRow, bool void Test::testScMarkArraySearch() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); + ScSheetLimits limits( ScSheetLimits::CreateDefault()); // empty { - ScMarkArray ar(aSheetLimits); + ScMarkArray ar(limits); testScMarkArraySearch_check(ar, -1, true, 0); testScMarkArraySearch_check(ar, 100, true, 0); } // one range { - ScMarkArray ar(aSheetLimits); + ScMarkArray ar(limits); ar.SetMarkArea(10, 20, true); // 0-9,10-20,21+ @@ -913,7 +919,7 @@ void Test::testScMarkArraySearch() // three ranges { - ScMarkArray ar(aSheetLimits); + ScMarkArray ar(limits); ar.SetMarkArea(10, 20, true); ar.SetMarkArea(21, 30, true); ar.SetMarkArea(50, 100, true); @@ -934,7 +940,7 @@ void Test::testScMarkArraySearch() // three single-row ranges { - ScMarkArray ar(aSheetLimits); + ScMarkArray ar(limits); ar.SetMarkArea(4, 4, true); ar.SetMarkArea(6, 6, true); ar.SetMarkArea(8, 8, true); @@ -954,8 +960,8 @@ void Test::testScMarkArraySearch() // one range { - ScMarkArray ar(aSheetLimits); - ar.SetMarkArea(10, MAXROW, true); + ScMarkArray ar(limits); + ar.SetMarkArea(10, limits.MaxRow(), true); // 0-10,11+ @@ -969,14 +975,14 @@ void Test::testScMarkArraySearch() testScMarkArraySearch_check(ar, 11, true, 1); testScMarkArraySearch_check(ar, 12, true, 1); testScMarkArraySearch_check(ar, 200, true, 1); - testScMarkArraySearch_check(ar, MAXROW, true, 1); + testScMarkArraySearch_check(ar, limits.MaxRow(), true, 1); } } void Test::testIsAllMarked() { - ScSheetLimits aSheetLimits(MAXCOL, MAXROW); - ScMarkData mark(aSheetLimits); + ScSheetLimits limits( ScSheetLimits::CreateDefault()); + ScMarkData mark(limits); ScRange range1( ScAddress( 5, 10, 0 ), ScAddress( 15, 20, 0 )); ScRange range2( ScAddress( 2, 2, 0 ), ScAddress( 25, 30, 0 )); CPPUNIT_ASSERT( !mark.IsAllMarked( range1 )); diff --git a/sc/qa/unit/rangelst_test.cxx b/sc/qa/unit/rangelst_test.cxx index b6a3e3c2d830..040c8835aac1 100644 --- a/sc/qa/unit/rangelst_test.cxx +++ b/sc/qa/unit/rangelst_test.cxx @@ -254,7 +254,7 @@ void Test::testDeleteArea_2Ranges() void Test::testDeleteArea_2Ranges_Case2() { ScRangeList aList(ScRange(1,1,0,1,5,0)); - aList.DeleteArea(0,3,0,MAXCOL,3,0); + aList.DeleteArea(0,3,0,ScSheetLimits::CreateDefault().MaxCol(),3,0); for(SCROW nRow = 1; nRow <= 5; ++nRow) { diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 1d02913dab9c..980fd23d783d 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -6671,7 +6671,7 @@ void Test::testInsertColumnsWithFormulaCells() CPPUNIT_ASSERT_MESSAGE("Columns 2, 4 and 6 should contain formula cells.", equals(aExpected, aCols)); // Insert 2 columns at column A to shift everything to right by 2. - m_pDoc->InsertCol(0, 0, MAXROW, 0, 0, 2); + m_pDoc->InsertCol(0, 0, m_pDoc->MaxRow(), 0, 0, 2); aExpected = { 4, 6, 8 }; aCols = m_pDoc->QueryColumnsWithFormulaCells(0); diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index a1790bb930c9..9b26d2cbc4b0 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -810,7 +810,7 @@ void TestFormula::testFormulaParseReference() // Both columns at sheet bounds and relative => convert to absolute => entire row reference. aRange.aStart.SetTab(0); - nRes = aRange.Parse(m_pDoc->MaxCol() == MAXCOL ? "A2:AMJ2" : "A2:XFD2", *m_pDoc, formula::FormulaGrammar::CONV_OOO); + nRes = aRange.Parse("A2:" + m_pDoc->MaxColAsString() + "2", *m_pDoc, formula::FormulaGrammar::CONV_OOO); CPPUNIT_ASSERT_MESSAGE("Failed to parse.", (nRes & ScRefFlags::VALID)); CPPUNIT_ASSERT_EQUAL(static_cast<SCTAB>(0), aRange.aStart.Tab()); CPPUNIT_ASSERT_EQUAL(static_cast<SCCOL>(0), aRange.aStart.Col()); diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 34e137dd576e..8cb7b1726376 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -94,15 +94,19 @@ using namespace com::sun::star; const sal_uInt16 ScDocument::nSrcVer = SC_CURRENT_VERSION; -static ScSheetLimits* CreateSheetLimits() +ScSheetLimits ScSheetLimits::CreateDefault() { #if HAVE_FEATURE_JUMBO_SHEETS - const ScDefaultsOptions& rOpt = SC_MOD()->GetDefaultsOptions(); - if (rOpt.GetInitJumboSheets()) - return new ScSheetLimits(MAXCOL_JUMBO, MAXROW_JUMBO); + bool jumboSheets = false; + if( SC_MOD()) + jumboSheets = SC_MOD()->GetDefaultsOptions().GetInitJumboSheets(); + else + assert( getenv("LO_TESTNAME") != nullptr ); // in unittests + if (jumboSheets) + return ScSheetLimits(MAXCOL_JUMBO, MAXROW_JUMBO); else #endif - return new ScSheetLimits(MAXCOL, MAXROW); + return ScSheetLimits(MAXCOL, MAXROW); } ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) : @@ -115,7 +119,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) : mpPrinter( nullptr ), mpVirtualDevice_100th_mm( nullptr ), pFormatExchangeList( nullptr ), - mxSheetLimits(CreateSheetLimits()), + mxSheetLimits(new ScSheetLimits(ScSheetLimits::CreateDefault())), pFormulaTree( nullptr ), pEOFormulaTree( nullptr ), pFormulaTrack( nullptr ), |