summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-05-17 10:18:16 +0200
committerLuboš Luňák <l.lunak@collabora.com>2022-05-17 17:23:30 +0200
commitbf9b032a08070633b0d7c9bd6554fe08b661b901 (patch)
treeaa0e94588c48d25e964d390f8191df211549a5d4
parent693eebd6774660ebc079c0aca876488fb191359d (diff)
provide more details about failures in Calc 'functions' tests
Instead of simply asserting that something failed, say which part of the .fods test document failed. Change-Id: Idd901186f27d2395b9e3561fbac6bfc1340b7e72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134460 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
-rw-r--r--sc/inc/document.hxx2
-rw-r--r--sc/qa/unit/functions_test.cxx24
2 files changed, 25 insertions, 1 deletions
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 59606dd6db38..a2bacddee3a3 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1484,7 +1484,7 @@ public:
* non-empty row position in the upward direction if the start row
* position is empty.</p>
*/
- SCROW GetLastDataRow( SCTAB nTab, SCCOL nCol1, SCCOL nCol2, SCROW nLastRow ) const;
+ SC_DLLPUBLIC SCROW GetLastDataRow( SCTAB nTab, SCCOL nCol1, SCCOL nCol2, SCROW nLastRow ) const;
/**
* Return the smallest area containing at least all contiguous cells
diff --git a/sc/qa/unit/functions_test.cxx b/sc/qa/unit/functions_test.cxx
index 16e0a530a5e5..da0290a468ca 100644
--- a/sc/qa/unit/functions_test.cxx
+++ b/sc/qa/unit/functions_test.cxx
@@ -11,6 +11,8 @@
#include "functions_test.hxx"
#include <document.hxx>
+#include <rtl/math.hxx>
+
FunctionsTest::FunctionsTest(const OUString& rPath):
ScBootstrapFixture(rPath)
{
@@ -40,6 +42,28 @@ bool FunctionsTest::load(const OUString& rFilter, const OUString& rURL,
ScDocument& rDoc = xDocShRef->GetDocument();
+ if(!rtl::math::approxEqual(1.0, rDoc.GetValue(1, 2, 0)))
+ {
+ // Cell B3 in Sheet1 has the cumulative success/failure result.
+ // Try to find the actual failure.
+ for(SCTAB tab = 1; tab <= rDoc.GetMaxTableNumber(); ++tab)
+ {
+ SCROW maxRow = rDoc.GetLastDataRow(tab, 2, 2, rDoc.MaxRow());
+ for(SCROW row = 0; row <= maxRow; ++row)
+ {
+ // Column C has the check result, column D has the formula text.
+ if(rDoc.HasStringData(2, row, tab))
+ continue;
+ if(!rtl::math::approxEqual(1.0, rDoc.GetValue(2, row, 1)))
+ CPPUNIT_FAIL( OUString( "Testing " + rURL + " failed, "
+ + rDoc.GetAllTableNames()[tab] + ".A" + OUString::number(row+1)
+ + " \'" + rDoc.GetString(3, row, 1) + "\'"
+ " result: " + OUString::number(rDoc.GetValue(0, row, 1))
+ + ", expected: " + OUString::number(rDoc.GetValue(1, row, 1)))
+ .toUtf8().getStr());
+ }
+ }
+ }
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, rDoc.GetValue(1, 2, 0), 1e-14);
xDocShRef->DoClose();