[Libreoffice-commits] core.git: sc/qa
Eike Rathke
erack at redhat.com
Fri May 20 20:16:26 UTC 2016
sc/qa/unit/ucalc.hxx | 2 +
sc/qa/unit/ucalc_formula.cxx | 80 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+)
New commits:
commit 34e70369f571c78e4bb235470ce710f531e0d026
Author: Eike Rathke <erack at redhat.com>
Date: Fri May 20 22:14:43 2016 +0200
unit test for unresolved external references, tdf#93101
Change-Id: I02d948206aeba56a8d825646eeef0fcbf6e9b505
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 9ff01c0..1b309f6 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -197,6 +197,7 @@ public:
void testExternalRef();
void testExternalRefFunctions();
void testExternalRangeName();
+ void testExternalRefUnresolved();
void testCopyToDocument();
@@ -564,6 +565,7 @@ public:
CPPUNIT_TEST(testExternalRef);
CPPUNIT_TEST(testExternalRangeName);
CPPUNIT_TEST(testExternalRefFunctions);
+ CPPUNIT_TEST(testExternalRefUnresolved);
CPPUNIT_TEST(testCopyToDocument);
CPPUNIT_TEST(testFuncSHEET);
CPPUNIT_TEST(testFuncNOW);
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index fb63065..14b2929 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -5619,6 +5619,86 @@ void Test::testExternalRefFunctions()
m_pDoc->DeleteTab(0);
}
+void Test::testExternalRefUnresolved()
+{
+ sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto calc.
+ m_pDoc->InsertTab(0, "Test");
+
+ // 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] = {
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1+23" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1&\"W\"" },
+ { "=ISREF('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISERROR('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISERR('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISBLANK('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISNUMBER('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISTEXT('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1)" },
+ { "=ISNUMBER('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1+23)" },
+ { "=ISTEXT('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1&\"W\")" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1=0" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1=\"\"" },
+ { "=INDIRECT(\"'file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1\")" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2+23" },
+ { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2&\"W\"" },
+ { "=ISREF('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISERROR('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISERR('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISBLANK('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISNUMBER('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISTEXT('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2)" },
+ { "=ISNUMBER('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2+23)" },
+ { "=ISTEXT('file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2&\"W\")" },
+ // TODO: gives Err:504 FIXME { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2=0" },
+ // TODO: gives Err:504 FIXME { "='file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2=\"\"" },
+ { "=INDIRECT(\"'file:///NonExistingFilePath/AnyName.ods'#$NoSuchSheet.A1:A2\")" },
+ };
+
+ ScAddress aPos(0,0,0);
+ ScRange aRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+ CPPUNIT_ASSERT_EQUAL(aPos, aRange.aStart);
+
+ const char* aOutputCheck[][1] = {
+ { "#REF!" }, // plain single ref
+ { "#REF!" }, // +23
+ { "#REF!" }, // &"W"
+ { "FALSE" }, // ISREF
+ { "TRUE" }, // ISERROR
+ { "TRUE" }, // ISERR
+ { "FALSE" }, // ISBLANK
+ { "FALSE" }, // ISNUMBER
+ { "FALSE" }, // ISTEXT
+ { "FALSE" }, // ISNUMBER
+ { "FALSE" }, // ISTEXT
+ { "#REF!" }, // =0
+ { "#REF!" }, // =""
+ { "#REF!" }, // INDIRECT
+ { "#REF!" }, // A1:A2 range
+ { "#REF!" }, // +23
+ { "#REF!" }, // &"W"
+ { "FALSE" }, // ISREF
+ { "TRUE" }, // ISERROR
+ { "TRUE" }, // ISERR
+ { "FALSE" }, // ISBLANK
+ { "FALSE" }, // ISNUMBER
+ { "FALSE" }, // ISTEXT
+ { "FALSE" }, // ISNUMBER
+ { "FALSE" }, // ISTEXT
+ // TODO: gives Err:504 FIXME { "#REF!" }, // =0
+ // TODO: gives Err:504 FIXME { "#REF!" }, // =""
+ { "#REF!" }, // INDIRECT
+ };
+
+ bool bSuccess = checkOutput<1>(m_pDoc, aRange, aOutputCheck, "Check unresolved external reference.");
+ CPPUNIT_ASSERT_MESSAGE("Unresolved reference check failed", bSuccess);
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testMatrixOp()
{
m_pDoc->InsertTab(0, "Test");
More information about the Libreoffice-commits
mailing list