[Libreoffice-commits] .: sc/qa
Kohei Yoshida
kohei at kemper.freedesktop.org
Wed Jan 25 09:52:55 PST 2012
sc/qa/unit/ucalc.cxx | 96 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 94 insertions(+), 2 deletions(-)
New commits:
commit 85d34beec5f8196896487c96028b2dc2ce3cf6c8
Author: Kohei Yoshida <kohei.yoshida at suse.com>
Date: Wed Jan 25 12:50:54 2012 -0500
New unit test for pivot table's date output handling.
We rely on the cell type of those date value outputs when grouping
by date or value range.
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 7f5f143..ec31a04 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -130,6 +130,13 @@ public:
void testPivotTableLabels();
/**
+ * Make sure that we set cells displaying date values numeric cells,
+ * rather than text cells. Grouping by date or number functionality
+ * depends on this.
+ */
+ void testPivotTableDateLabels();
+
+ /**
* Test for pivot table's filtering functionality by page fields.
*/
void testPivotTableFilters();
@@ -190,6 +197,7 @@ public:
CPPUNIT_TEST(testMatrix);
CPPUNIT_TEST(testPivotTable);
CPPUNIT_TEST(testPivotTableLabels);
+ CPPUNIT_TEST(testPivotTableDateLabels);
CPPUNIT_TEST(testPivotTableFilters);
CPPUNIT_TEST(testPivotTableNamedSource);
CPPUNIT_TEST(testSheetCopy);
@@ -1144,13 +1152,13 @@ bool checkDPTableOutput(ScDocument* pDoc, const ScRange& aOutRange, const char*
bool bEqual = aCheckVal.equals(aVal);
if (!bEqual)
{
- cerr << "Expected: " << aCheckVal << " Actual: " << aVal << endl;
+ cout << "Expected: " << aCheckVal << " Actual: " << aVal << endl;
bResult = false;
}
}
else if (!aVal.isEmpty())
{
- cerr << "Empty cell expected" << endl;
+ cout << "Empty cell expected" << endl;
bResult = false;
}
}
@@ -1476,6 +1484,90 @@ void Test::testPivotTableLabels()
CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
}
+ pDPs->FreeTable(pDPObj);
+
+ m_pDoc->DeleteTab(1);
+ m_pDoc->DeleteTab(0);
+}
+
+void Test::testPivotTableDateLabels()
+{
+ m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
+ m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
+
+ // Dimension definition
+ DPFieldDef aFields[] = {
+ { "Name", sheet::DataPilotFieldOrientation_ROW },
+ { "Date", sheet::DataPilotFieldOrientation_COLUMN },
+ { "Value", sheet::DataPilotFieldOrientation_DATA }
+ };
+
+ // Raw data
+ const char* aData[][3] = {
+ { "Zena", "2011-1-1", "30" },
+ { "Yodel", "2011-1-2", "20" },
+ { "Xavior", "2011-1-3", "45" }
+ };
+
+ size_t nFieldCount = SAL_N_ELEMENTS(aFields);
+ size_t nDataCount = SAL_N_ELEMENTS(aData);
+
+ ScRange aSrcRange = insertDPSourceData(m_pDoc, aFields, nFieldCount, aData, nDataCount);
+ SCROW nRow1 = aSrcRange.aStart.Row(), nRow2 = aSrcRange.aEnd.Row();
+ SCCOL nCol1 = aSrcRange.aStart.Col(), nCol2 = aSrcRange.aEnd.Col();
+
+ ScDPObject* pDPObj = createDPFromRange(
+ m_pDoc, ScRange(nCol1, nRow1, 0, nCol2, nRow2, 0), aFields, nFieldCount, false);
+
+ ScDPCollection* pDPs = m_pDoc->GetDPCollection();
+ bool bSuccess = pDPs->InsertNewTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("failed to insert a new datapilot object into document", bSuccess);
+ CPPUNIT_ASSERT_MESSAGE("there should be only one data pilot table.",
+ pDPs->GetCount() == 1);
+ pDPObj->SetName(pDPs->CreateNewName());
+
+ bool bOverFlow = false;
+ ScRange aOutRange = pDPObj->GetNewOutputRange(bOverFlow);
+ CPPUNIT_ASSERT_MESSAGE("Table overflow!?", !bOverFlow);
+
+ pDPObj->Output(aOutRange.aStart);
+ aOutRange = pDPObj->GetOutRange();
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][5] = {
+ { "Sum - Value", "Date", 0, 0, 0 },
+ { "Name", "2011-01-01", "2011-01-02", "2011-01-03", "Total Result" },
+ { "Xavior", 0, 0, "45", "45" },
+ { "Yodel", 0, "20", 0, "20" },
+ { "Zena", "30", 0, 0, "30" },
+ { "Total Result", "30", "20", "45", "95" }
+ };
+
+ bSuccess = checkDPTableOutput<5>(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ {
+ const char* aChecks[] = {
+ "2011-01-01", "2011-01-02", "2011-01-03"
+ };
+
+ // Make sure those cells that contain dates are numeric.
+ SCROW nRow = aOutRange.aStart.Row() + 1;
+ nCol1 = aOutRange.aStart.Col() + 1;
+ nCol2 = nCol1 + 2;
+ for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol)
+ {
+ OUString aVal = m_pDoc->GetString(nCol, nRow, 1);
+ CPPUNIT_ASSERT_MESSAGE("Cell value is not as expected.", aVal.equalsAscii(aChecks[nCol-nCol1]));
+ CPPUNIT_ASSERT_MESSAGE("This cell contains a date value and is supposed to be numeric.",
+ m_pDoc->HasValueData(nCol, nRow, 1));
+ }
+ }
+
+ pDPs->FreeTable(pDPObj);
+
m_pDoc->DeleteTab(1);
m_pDoc->DeleteTab(0);
}
More information about the Libreoffice-commits
mailing list