Kaydet (Commit) 2758492a authored tarafından Kohei Yoshida's avatar Kohei Yoshida

New unit test for pivot table's handling of empty rows.

Change-Id: I1c922fd3d06aca49b98a933d82da478b22e74d4a
üst f2b6d71c
......@@ -167,6 +167,7 @@ public:
void testPivotTableNormalGrouping();
void testPivotTableNumberGrouping();
void testPivotTableDateGrouping();
void testPivotTableEmptyRows();
void testSheetCopy();
void testSheetMove();
......@@ -234,6 +235,7 @@ public:
CPPUNIT_TEST(testPivotTableNormalGrouping);
CPPUNIT_TEST(testPivotTableNumberGrouping);
CPPUNIT_TEST(testPivotTableDateGrouping);
CPPUNIT_TEST(testPivotTableEmptyRows);
CPPUNIT_TEST(testSheetCopy);
CPPUNIT_TEST(testSheetMove);
CPPUNIT_TEST(testExternalRef);
......@@ -2688,6 +2690,93 @@ void Test::testPivotTableDateGrouping()
m_pDoc->DeleteTab(0);
}
void Test::testPivotTableEmptyRows()
{
m_pDoc->InsertTab(0, OUString("Data"));
m_pDoc->InsertTab(1, OUString("Table"));
// Raw data
const char* aData[][2] = {
{ "Name", "Value" },
{ "A", "1" },
{ "B", "2" },
{ "C", "3" },
{ "D", "4" },
};
// Dimension definition
DPFieldDef aFields[] = {
{ "Name", sheet::DataPilotFieldOrientation_ROW, 0 },
{ "Value", sheet::DataPilotFieldOrientation_DATA, sheet::GeneralFunction_SUM },
};
ScAddress aPos(1,1,0);
ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
CPPUNIT_ASSERT_MESSAGE("failed to insert range data at correct position", aDataRange.aStart == aPos);
// Extend the range downward to include some trailing empty rows.
aDataRange.aEnd.IncRow(2);
ScDPObject* pDPObj = createDPFromRange(
m_pDoc, aDataRange, aFields, SAL_N_ELEMENTS(aFields), false);
ScDPCollection* pDPs = m_pDoc->GetDPCollection();
bool bSuccess = pDPs->InsertNewTable(pDPObj);
CPPUNIT_ASSERT_MESSAGE("failed to insert a new pivot table object into document.", bSuccess);
CPPUNIT_ASSERT_MESSAGE("there should be only one data pilot table.",
pDPs->GetCount() == 1);
pDPObj->SetName(pDPs->CreateNewName());
ScRange aOutRange = refresh(pDPObj);
{
// Expected output table content. 0 = empty cell
const char* aOutputCheck[][2] = {
{ "Name", 0 },
{ "A", "1" },
{ "B", "2" },
{ "C", "3" },
{ "D", "4" },
{ "(empty)", 0 },
{ "Total Result", "10" },
};
bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "Include empty rows");
CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
}
// This time, ignore empty rows.
ScDPSaveData* pSaveData = pDPObj->GetSaveData();
CPPUNIT_ASSERT_MESSAGE("Save data doesn't exist.", pSaveData);
pSaveData->SetIgnoreEmptyRows(true);
pDPObj->ClearTableData();
aOutRange = refresh(pDPObj);
{
// Expected output table content. 0 = empty cell
const char* aOutputCheck[][2] = {
{ "Name", 0 },
{ "A", "1" },
{ "B", "2" },
{ "C", "3" },
{ "D", "4" },
{ "Total Result", "10" },
};
bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "Ignore empty rows");
CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
}
pDPs->FreeTable(pDPObj);
CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be no more tables.", pDPs->GetCount(), static_cast<size_t>(0));
CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more cache stored.",
pDPs->GetSheetCaches().size(), static_cast<size_t>(0));
m_pDoc->DeleteTab(1);
m_pDoc->DeleteTab(0);
}
void Test::testSheetCopy()
{
OUString aTabName("TestTab");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment