diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/ucalc.cxx | 125 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_formula.cxx | 58 | ||||
-rw-r--r-- | sc/qa/unit/ucalc_sort.cxx | 14 |
3 files changed, 183 insertions, 14 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 46220aa76f55..72e25f2f5b91 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -4644,10 +4644,10 @@ void Test::executeCopyPasteSpecial(bool bApplyFilter, bool bIncludedFiltered, bo InsertDeleteFlags aFlags = InsertDeleteFlags::CONTENTS | InsertDeleteFlags::ATTRIB) { - // Reset settings needed for SUMIF() if run with other tests - ScFormulaOptions aOptions; - aOptions.SetFormulaSepArg(";"); - getDocShell().SetFormulaOptions(aOptions); + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); const SCTAB srcSheet = 0; m_pDoc->InsertTab(srcSheet, "SrcSheet"); @@ -5058,6 +5058,9 @@ void Test::executeCopyPasteSpecial(bool bApplyFilter, bool bIncludedFiltered, bo } if (bCalcAll) m_pDoc->CalcAll(); + + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); } void Test::testCopyPasteSpecial() @@ -5359,6 +5362,11 @@ void Test::checkCopyPasteSpecial(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | H | I | @@ -5631,6 +5639,9 @@ void Test::checkCopyPasteSpecial(bool bSkipEmpty) m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); + + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); } void Test::checkCopyPasteSpecialFiltered(bool bSkipEmpty) @@ -5638,6 +5649,11 @@ void Test::checkCopyPasteSpecialFiltered(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | H | I | @@ -5900,6 +5916,9 @@ void Test::checkCopyPasteSpecialFiltered(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(8, 3, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -5909,6 +5928,11 @@ void Test::checkCopyPasteSpecialTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | @@ -6294,6 +6318,9 @@ void Test::checkCopyPasteSpecialTranspose(bool bSkipEmpty) m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(6, 6, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -6303,6 +6330,11 @@ void Test::checkCopyPasteSpecialFilteredTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* ┌--- filtered src row 2 ┌--- repeated row v v @@ -6701,6 +6733,9 @@ void Test::checkCopyPasteSpecialFilteredTranspose(bool bSkipEmpty) m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(5, 6, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -6710,6 +6745,11 @@ void Test::checkCopyPasteSpecialMultiRangeCol(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* ┌--- not selected src col C v @@ -6976,6 +7016,9 @@ void Test::checkCopyPasteSpecialMultiRangeCol(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(7, 4, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -6985,6 +7028,11 @@ void Test::checkCopyPasteSpecialMultiRangeColFiltered(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* ┌--- not selected src col C v @@ -7206,6 +7254,9 @@ void Test::checkCopyPasteSpecialMultiRangeColFiltered(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(7, 3, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -7215,6 +7266,11 @@ void Test::checkCopyPasteSpecialMultiRangeColTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | @@ -7484,6 +7540,9 @@ void Test::checkCopyPasteSpecialMultiRangeColTranspose(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(6, 5, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -7493,6 +7552,11 @@ void Test::checkCopyPasteSpecialMultiRangeColFilteredTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* ┌--- filtered src row 2 v @@ -7734,6 +7798,9 @@ void Test::checkCopyPasteSpecialMultiRangeColFilteredTranspose(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(5, 3, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(5, 5, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -7743,6 +7810,11 @@ void Test::checkCopyPasteSpecialMultiRangeRow(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | H | I | @@ -8057,6 +8129,9 @@ void Test::checkCopyPasteSpecialMultiRangeRow(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(2, 4, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(5, 4, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -8066,6 +8141,11 @@ void Test::checkCopyPasteSpecialMultiRangeRowFiltered(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | H | I | @@ -8334,6 +8414,9 @@ void Test::checkCopyPasteSpecialMultiRangeRowFiltered(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(2, 4, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(5, 3, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -8343,6 +8426,11 @@ void Test::checkCopyPasteSpecialMultiRangeRowTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | H | @@ -8723,6 +8811,9 @@ void Test::checkCopyPasteSpecialMultiRangeRowTranspose(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(2, 4, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(6, 3, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -8732,6 +8823,11 @@ void Test::checkCopyPasteSpecialMultiRangeRowFilteredTranspose(bool bSkipEmpty) const SCTAB srcSheet = 0; const SCTAB destSheet = 1; + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + /* | D | E | F | G | @@ -9069,6 +9165,9 @@ void Test::checkCopyPasteSpecialMultiRangeRowFilteredTranspose(bool bSkipEmpty) CPPUNIT_ASSERT_EQUAL(m_pDoc->GetNote(ScAddress(2, 4, srcSheet))->GetText(), m_pDoc->GetNote(ScAddress(5, 3, destSheet))->GetText()); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(destSheet); m_pDoc->DeleteTab(srcSheet); } @@ -12632,6 +12731,12 @@ void Test::testProtectedSheetEditByRow() ScDocFunc& rDocFunc = getDocShell().GetDocFunc(); m_pDoc->InsertTab(0, "Protected"); + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + getDocShell().SetFormulaOptions(aNewOptions); + { // Remove protected flags from rows 2-5. ScPatternAttr aAttr(m_pDoc->GetPool()); @@ -12699,6 +12804,9 @@ void Test::testProtectedSheetEditByRow() CPPUNIT_ASSERT_MESSAGE("row insertion at row 3 should fail.", !bInserted); } + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(1); m_pDoc->DeleteTab(0); } @@ -12708,6 +12816,12 @@ void Test::testProtectedSheetEditByColumn() ScDocFunc& rDocFunc = getDocShell().GetDocFunc(); m_pDoc->InsertTab(0, "Protected"); + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + getDocShell().SetFormulaOptions(aNewOptions); + { // Remove protected flags from columns B to E. ScPatternAttr aAttr(m_pDoc->GetPool()); @@ -12775,6 +12889,9 @@ void Test::testProtectedSheetEditByColumn() CPPUNIT_ASSERT_MESSAGE("column insertion at column C should fail.", !bInserted); } + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(1); m_pDoc->DeleteTab(0); } diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index 93cd3b5f24d9..65876d57a520 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -32,6 +32,7 @@ #include <docoptio.hxx> #include <formulaopt.hxx> #include <externalrefmgr.hxx> +#include <scmod.hxx> #include <svl/itemset.hxx> #include <formula/vectortoken.hxx> @@ -1016,11 +1017,12 @@ void Test::testFormulaCompilerJumpReordering() }; // Set separators first. - ScFormulaOptions aOptions; - aOptions.SetFormulaSepArg(";"); - aOptions.SetFormulaSepArrayCol(";"); - aOptions.SetFormulaSepArrayRow("|"); - getDocShell().SetFormulaOptions(aOptions); + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + aNewOptions.SetFormulaSepArrayRow("|"); + getDocShell().SetFormulaOptions(aNewOptions); { // Compile formula string first. @@ -1079,6 +1081,9 @@ void Test::testFormulaCompilerJumpReordering() CPPUNIT_ASSERT_EQUAL(static_cast<int>(aCheckRPN2[i].meType), static_cast<int>(p->GetType())); } } + + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); } void Test::testFormulaCompilerImplicitIntersection2Param() @@ -5008,6 +5013,11 @@ void Test::testFuncCOUNTIF() { sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on. + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + // COUNTIF (test case adopted from OOo i#36381) CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet", @@ -5121,6 +5131,9 @@ void Test::testFuncCOUNTIF() CPPUNIT_ASSERT_EQUAL_MESSAGE("One cell with 0.0", 1.0, m_pDoc->GetValue(ScAddress(0,0,0))); CPPUNIT_ASSERT_EQUAL_MESSAGE("Two cells with 1.0", 2.0, m_pDoc->GetValue(ScAddress(0,1,0))); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(0); } @@ -5128,6 +5141,12 @@ void Test::testFuncIF() { sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on. + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + getDocShell().SetFormulaOptions(aNewOptions); + m_pDoc->InsertTab(0, "Formula"); m_pDoc->SetString(ScAddress(0,0,0), "=IF(B1=2;\"two\";\"not two\")"); @@ -5170,6 +5189,9 @@ void Test::testFuncIF() CPPUNIT_ASSERT_EQUAL(34.0, m_pDoc->GetValue(ScAddress(0,10,0))); CPPUNIT_ASSERT_EQUAL(56.0, m_pDoc->GetValue(ScAddress(1,10,0))); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(0); } @@ -6122,6 +6144,11 @@ void Test::testFuncINDIRECT() // void Test::testFuncINDIRECT2() { + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet", m_pDoc->InsertTab (0, "foo")); CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet", @@ -6181,6 +6208,9 @@ void Test::testFuncINDIRECT2() CPPUNIT_ASSERT_MESSAGE("This should be a formula cell.", pFC); CPPUNIT_ASSERT_MESSAGE("This formula cell should be an error.", pFC->GetErrCode() != FormulaError::NONE); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(2); m_pDoc->DeleteTab(1); m_pDoc->DeleteTab(0); @@ -7197,6 +7227,11 @@ void Test::testFuncTableRef() { sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto calc. + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + getDocShell().SetFormulaOptions(aNewOptions); + m_pDoc->InsertTab(0, "Sheet1"); ScMarkData aMark(m_pDoc->GetSheetLimits()); aMark.SelectOneTable(0); @@ -7536,6 +7571,9 @@ void Test::testFuncTableRef() CPPUNIT_ASSERT_EQUAL( OUString(aPrefix + "448"), OUString(aPrefix + m_pDoc->GetString(aPos))); } + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(0); } @@ -8409,6 +8447,13 @@ void Test::testFormulaErrorPropagation() { sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on. + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + aNewOptions.SetFormulaSepArrayRow("|"); + getDocShell().SetFormulaOptions(aNewOptions); + m_pDoc->InsertTab(0, "Sheet1"); ScMarkData aMark(m_pDoc->GetSheetLimits()); @@ -8477,6 +8522,9 @@ void Test::testFormulaErrorPropagation() CPPUNIT_ASSERT_EQUAL_MESSAGE( aPos.Format(ScRefFlags::VALID).toUtf8().getStr(), aTRUE, m_pDoc->GetString(aPos)); CPPUNIT_ASSERT_EQUAL_MESSAGE( aPos2.Format(ScRefFlags::VALID).toUtf8().getStr(), aFALSE, m_pDoc->GetString(aPos2)); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(0); } diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx index 8ff3cf58e60d..58b6e5016674 100644 --- a/sc/qa/unit/ucalc_sort.cxx +++ b/sc/qa/unit/ucalc_sort.cxx @@ -129,11 +129,12 @@ void Test::testSortHorizontal() { SortRefUpdateSetter aUpdateSet; - ScFormulaOptions aOptions; - aOptions.SetFormulaSepArg(";"); - aOptions.SetFormulaSepArrayCol(";"); - aOptions.SetFormulaSepArrayRow("|"); - getDocShell().SetFormulaOptions(aOptions); + ScFormulaOptions aOldOptions, aNewOptions; + aOldOptions = SC_MOD()->GetFormulaOptions(); + aNewOptions.SetFormulaSepArg(";"); + aNewOptions.SetFormulaSepArrayCol(";"); + aNewOptions.SetFormulaSepArrayRow("|"); + getDocShell().SetFormulaOptions(aNewOptions); sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); m_pDoc->InsertTab(0, "Sort"); @@ -195,6 +196,9 @@ void Test::testSortHorizontal() ASSERT_FORMULA_EQUAL(*m_pDoc, ScAddress(1,2,0), "CONCATENATE(C3;\"-\";D3)", "Wrong formula!"); ASSERT_FORMULA_EQUAL(*m_pDoc, ScAddress(1,3,0), "CONCATENATE(C4;\"-\";D4)", "Wrong formula!"); + // restore formula options back to default + getDocShell().SetFormulaOptions(aOldOptions); + m_pDoc->DeleteTab(0); } |