[Libreoffice-commits] core.git: sc/qa

Xisco Fauli (via logerrit) logerrit at kemper.freedesktop.org
Tue May 11 21:22:14 UTC 2021


 sc/qa/unit/ucalc.cxx               |   35 ++++++--------
 sc/qa/unit/ucalc.hxx               |   33 -------------
 sc/qa/unit/ucalc_formula.cxx       |   66 +++++++++++++--------------
 sc/qa/unit/ucalc_pivottable.cxx    |   53 ++++++++++-----------
 sc/qa/unit/ucalc_sharedformula.cxx |   90 ++++++++++++++++++-------------------
 sc/qa/unit/ucalc_sort.cxx          |   64 +++++++++++++-------------
 6 files changed, 153 insertions(+), 188 deletions(-)

New commits:
commit 5d7251c7121cee8885fa9f2387c4a0625dd4ecee
Author:     Xisco Fauli <xiscofauli at libreoffice.org>
AuthorDate: Tue May 11 22:25:02 2021 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Tue May 11 23:21:21 2021 +0200

    sc_ucalc: remove duplicated method
    
    Change-Id: I720c40bfc218b3f442217d3bb7189fce1baaf4a3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115449
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 2774772365b1..46220aa76f55 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -924,12 +924,11 @@ struct HoriIterCheck
     const char* pVal;
 };
 
-template<size_t Size>
-bool checkHorizontalIterator(ScDocument& rDoc, const char* pData[][Size], size_t nDataCount, const HoriIterCheck* pChecks, size_t nCheckCount)
+bool checkHorizontalIterator(ScDocument& rDoc, const std::vector<std::vector<const char*>>& rData, const HoriIterCheck* pChecks, size_t nCheckCount)
 {
     ScAddress aPos(0,0,0);
-    Test::insertRangeData(&rDoc, aPos, pData, nDataCount);
-    ScHorizontalCellIterator aIter(rDoc, 0, 0, 0, 1, nDataCount-1);
+    Test::insertRangeData(&rDoc, aPos, rData);
+    ScHorizontalCellIterator aIter(rDoc, 0, 0, 0, 1, rData.size() - 1);
 
     SCCOL nCol;
     SCROW nRow;
@@ -974,7 +973,7 @@ void Test::testHorizontalIterator()
 
     {
         // Raw data - mixed types
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             { "A", "B" },
             { "C", "1" },
             { "D", "2" },
@@ -993,7 +992,7 @@ void Test::testHorizontalIterator()
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks));
+            *m_pDoc, aData, aChecks, SAL_N_ELEMENTS(aChecks));
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test mixed.");
@@ -1001,7 +1000,7 @@ void Test::testHorizontalIterator()
 
     {
         // Raw data - 'hole' data
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             { "A", "B" },
             { "C",  nullptr  },
             { "D", "E" },
@@ -1016,7 +1015,7 @@ void Test::testHorizontalIterator()
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks));
+            *m_pDoc, aData, aChecks, SAL_N_ELEMENTS(aChecks));
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test hole.");
@@ -1024,7 +1023,7 @@ void Test::testHorizontalIterator()
 
     {
         // Very holy data
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             {  nullptr,  "A" },
             {  nullptr,   nullptr  },
             {  nullptr,  "1" },
@@ -1049,7 +1048,7 @@ void Test::testHorizontalIterator()
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks));
+            *m_pDoc, aData, aChecks, SAL_N_ELEMENTS(aChecks));
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test holy.");
@@ -1057,14 +1056,14 @@ void Test::testHorizontalIterator()
 
     {
         // Degenerate case
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             {  nullptr,   nullptr },
             {  nullptr,   nullptr },
             {  nullptr,   nullptr },
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), nullptr, 0);
+            *m_pDoc, aData, nullptr, 0);
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test degenerate.");
@@ -1072,7 +1071,7 @@ void Test::testHorizontalIterator()
 
     {
         // Data at end
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             {  nullptr,   nullptr },
             {  nullptr,   nullptr },
             {  nullptr,  "A" },
@@ -1083,7 +1082,7 @@ void Test::testHorizontalIterator()
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks));
+            *m_pDoc, aData, aChecks, SAL_N_ELEMENTS(aChecks));
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test at end.");
@@ -1091,7 +1090,7 @@ void Test::testHorizontalIterator()
 
     {
         // Data in middle
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             {  nullptr,   nullptr  },
             {  nullptr,   nullptr  },
             {  nullptr,  "A" },
@@ -1105,7 +1104,7 @@ void Test::testHorizontalIterator()
         };
 
         bool bRes = checkHorizontalIterator(
-            *m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks));
+            *m_pDoc, aData, aChecks, SAL_N_ELEMENTS(aChecks));
 
         if (!bRes)
             CPPUNIT_FAIL("Failed on test in middle.");
@@ -11693,7 +11692,7 @@ void Test::testFormulaToValue()
 
     m_pDoc->InsertTab(0, "Test");
 
