[Libreoffice-commits] core.git: sc/qa
Tor Lillqvist
tml at collabora.com
Mon Aug 14 11:28:08 UTC 2017
sc/qa/unit/parallelism.cxx | 65 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
New commits:
commit 872c130afbf314478c35c868ed24a2449489838b
Author: Tor Lillqvist <tml at collabora.com>
Date: Mon Aug 14 13:04:53 2017 +0300
Test VLOOKUP, try to handle various special cases and errors
Change-Id: I0ea9b9d882bf95c81ad784537671e22cb48d8c65
diff --git a/sc/qa/unit/parallelism.cxx b/sc/qa/unit/parallelism.cxx
index 0f4ccaad5e01..f7d70f6b5e1f 100644
--- a/sc/qa/unit/parallelism.cxx
+++ b/sc/qa/unit/parallelism.cxx
@@ -45,10 +45,12 @@ public:
void testSUMIFS();
void testDivision();
+ void testVLOOKUP();
CPPUNIT_TEST_SUITE(ScParallelismTest);
CPPUNIT_TEST(testSUMIFS);
CPPUNIT_TEST(testDivision);
+ CPPUNIT_TEST(testVLOOKUP);
CPPUNIT_TEST_SUITE_END();
private:
@@ -192,6 +194,69 @@ void ScParallelismTest::testDivision()
m_pDoc->DeleteTab(0);
}
+void ScParallelismTest::testVLOOKUP()
+{
+ m_pDoc->InsertTab(0, "1");
+
+ for (auto i = 1; i < 1000; i++)
+ {
+ if (i%5)
+ m_pDoc->SetValue(0, i, 0, i);
+ else
+ m_pDoc->SetValue(0, i, 0, i+0.1);
+
+ if (i%2)
+ m_pDoc->SetValue(1, i, 0, i*10);
+ else
+ m_pDoc->SetString(1, i, 0, "N" + OUString::number(i*10));
+
+ if (i%3)
+ {
+ m_pDoc->SetFormula(ScAddress(2, i, 0),
+ "=VLOOKUP(" + OUString::number(i) + "; "
+ "A$2:B$1000; 2; 0)",
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+ }
+
+ else
+ {
+ m_pDoc->SetFormula(ScAddress(2, i, 0),
+ "=VLOOKUP(42.42; "
+ "A$2:B$1000; 2; 0)",
+ formula::FormulaGrammar::GRAM_NATIVE_UI);
+ }
+ }
+
+ m_xDocShell->DoHardRecalc();
+
+ for (auto i = 1; i < 1000; i++)
+ {
+ OString sMessage = "At row " + OString::number(i+1);
+ if (i%3)
+ {
+ if (i%5)
+ {
+ if (i%2)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(sMessage.getStr(), static_cast<double>(i*10), m_pDoc->GetValue(2, i, 0), 1e-10);
+ else
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), OUString("N" + OUString::number(i*10)), m_pDoc->GetString(2, i, 0));
+ }
+ else
+ {
+ // The corresponding value in A is i+0.1
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), OUString("#N/A"), m_pDoc->GetString(2, i, 0));
+ }
+ }
+ else
+ {
+ // The 42.42 is never found
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(sMessage.getStr(), OUString("#N/A"), m_pDoc->GetString(2, i, 0));
+ }
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(ScParallelismTest);
CPPUNIT_PLUGIN_IMPLEMENT();
More information about the Libreoffice-commits
mailing list