sc/CppunitTest_sc_tablecolumnsobj.mk |    3 
 sc/CppunitTest_sc_tablerowsobj.mk    |    3 
 sc/CppunitTest_sc_tablesheetobj.mk   |    3 
 sc/inc/sheetlimits.hxx               |    9 +-
 sc/qa/extras/sctablecolumnsobj.cxx   |    4 
 sc/qa/extras/sctablerowsobj.cxx      |    4 
 sc/qa/extras/sctablesheetobj.cxx     |    7 +
 sc/qa/unit/mark_test.cxx             |  146 ++++++++++++++++++-----------------
 sc/qa/unit/rangelst_test.cxx         |    2 
 sc/qa/unit/ucalc.cxx                 |    2 
 sc/qa/unit/ucalc_formula.cxx         |    2 
 sc/source/core/data/documen2.cxx     |   16 ++-
 12 files changed, 115 insertions(+), 86 deletions(-)

New commits:
commit 31e0ada711a008d7841a2da243ce50bc49c6c857
Author:     Luboš Luňák <l.lu...@collabora.com>
AuthorDate: Fri Mar 4 20:42:59 2022 +0100
Commit:     Luboš Luňák <l.lu...@collabora.com>
CommitDate: Sat Mar 5 08:30:59 2022 +0100

    remove more hardcoded sheet sizes from Calc tests
    
    E.g. sctablesheetobj test had the limits hardcoded, even as actual
    numbers. Apparently some tests cannot easily access global
    settings, but this at least makes it easy to check all tests
    after modifying ScSheetLimits::CreateDefault().
    
    Change-Id: I6cff577fb01b1ea262dcd1f9fde24e114e19abdc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131040
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lu...@collabora.com>

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 ),

Reply via email to