-    const char* aData[][3] = {
+    std::vector<std::vector<const char*>> aData = {
         { "=1", "=RC[-1]*2", "=ISFORMULA(RC[-1])" },
         { "=2", "=RC[-1]*2", "=ISFORMULA(RC[-1])" },
         { "=3", "=RC[-1]*2", "=ISFORMULA(RC[-1])" },
@@ -11703,7 +11702,7 @@ void Test::testFormulaToValue()
     };
 
     ScAddress aPos(1,2,0); // B3
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     {
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 5a0b1e2c5b5b..c265ca13db67 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -73,39 +73,6 @@ public:
     static ScRange insertRangeData(ScDocument* pDoc, const ScAddress& rPos,
                                    const std::vector<std::vector<const char*>>& rData);
 
-    template <size_t Size>
-    static ScRange insertRangeData(ScDocument* pDoc, const ScAddress& rPos,
-                                   const char* aData[][Size], size_t nRowCount)
-    {
-        ScRange aRange(rPos);
-        aRange.aEnd.SetCol(rPos.Col() + Size - 1);
-        aRange.aEnd.SetRow(rPos.Row() + nRowCount - 1);
-
-        clearRange(pDoc, aRange);
-
-        for (size_t i = 0; i < Size; ++i)
-        {
-            for (size_t j = 0; j < nRowCount; ++j)
-            {
-                if (!aData[j][i])
-                    continue;
-
-                SCCOL nCol = i + rPos.Col();
-                SCROW nRow = j + rPos.Row();
-                OUString aStr(aData[j][i], strlen(aData[j][i]), RTL_TEXTENCODING_UTF8);
-
-                ScSetStringParam aParam; // Leave default.
-                aParam.meStartListening = sc::NoListening;
-                pDoc->SetString(nCol, nRow, rPos.Tab(), aStr, &aParam);
-            }
-        }
-
-        pDoc->StartAllListeners(aRange);
-
-        printRange(pDoc, aRange, "Range data content");
-        return aRange;
-    }
-
     Test();
     virtual ~Test() override;
 
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 30ece5cd5116..93cd3b5f24d9 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -4591,7 +4591,7 @@ void Test::testFuncCOUNTBLANK()
     sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
     m_pDoc->InsertTab(0, "Formula");
 
-    const char* aData[][4] = {
+    std::vector<std::vector<const char*>> aData = {
         { "1", nullptr, "=B1", "=\"\"" },
         { "2", nullptr, "=B2", "=\"\"" },
         { "A", nullptr, "=B3", "=\"\"" },
@@ -4601,7 +4601,7 @@ void Test::testFuncCOUNTBLANK()
     };
 
     ScAddress aPos(0,0,0);
-    ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     CPPUNIT_ASSERT_EQUAL(1.0, m_pDoc->GetValue(ScAddress(0,5,0)));
@@ -4613,7 +4613,7 @@ void Test::testFuncCOUNTBLANK()
 
     clearSheet(m_pDoc, 0);
 
-    const char* aData2[][2] = {
+    std::vector<std::vector<const char*>> aData2 = {
         { "1",     "=COUNTBLANK(A1)" },
         { "A",     "=COUNTBLANK(A2)" },
         {   nullptr,     "=COUNTBLANK(A3)" },
@@ -4621,7 +4621,7 @@ void Test::testFuncCOUNTBLANK()
         { "=A4"  , "=COUNTBLANK(A5)" },
     };
 
-    aRange = insertRangeData(m_pDoc, aPos, aData2, SAL_N_ELEMENTS(aData2));
+    aRange = insertRangeData(m_pDoc, aPos, aData2);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     CPPUNIT_ASSERT_EQUAL(0.0, m_pDoc->GetValue(ScAddress(1,0,0)));
@@ -5149,14 +5149,14 @@ void Test::testFuncIF()
     // references, data in A5:C8, matrix formula in D4 so there is no
     // implicit intersection between formula and ranges.
     {
-        const char* aData[][3] = {
+        std::vector<std::vector<const char*>> aData = {
             { "1", "1", "16" },
             { "0", "1", "32" },
             { "1", "0", "64" },
             { "0", "0", "128" }
         };
         ScAddress aPos(0,4,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
     m_pDoc->InsertMatrixFormula(3,3, 3,3, aMark, "=SUM(IF(A5:A8;IF(B5:B8;C5:C8;0);0))");
@@ -5270,7 +5270,7 @@ void Test::testFuncIFERROR()
     }
 
     const SCCOL nCols = 3;
-    const char* aData2[][nCols] = {
+    std::vector<std::vector<const char*>> aData2 = {
         { "1", "2",    "3" },
         { "4", "=1/0", "6" },
         { "7", "8",    "9" }
@@ -5283,7 +5283,7 @@ void Test::testFuncIFERROR()
 
     // Data in C1:E3
     ScAddress aPos(2,0,0);
-    ScRange aRange = insertRangeData(m_pDoc, aPos, aData2, SAL_N_ELEMENTS(aData2));
+    ScRange aRange = insertRangeData(m_pDoc, aPos, aData2);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     // Array formula in F4:H6
@@ -5712,7 +5712,7 @@ void Test::testFuncVLOOKUP()
     // scalar value parameter in a function that has a ReferenceOrForceArray
     // type parameter somewhere else and formula is not in array mode,
     // VLOOKUP(Value;ReferenceOrForceArray;...)
-    const char* aData2[][5] = {
+    std::vector<std::vector<const char*>> aData2 = {
         { "1", "one",   "3", "=VLOOKUP(C21:C24;A21:B24;2;0)", "three" },
         { "2", "two",   "1", "=VLOOKUP(C21:C24;A21:B24;2;0)", "one"   },
         { "3", "three", "4", "=VLOOKUP(C21:C24;A21:B24;2;0)", "four"  },
@@ -5720,11 +5720,11 @@ void Test::testFuncVLOOKUP()
     };
 
     ScAddress aPos2(0,20,0);
-    ScRange aRange2 = insertRangeData(m_pDoc, aPos2, aData2, SAL_N_ELEMENTS(aData2));
+    ScRange aRange2 = insertRangeData(m_pDoc, aPos2, aData2);
     CPPUNIT_ASSERT_EQUAL(aPos2, aRange2.aStart);
 
     aPos2.SetCol(3);    // column D formula results
-    for (size_t i=0; i < SAL_N_ELEMENTS(aData2); ++i)
+    for (size_t i=0; i < aData2.size(); ++i)
     {
         CPPUNIT_ASSERT_EQUAL( OUString::createFromAscii( aData2[i][4]), m_pDoc->GetString(aPos2));
         aPos2.IncRow();
@@ -5991,7 +5991,7 @@ void Test::testFuncDATEDIF()
     CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet",
                             m_pDoc->InsertTab (0, "foo"));
 
-    const char* aData[][5] = {
+    std::vector<std::vector<const char*>> aData = {
         { "2007-01-01", "2007-01-10",  "d",   "9", "=DATEDIF(A1;B1;C1)" } ,
         { "2007-01-01", "2007-01-31",  "m",   "0", "=DATEDIF(A2;B2;C2)" } ,
         { "2007-01-01", "2007-02-01",  "m",   "1", "=DATEDIF(A3;B3;C3)" } ,
@@ -6009,14 +6009,14 @@ void Test::testFuncDATEDIF()
         { "2007-01-02", "2007-01-01", "md", "Err:502", "=DATEDIF(A15;B15;C15)" }    // fail date1 > date2
     };
 
-    clearRange( m_pDoc, ScRange(0, 0, 0, 4, SAL_N_ELEMENTS(aData), 0));
+    clearRange( m_pDoc, ScRange(0, 0, 0, 4, aData.size(), 0));
     ScAddress aPos(0,0,0);
-    ScRange aDataRange = insertRangeData( m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData( m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     m_pDoc->CalcAll();
 
-    for (size_t i = 0; i < SAL_N_ELEMENTS(aData); ++i)
+    for (size_t i = 0; i < aData.size(); ++i)
     {
         OUString aVal = m_pDoc->GetString( 4, i, 0);
         //std::cout << "row "<< i << ": " << OUStringToOString( aVal, RTL_TEXTENCODING_UTF8).getStr() << ", expected " << aData[i][3] << std::endl;
@@ -6350,13 +6350,13 @@ void Test::testFormulaDepTracking3()
 
     m_pDoc->InsertTab(0, "Formula");
 
-    const char* pData[][4] = {
+    std::vector<std::vector<const char*>> aData = {
         { "1", "2", "=SUM(A1:B1)", "=SUM(C1:C3)" },
         { "3", "4", "=SUM(A2:B2)", nullptr },
         { "5", "6", "=SUM(A3:B3)", nullptr },
     };
 
-    insertRangeData(m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData));
+    insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
 
     // Check the initial formula results.
     CPPUNIT_ASSERT_EQUAL( 3.0, m_pDoc->GetValue(ScAddress(2,0,0)));
@@ -6432,7 +6432,7 @@ void Test::testFormulaDepTrackingDeleteCol()
 
     m_pDoc->InsertTab(0, "Formula");
 
-    const char* aData[][3] = {
+    std::vector<std::vector<const char*>> aData = {
         { "2", "=A1", "=B1" }, // not grouped
         { nullptr, nullptr, nullptr },           // empty row to separate the formula groups.
         { "3", "=A3", "=B3" }, // grouped
@@ -6440,7 +6440,7 @@ void Test::testFormulaDepTrackingDeleteCol()
     };
 
     ScAddress aPos(0,0,0);
-    ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     // Check the initial values.
@@ -6959,7 +6959,7 @@ void Test::testExternalRefUnresolved()
     // Test error propagation of unresolved (not existing document) external
     // references. Well, let's hope no build machine has such file with sheet...
 
-    const char* aData[][1] = {
+    std::vector<std::vector<const char*>> aData = {
         { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1" },
         { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1+23" },
         { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1&\"W\"" },
@@ -6991,7 +6991,7 @@ void Test::testExternalRefUnresolved()
     };
 
     ScAddress aPos(0,0,0);
-    ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     std::vector<std::vector<const char*>> aOutputCheck = {
@@ -7159,14 +7159,14 @@ void Test::testFuncFORMULA()
     m_pDoc->InsertTab(0, "Sheet1");
 
     // Data in B1:D3
-    const char* aData[][3] = {
+    std::vector<std::vector<const char*>> aData = {
         { "=A1", "=FORMULA(B1)", "=FORMULA(B1:B3)" },
         {     nullptr, "=FORMULA(B2)", "=FORMULA(B1:B3)" },
         { "=A3", "=FORMULA(B3)", "=FORMULA(B1:B3)" },
     };
 
     ScAddress aPos(1,0,0);
-    ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
 
     // Checks of C1:D3, where Cy==Dy, and D4:D6
@@ -7215,14 +7215,14 @@ void Test::testFuncTableRef()
 
     {
         // Populate "table" database range with headers and data in A1:B4
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             { "Header1", "Header2" },
             { "1", "2" },
             { "4", "8" },
             { "16", "32" }
         };
         ScAddress aPos(0,0,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
 
@@ -7342,7 +7342,7 @@ void Test::testFuncTableRef()
         // inserted column, B1:B4 plus a table formula in B6. The empty header
         // should result in the internal table column name "Column2" that is
         // used in the formula.
-        const char* aData[][1] = {
+        std::vector<std::vector<const char*>> aData = {
             { "" },
             { "64" },
             { "128" },
@@ -7351,7 +7351,7 @@ void Test::testFuncTableRef()
             { pColumn2Formula }
         };
         ScAddress aPos(1,0,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
 
@@ -7393,13 +7393,13 @@ void Test::testFuncTableRef()
 
     {
         // Populate "hltable" database range with data in E10:F12
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             { "1", "2" },
             { "4", "8" },
             { "16", "32" }
         };
         ScAddress aPos(4,9,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
 
@@ -7516,7 +7516,7 @@ void Test::testFuncTableRef()
         // column, F10:F12 plus a table formula in F14. The new header should
         // result in the internal table column name "Column3" that is used in
         // the formula.
-        const char* aData[][1] = {
+        std::vector<std::vector<const char*>> aData = {
             { "64" },
             { "128" },
             { "256" },
@@ -7524,7 +7524,7 @@ void Test::testFuncTableRef()
             { pColumn3Formula }
         };
         ScAddress aPos(5,9,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
 
@@ -8723,7 +8723,7 @@ void Test::testMatConcat()
     }
 
     {   // Data in A12:B16
-        const char* aData[][2] = {
+        std::vector<std::vector<const char*>> aData = {
             { "q", "w" },
             { "a",  "" },
             {  "", "x" },
@@ -8732,7 +8732,7 @@ void Test::testMatConcat()
         };
 
         ScAddress aPos(0,11,0);
-        ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
     }
     // Matrix formula in C17:C21
diff --git a/sc/qa/unit/ucalc_pivottable.cxx b/sc/qa/unit/ucalc_pivottable.cxx
index 218e8e9dc942..027074cc4e2e 100644
--- a/sc/qa/unit/ucalc_pivottable.cxx
+++ b/sc/qa/unit/ucalc_pivottable.cxx
@@ -775,7 +775,7 @@ void Test::testPivotTableCache()
     m_pDoc->InsertTab(0, "Data");
 
     // Raw data
-    const char* aData[][3] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "F1", "F2", "F3" },
         { "Z",  "A", "30" },
         { "R",  "A", "20" },
@@ -786,7 +786,7 @@ void Test::testPivotTableCache()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPCache aCache(*m_pDoc);
@@ -981,7 +981,7 @@ void Test::testPivotTableDuplicateDataFields()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A",       "45" },
         { "A",        "5" },
@@ -1003,7 +1003,7 @@ void Test::testPivotTableDuplicateDataFields()
     };
 
     ScAddress aPos(2,2,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -1076,7 +1076,7 @@ void Test::testPivotTableNormalGrouping()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A", "1" },
         { "B", "2" },
@@ -1094,7 +1094,7 @@ void Test::testPivotTableNormalGrouping()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -1225,7 +1225,7 @@ void Test::testPivotTableNumberGrouping()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Order", "Score" },
         { "43", "171" },
         { "18", "20"  },
@@ -1254,7 +1254,7 @@ void Test::testPivotTableNumberGrouping()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -1318,7 +1318,7 @@ void Test::testPivotTableDateGrouping()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Date", "Value" },
         { "2011-01-01", "1" },
         { "2011-03-02", "2" },
@@ -1337,7 +1337,7 @@ void Test::testPivotTableDateGrouping()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -1490,7 +1490,7 @@ void Test::testPivotTableEmptyRows()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A", "1" },
         { "B", "2" },
@@ -1505,7 +1505,7 @@ void Test::testPivotTableEmptyRows()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     // Extend the range downward to include some trailing empty rows.
@@ -1704,7 +1704,7 @@ void Test::testPivotTableCaseInsensitiveStrings()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A", "1" },
         { "a", "2" },
@@ -1717,7 +1717,7 @@ void Test::testPivotTableCaseInsensitiveStrings()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -1757,7 +1757,7 @@ void Test::testPivotTableNumStability()
     FormulaGrammarSwitch aFGSwitch(m_pDoc, formula::FormulaGrammar::GRAM_ENGLISH_XL_R1C1);
 
     // Raw Data
-    const char* aData[][4] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name",   "Time Start", "Time End", "Total"          },
         { "Sam",    "07:48 AM",   "09:00 AM", "=RC[-1]-RC[-2]" },
         { "Sam",    "09:00 AM",   "10:30 AM", "=RC[-1]-RC[-2]" },
@@ -1793,9 +1793,8 @@ void Test::testPivotTableNumStability()
     m_pDoc->InsertTab(0, "Data");
     m_pDoc->InsertTab(1, "Table");
 
-    size_t const nRowCount = SAL_N_ELEMENTS(aData);
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, nRowCount);
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
 
     // Insert formulas to manually calculate sums for each name.
     m_pDoc->SetString(aDataRange.aStart.Col(), aDataRange.aEnd.Row()+1, aDataRange.aStart.Tab(), "=SUMIF(R[-23]C:R[-1]C;\"Dennis\";R[-23]C[3]:R[-1]C[3])");
@@ -1861,7 +1860,7 @@ void Test::testPivotTableFieldReference()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A", "1" },
         { "B", "2" },
@@ -1876,7 +1875,7 @@ void Test::testPivotTableFieldReference()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = createDPFromRange(
@@ -2027,7 +2026,7 @@ void Test::testPivotTableDocFunc()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name",      "Value" },
         { "Sun",       "1" },
         { "Oracle",    "2" },
@@ -2044,7 +2043,7 @@ void Test::testPivotTableDocFunc()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     std::unique_ptr<ScDPObject> pDPObj(createDPFromRange(
@@ -2095,7 +2094,7 @@ void Test::testFuncGETPIVOTDATA()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Name", "Value" },
         { "A", "1" },
         { "A", "2" },
@@ -2106,7 +2105,7 @@ void Test::testFuncGETPIVOTDATA()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = nullptr;
@@ -2251,7 +2250,7 @@ void Test::testFuncGETPIVOTDATALeafAccess()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][3] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Type", "Member", "Value" },
         { "A", "Anna", "1" },
         { "B", "Brittany", "2" },
@@ -2260,7 +2259,7 @@ void Test::testFuncGETPIVOTDATALeafAccess()
     };
 
     ScAddress aPos(1,1,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     ScDPObject* pDPObj = nullptr;
@@ -2504,7 +2503,7 @@ void Test::testPivotTableMedianFunc()
     m_pDoc->InsertTab(1, "Table");
 
     // Raw data
-    const char* aData[][4] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Condition", "Day1Hit", "Day1Miss", "Day1FalseAlarm" },
         { "False Memory", "7", "3", "0" },
         { "Control", "10", "0", "1" },
@@ -2535,7 +2534,7 @@ void Test::testPivotTableMedianFunc()
     };
 
     ScAddress aPos(1, 1, 0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
 
     std::unique_ptr<ScDPObject> pDPObj(createDPFromRange(
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 20d111b3e2cd..3efd3fc448a3 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -280,12 +280,12 @@ void Test::testSharedFormulas()
     aPos.Set(2,0,0);
     {
         // Insert data in C1:D2 and formulas in E1:E2
-        const char* pData[][3] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "5", "1", "=C:C/D:D" },
             { "4", "2", "=C:C/D:D" }
         };
 
-        insertRangeData(m_pDoc, aPos, pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, aPos, aData);
     }
     aPos.Set(4,1,0);
     pFC = m_pDoc->GetFormulaCell(aPos);
@@ -315,13 +315,13 @@ void Test::testSharedFormulasRefUpdate()
 
     {
         // Insert formulas that reference A10:A12 in B1:B3.
-        const char* pData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "=A10" },
             { "=A11" },
             { "=A12" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(1,0,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(1,0,0), aData);
     }
 
     ASSERT_FORMULA_EQUAL(*m_pDoc, ScAddress(1,0,0), "A10", "Wrong formula in B1");
@@ -455,14 +455,14 @@ void Test::testSharedFormulasRefUpdateMove()
     CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(1,2,0)));
     CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(ScAddress(1,3,0)));
 
-    const char* aData[][1] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "=RC[-1]" },
         { "=RC[-1]" },
         { "=RC[-1]" }
     };
 
     // Set formulas in C2:C4 that reference B2:B4 individually.
-    insertRangeData(m_pDoc, ScAddress(2,1,0), aData, SAL_N_ELEMENTS(aData));
+    insertRangeData(m_pDoc, ScAddress(2,1,0), aData);
 
     // Check the formula results.
     CPPUNIT_ASSERT_EQUAL(1.0, m_pDoc->GetValue(ScAddress(2,1,0)));
@@ -522,13 +522,13 @@ void Test::testSharedFormulasRefUpdateMove2()
 
     {
         // Set formulas in C2:C3 that reference B2:B3 individually, and F2:F3 to E2:E3.
-        const char* pData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "=RC[-1]" },
             { "=RC[-1]" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(2,1,0), pData, SAL_N_ELEMENTS(pData));
-        insertRangeData(m_pDoc, ScAddress(5,1,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(2,1,0), aData);
+        insertRangeData(m_pDoc, ScAddress(5,1,0), aData);
     }
 
     m_pDoc->CalcFormulaTree(); // calculate manually.
@@ -583,13 +583,13 @@ void Test::testSharedFormulasRefUpdateRange()
 
     {
         // Insert formulas to B3:B5.
-        const char* pData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "=SUM($A$3:$A$5)" },
             { "=SUM($A$3:$A$5)" },
             { "=SUM($A$3:$A$5)" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(1,2,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(1,2,0), aData);
     }
 
     ASSERT_FORMULA_EQUAL(*m_pDoc, ScAddress(1,2,0), "SUM($A$3:$A$5)", "Wrong formula");
@@ -665,7 +665,7 @@ void Test::testSharedFormulasRefUpdateRangeDeleteRow()
 
     ScRange aWholeArea(0, 0, 0, 100, 100, 0); // Large enough for all references used in the test.
 
-    const char* aData[][3] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "1", "2", "=SUM(A1:B1)" },
         { "3", "4", "=SUM(A2:B2)" },
         { nullptr, nullptr, nullptr },
@@ -673,7 +673,7 @@ void Test::testSharedFormulasRefUpdateRangeDeleteRow()
         { "7", "8", "=SUM(A5:B5)" }
     };
 
-    insertRangeData(m_pDoc, ScAddress(0,0,0), aData, SAL_N_ELEMENTS(aData));
+    insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
 
     // Check initial formula values.
     CPPUNIT_ASSERT_EQUAL( 3.0, m_pDoc->GetValue(ScAddress(2,0,0)));
@@ -800,14 +800,14 @@ void Test::testSharedFormulasRefUpdateExternal()
     {
         // Insert formula cells in A7:A10 of the host document, referencing A1:A3
         // of the external document.
-        const char* pData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "='file:///extdata.fake'#$Data.A1" },
             { "='file:///extdata.fake'#$Data.A2" },
             { "='file:///extdata.fake'#$Data.A3" },
             { "=COUNTA('file:///extdata.fake'#$Data.A1:A3)" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(0,6,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(0,6,0), aData);
     }
 
     // Check the formula results.
@@ -926,14 +926,14 @@ void Test::testSharedFormulasInsertRow()
 
     {
         // Set formula cells in B1:B4 all referencing A4 as absolute reference.
-        const char* pData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "=$A$4" },
             { "=$A$4" },
             { "=$A$4" },
             { "=$A$4" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(1,0,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(1,0,0), aData);
     }
 
     // Insert a new row at row 3.
@@ -969,7 +969,7 @@ void Test::testSharedFormulasDeleteRows()
     {
         // Fill data cells A1:A20 and formula cells B1:B20.  Formulas in
         // B1:B10 and B11:B20 should be different.
-        const char* pData[][2] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "0", "=RC[-1]+1" },
             { "1", "=RC[-1]+1" },
             { "2", "=RC[-1]+1" },
@@ -992,7 +992,7 @@ void Test::testSharedFormulasDeleteRows()
             { "19", "=RC[-1]+11" }
         };
 
-        insertRangeData(m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData));
+        insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
     }
 
     // B1:B10 should be shared.
@@ -1698,13 +1698,13 @@ void Test::testSharedFormulaAbsCellListener()
 
     m_pDoc->SetValue(ScAddress(0,0,0), 1.0);
 
-    const char* pData[][1] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "=$A$1" },
         { "=$A$1" },
         { "=$A$1" }
     };
 
-    insertRangeData(m_pDoc, ScAddress(1,0,0), pData, SAL_N_ELEMENTS(pData));
+    insertRangeData(m_pDoc, ScAddress(1,0,0), aData);
 
     // A1 should have 3 listeners listening into it.
     const SvtBroadcaster* pBC = m_pDoc->GetBroadcaster(ScAddress(0,0,0));
@@ -1747,14 +1747,14 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
     m_pDoc->InsertTab(0, "Test");
 
-    const char* pData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "=SUM(B1:B2)", "1" },
         { "=SUM(B2:B3)", "2" },
         { "=SUM(B3:B4)", "4" },
         {             nullptr, "8" }
     };
 
-    insertRangeData(m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData));
+    insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
 
     // Check that A1:A3 is a formula group.
     const ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(0,0,0));
@@ -1775,14 +1775,14 @@ void Test::testSharedFormulaUnshareAreaListeners()
     {
         // Data in A2:C6
         const ScAddress aOrgPos(0,1,0);
-        const char* pData2[][3] = {
+        const std::vector<std::vector<const char*>> aData2 = {
             { "=SUM(B2:C2)",   "1",   "2" },
             { "=SUM(B3:C3)",   "4",   "8" },
             { "=SUM(B4:C4)",  "16",  "32" },
             { "=SUM(B5:C5)",  "64", "128" },
             { "=SUM(B6:C6)", "256", "512" },
         };
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Check that A2:A6 is a formula group.
         pFC = m_pDoc->GetFormulaCell(aOrgPos);
@@ -1875,7 +1875,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
         ScAddress aPos( ScAddress::UNINITIALIZED);
         ScFormulaCell* pCell;
         std::vector<ScFormulaCell*> aCells;
-        const char* pData2[][3] = {
+        const std::vector<std::vector<const char*>> aData2 = {
             { "=SUM(B3:C3)",   "1",   "2" },
             { "=SUM(B4:C4)",   "4",   "8" },
             { "=SUM(B5:C5)",  "16",  "32" },
@@ -1883,7 +1883,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
             { "=SUM(B7:C7)", "256", "512" },
         };
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Add grouping formulas in A1:A2, keep A3:A7
         aPos = ScAddress(0,0,0);
@@ -1908,7 +1908,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Add formulas in A1:A2, keep A3:A7
         aPos = ScAddress(0,0,0);
@@ -1939,7 +1939,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Add formula in A2, overwrite A3, keep A4:A7
         aPos = ScAddress(0,1,0);
@@ -1970,7 +1970,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Overwrite A3:A4, keep A5:A7
         aPos = ScAddress(0,2,0);
@@ -2002,7 +2002,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3, overwrite A4:A5, keep A6:A7
         aPos = ScAddress(0,3,0);
@@ -2038,7 +2038,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3:A4, overwrite A5:A6, keep A7
         aPos = ScAddress(0,4,0);
@@ -2074,7 +2074,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3:A5, overwrite A6:A7
         aPos = ScAddress(0,5,0);
@@ -2106,7 +2106,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3:A6, overwrite A7, add A8
         aPos = ScAddress(0,6,0);
@@ -2138,7 +2138,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3:A7, add A8:A9
         aPos = ScAddress(0,7,0);
@@ -2170,7 +2170,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Keep A3:A7, add grouping formulas in A8:A9
         aPos = ScAddress(0,7,0);
@@ -2196,7 +2196,7 @@ void Test::testSharedFormulaUnshareAreaListeners()
 
         clearRange(m_pDoc, ScRange( 0,0,0, 2,8,0));
 
-        insertRangeData(m_pDoc, aOrgPos, pData2, SAL_N_ELEMENTS(pData2));
+        insertRangeData(m_pDoc, aOrgPos, aData2);
 
         // Overwrite grouping formulas in A4:A5
         aPos = ScAddress(0,3,0);
@@ -2233,17 +2233,17 @@ void Test::testSharedFormulaListenerDeleteArea()
     m_pDoc->InsertTab(0, "Test0");
     m_pDoc->InsertTab(1, "Test1");
 
-    const char* pData0[][3] = {
+    const std::vector<std::vector<const char*>> aData0 = {
         { "", "", "=Test1.C1" },
         { "", "", "=Test1.C2" }
     };
-    const char* pData1[][3] = {
+    const std::vector<std::vector<const char*>> aData1 = {
         { "=Test0.A1", "=Test0.B1", "=SUM(A1:B1)" },
         { "=Test0.A2", "=Test0.B2", "=SUM(A2:B2)" },
     };
 
-    insertRangeData(m_pDoc, ScAddress(0,0,0), pData0, SAL_N_ELEMENTS(pData0));
-    insertRangeData(m_pDoc, ScAddress(0,0,1), pData1, SAL_N_ELEMENTS(pData1));
+    insertRangeData(m_pDoc, ScAddress(0,0,0), aData0);
+    insertRangeData(m_pDoc, ScAddress(0,0,1), aData1);
 
     // Check that Test1.A1:A2 and Test1.B1:B2 are formula groups.
     const ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(0,0,1));
@@ -2276,7 +2276,7 @@ void Test::testSharedFormulaUpdateOnReplacement()
 
     m_pDoc->InsertTab(0, "Test");
 
-    const char* pData[][1] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "1"              },
         { "=SUM($A$1:$A1)" },
         { "=SUM($A$1:$A2)" },
@@ -2287,7 +2287,7 @@ void Test::testSharedFormulaUpdateOnReplacement()
         { "=SUM($A$1:$A7)" }
     };
 
-    insertRangeData(m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData));
+    insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
 
     // Check that A2:A8 is a formula group.
     const ScFormulaCell* pFC = m_pDoc->GetFormulaCell(ScAddress(0,1,0));
@@ -2431,12 +2431,12 @@ void Test::testSharedFormulaDeleteTopCell()
 
     m_pDoc->InsertTab(0, "Test");
 
-    const char* pData[][2] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "=SUM(B$1:B$2)", "1" },
         { "=SUM(B$1:B$2)", "2" }
     };
 
-    insertRangeData( m_pDoc, ScAddress(0,0,0), pData, SAL_N_ELEMENTS(pData));
+    insertRangeData( m_pDoc, ScAddress(0,0,0), aData);
 
     // Check that A1:A2 is a formula group.
     const ScFormulaCell* pFC = m_pDoc->GetFormulaCell( ScAddress(0,0,0));
diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx
index d63bab256367..8ff3cf58e60d 100644
--- a/sc/qa/unit/ucalc_sort.cxx
+++ b/sc/qa/unit/ucalc_sort.cxx
@@ -42,15 +42,15 @@ void Test::testSort()
 
     ScAddress aPos(0,0,0);
     {
-        const char* aData[][2] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "2", "4" },
             { "4", "1" },
             { "1", "2" },
             { "1", "23" },
         };
 
-        clearRange(m_pDoc, ScRange(0, 0, 0, 1, SAL_N_ELEMENTS(aData), 0));
-        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, 0, 1, aData.size(), 0));
+        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
     }
 
@@ -82,7 +82,7 @@ void Test::testSort()
     clearRange(m_pDoc, ScRange(0, 0, 0, 1, 9, 0)); // Clear A1:B10.
     {
         // 0 = empty cell
-        const char* aData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "Title" },
             { nullptr },
             { nullptr },
@@ -93,7 +93,7 @@ void Test::testSort()
             { "123" }
         };
 
-        aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
     }
 
@@ -141,7 +141,7 @@ void Test::testSortHorizontal()
     // Test case from fdo#78079.
 
     // 0 = empty cell
-    const char* aData[][4] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "table", "has UNIQUE", "Publish to EC2", "flag" },
         { "w2gi.mobilehit", "Yes", "No", "=CONCATENATE(B2;\"-\";C2)" },
         { "w2gi.visitors", "No", "No", "=CONCATENATE(B3;\"-\";C3)" },
@@ -149,7 +149,7 @@ void Test::testSortHorizontal()
     };
 
     // Insert raw data into A1:D4.
