Related: tdf#127293 Add unit test for xlookup regex search mode
Add unit test for regex search mode in case of xlookup.
Follow-up commit: 51abf44808c6793a184e986b62c0786753e11ded
(Related: tdf#127293 Fix regex search mode in XLOOKUP wildcards mode)
Change-Id: Id23c340ab6735c2c40defc8d231dc3da18c8694e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167192
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/sc/qa/unit/ucalc_formula2.cxx b/sc/qa/unit/ucalc_formula2.cxx
index 180f283..70f945a 100644
--- a/sc/qa/unit/ucalc_formula2.cxx
+++ b/sc/qa/unit/ucalc_formula2.cxx
@@ -4640,6 +4640,54 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFormulaAfterDeleteRows)
ASSERT_DOUBLES_EQUAL_MESSAGE("Wrong value at A4", 3.0, m_pDoc->GetValue(aPos));
}
CPPUNIT_TEST_FIXTURE(TestFormula2, testRegexForXLOOKUP)
{
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true);
// Temporarily switch regex search mode.
bool bOldWildCard = false;
ScDocOptions aDocOpt = m_pDoc->GetDocOptions();
if (!aDocOpt.IsFormulaRegexEnabled())
{
aDocOpt.SetFormulaRegexEnabled(true);
m_pDoc->SetDocOptions(aDocOpt);
bOldWildCard = true;
}
m_pDoc->InsertTab(0, "Test1");
std::vector<std::vector<const char*>> aData = { { "Element", "Relative Atomic Mass" },
{ "Hydrogen", "1.008" },
{ "Helium", "4.003" },
{ "Lithium", "6.94" },
{ "Beryllium", "9.012" },
{ "Boron", "10.81" },
{ "Carbon", "12.011" },
{ "Nitrogen", "14.007" },
{ "Oxygen", "15.999" },
{ "Florine", "18.998" },
{ "Neon", "20.18" } };
insertRangeData(m_pDoc, ScAddress(0, 0, 0), aData); // A1:B11
m_pDoc->SetString(4, 14, 0, "^bo.*"); // E15 - search regex string
m_pDoc->SetFormula(ScAddress(5, 14, 0), "=XLOOKUP(E15;A$2:A$11;B$2:B$11;;2)",
formula::FormulaGrammar::GRAM_NATIVE_UI); // F15
// Without the fix in place, this test would have failed with
// - Expected: 10.81
// - Actual : 0
CPPUNIT_ASSERT_EQUAL(10.81, m_pDoc->GetValue(5, 14, 0));
// Switch back to wildcard mode if necessary.
if (bOldWildCard)
{
aDocOpt.SetFormulaWildcardsEnabled(true);
m_pDoc->SetDocOptions(aDocOpt);
}
m_pDoc->DeleteTab(0);
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */