From c4077e840ba8983076ef77927b7b47ddb88e44aa Mon Sep 17 00:00:00 2001 From: Luboš Luňák Date: Thu, 3 Mar 2022 17:45:52 +0100 Subject: provide MAXCOL/MAXROW also as strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Primarily for use in tests. Change-Id: Icb962cbdfa63a3b50115314e9afd46f3fa1a928a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130939 Tested-by: Jenkins Reviewed-by: Luboš Luňák --- sc/inc/address.hxx | 5 +++++ sc/inc/document.hxx | 2 ++ sc/inc/sheetlimits.hxx | 10 ++++++++++ sc/qa/unit/ucalc_formula.cxx | 4 +--- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/sc/inc/address.hxx b/sc/inc/address.hxx index 9239a8346450..a7e05ad6567c 100644 --- a/sc/inc/address.hxx +++ b/sc/inc/address.hxx @@ -81,6 +81,11 @@ const SCROW MAXTILEDROW = 500000; const SCTAB MAXINITTAB = 1024; const SCTAB MININITTAB = 1; +inline constexpr OUStringLiteral MAXROW_STRING(u"1048575"); +inline constexpr OUStringLiteral MAXCOL_STRING(u"AMJ"); +inline constexpr OUStringLiteral MAXROW_JUMBO_STRING(u"16777215"); +inline constexpr OUStringLiteral MAXCOL_JUMBO_STRING(u"XFD"); + // Special values const SCTAB SC_TAB_APPEND = SCTAB_MAX; const SCTAB TABLEID_DOC = SCTAB_MAX; // entire document, e.g. protect diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 62c98ad2e31c..764b69794418 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -877,6 +877,8 @@ public: SC_DLLPUBLIC SCROW MaxRow() const { return mxSheetLimits->mnMaxRow; } SC_DLLPUBLIC SCCOL GetMaxColCount() const { return mxSheetLimits->GetMaxColCount(); } SC_DLLPUBLIC SCROW GetMaxRowCount() const { return mxSheetLimits->GetMaxRowCount(); } + SC_DLLPUBLIC OUString MaxRowAsString() const { return mxSheetLimits->MaxRowAsString(); } + SC_DLLPUBLIC OUString MaxColAsString() const { return mxSheetLimits->MaxColAsString(); } ScSheetLimits& GetSheetLimits() const { return *mxSheetLimits; } [[nodiscard]] bool ValidCol(SCCOL nCol) const { return ::ValidCol(nCol, mxSheetLimits->mnMaxCol); } [[nodiscard]] bool ValidRow(SCROW nRow) const { return ::ValidRow(nRow, mxSheetLimits->mnMaxRow); } diff --git a/sc/inc/sheetlimits.hxx b/sc/inc/sheetlimits.hxx index c8dbc1165216..cbc017c9d10e 100644 --- a/sc/inc/sheetlimits.hxx +++ b/sc/inc/sheetlimits.hxx @@ -65,6 +65,16 @@ struct ScSheetLimits final : public salhelper::SimpleReferenceObject SCROW GetMaxRowCount() const { return mnMaxRow + 1; } // equivalent of MAXCOLCOUNT in address.hxx SCCOL GetMaxColCount() const { return mnMaxCol + 1; } + // max row number as string + OUString MaxRowAsString() const + { + return mnMaxRow == MAXROW ? OUString(MAXROW_STRING) : OUString(MAXROW_JUMBO_STRING); + } + // mac col as string ("AMJ" or "XFD") + OUString MaxColAsString() const + { + return mnMaxCol == MAXCOL ? OUString(MAXCOL_STRING) : OUString(MAXCOL_JUMBO_STRING); + } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index 748d3249fd31..e2264167a5b1 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -2508,9 +2508,7 @@ void TestFormula::testFormulaRefUpdateRange() // C3 with sticky reference including last column. m_pDoc->SetString( 2,2,1, "=SUM(23:23)"); // C4 with reference to last column. - CPPUNIT_ASSERT_MESSAGE("m_pDoc->MaxCol() changed, adapt unit test.", - m_pDoc->MaxCol() == 1023 || m_pDoc->MaxCol() == 16383); - m_pDoc->SetString( 2,3,1, m_pDoc->MaxCol() == 1023 ? "=SUM(AMJ22:AMJ23)" : "=SUM(XFD22:XFD23)"); + m_pDoc->SetString( 2,3,1, "=SUM(" + m_pDoc->MaxColAsString() + "22:" + m_pDoc->MaxColAsString() + "23)"); CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong result in C3.", 3.0, m_pDoc->GetValue(2,2,1)); CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong result in C4.", 2.0, m_pDoc->GetValue(2,3,1)); // Delete last column. -- cgit