-    ScRange aDataRange = insertRangeData(m_pDoc, ScAddress(0,0,0), aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, ScAddress(0,0,0), aData);
     CPPUNIT_ASSERT_EQUAL(OUString("A1:D4"), aDataRange.Format(*m_pDoc, ScRefFlags::VALID));
 
     // Check the formula values.
@@ -204,12 +204,12 @@ void Test::testSortHorizontalWholeColumn()
     m_pDoc->InsertTab(0, "Sort");
 
     // 0 = empty cell
-    const char* aData[][5] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "4", "2", "47", "a", "9" }
     };
 
     // Insert row data to C1:G1.
-    ScRange aSortRange = insertRangeData(m_pDoc, ScAddress(2,0,0), aData, SAL_N_ELEMENTS(aData));
+    ScRange aSortRange = insertRangeData(m_pDoc, ScAddress(2,0,0), aData);
     CPPUNIT_ASSERT_EQUAL(4.0, m_pDoc->GetValue(ScAddress(2,0,0)));
     CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(3,0,0)));
     CPPUNIT_ASSERT_EQUAL(47.0, m_pDoc->GetValue(ScAddress(4,0,0)));
@@ -1040,7 +1040,7 @@ void Test::testSortRefUpdate4_Impl()
     m_pDoc->InsertTab(2, "Lesson2");
 
     {
-        const char* aData[][2] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "Name", "Note" },
             { "Student1", "1" },
             { "Student2", "2" },
@@ -1051,13 +1051,13 @@ void Test::testSortRefUpdate4_Impl()
 
         SCTAB nTab = 1;
         ScAddress aPos(0,0,nTab);
-        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, SAL_N_ELEMENTS(aData), nTab));
-        ScRange aLesson1Range = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, aData.size(), nTab));
+        ScRange aLesson1Range = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aLesson1Range.aStart);
     }
 
     {
-        const char* aData[][2] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "Name", "Note" },
             { "=Lesson1.A2", "3" },
             { "=Lesson1.A3", "4" },
@@ -1068,14 +1068,14 @@ void Test::testSortRefUpdate4_Impl()
 
         SCTAB nTab = 2;
         ScAddress aPos(0,0,nTab);
-        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, SAL_N_ELEMENTS(aData), nTab));
-        ScRange aLesson2Range = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, aData.size(), nTab));
+        ScRange aLesson2Range = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aLesson2Range.aStart);
     }
 
     ScRange aSortRange;
     {
-        const char* aData[][4] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "Name", "Lesson1", "Lesson2", "Average" },
             { "=Lesson1.A2", "=Lesson1.B2", "=Lesson2.B2", "=AVERAGE(B2:C2)" },
             { "=Lesson1.A3", "=Lesson1.B3", "=Lesson2.B3", "=AVERAGE(B3:C3)" },
@@ -1086,8 +1086,8 @@ void Test::testSortRefUpdate4_Impl()
 
         SCTAB nTab = 0;
         ScAddress aPos(0,0,nTab);
-        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, SAL_N_ELEMENTS(aData), nTab));
-        aSortRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, nTab, 1, aData.size(), nTab));
+        aSortRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aSortRange.aStart);
     }
 
@@ -1241,7 +1241,7 @@ void Test::testSortRefUpdate5()
     };
     ScRange aSortRange;
     {
-        const char* aData[][3] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "Date", "Volatile", "Order" },
             { "1999-05-05", "=TODAY()-$A2", "4" },
             { "1994-10-18", "=TODAY()-$A3", "1" },
@@ -1251,8 +1251,8 @@ void Test::testSortRefUpdate5()
 
         SCTAB nTab = 0;
         ScAddress aPos(0,0,nTab);
-        clearRange(m_pDoc, ScRange(0, 0, nTab, 2, SAL_N_ELEMENTS(aData), nTab));
-        aSortRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, nTab, 2, aData.size(), nTab));
+        aSortRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aSortRange.aStart);
 
         // Actual results and expected sorted results.
@@ -1335,7 +1335,7 @@ void Test::testSortRefUpdate6()
     sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
     m_pDoc->InsertTab(0, "Sort");
 
-    const char* aData[][3] = {
+    const std::vector<std::vector<const char*>> aData = {
         { "Order", "Value", "1" },
         { "9", "1", "=C1+B2" },
         { "1", "2", "=C2+B3" },
@@ -1343,7 +1343,7 @@ void Test::testSortRefUpdate6()
     };
 
     ScAddress aPos(0,0,0);
-    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
     CPPUNIT_ASSERT_EQUAL(aPos, aDataRange.aStart);
 
     {
@@ -1474,13 +1474,13 @@ void Test::testSortBroadcaster()
     m_pDoc->InsertTab(0, "Sort");
 
     {
-        const char* aData[][7] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "1",   nullptr, nullptr, "=B1", "=$B$1", "=SUM(A1:B1)", "=SUM($A$1:$B$1)" },
             { "2", "8", nullptr, "=B2", "=$B$2", "=SUM(A2:B2)", "=SUM($A$2:$B$2)" },
         };
 
         ScAddress aPos(0,0,0);
-        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aDataRange.aStart);
 
         {
@@ -1561,7 +1561,7 @@ void Test::testSortBroadcaster()
     // The same for sort by column. Start data at A5.
 
     {
-        const char* aData[][2] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "1", "2" },
             {   nullptr, "8" },
             { nullptr, nullptr },
@@ -1572,7 +1572,7 @@ void Test::testSortBroadcaster()
         };
 
         ScAddress aPos(0,4,0);
-        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aDataRange.aStart);
 
         {
@@ -1674,13 +1674,13 @@ void Test::testSortBroadcastBroadcaster()
     m_pDoc->InsertTab(0, "Sort");
 
     {
-        const char* aData[][3] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "1", "=A1", "=B1" },
             { "2", "=A2", "=B2" },
         };
 
         ScAddress aPos(0,0,0);
-        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL(aPos, aDataRange.aStart);
 
         {
@@ -1892,13 +1892,13 @@ void Test::testSortImages()
 
     ScAddress aPos(0,0,0);
     {
-        const char* aData[][1] = {
+        const std::vector<std::vector<const char*>> aData = {
             { "2" },
             { "1" },
         };
 
-        clearRange(m_pDoc, ScRange(0, 0, 0, 1, SAL_N_ELEMENTS(aData), 0));
-        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+        clearRange(m_pDoc, ScRange(0, 0, 0, 1, aData.size(), 0));
+        ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos, aDataRange.aStart);
     }
 


More information about the Libreoffice-commits mailing list