[Libreoffice-commits] .: 2 commits - sc/qa
Kohei Yoshida
kohei at kemper.freedesktop.org
Thu Mar 22 18:26:57 PDT 2012
sc/qa/unit/ucalc.cxx | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 225 insertions(+), 1 deletion(-)
New commits:
commit a3d71e97eaf1958a4d5ab41a6b8788c95d85d2bb
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Thu Mar 22 21:26:26 2012 -0400
New unit test for pivot table with date grouping.
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 89315af..cb6ab44 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -75,6 +75,7 @@
#include <sfx2/docfile.hxx>
#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/GeneralFunction.hpp>
#include <ucbhelper/contentbroker.hxx>
@@ -161,8 +162,8 @@ public:
void testPivotTableDuplicateDataFields();
void testPivotTableNormalGrouping();
-
void testPivotTableNumberGrouping();
+ void testPivotTableDateGrouping();
void testSheetCopy();
void testSheetMove();
@@ -222,6 +223,7 @@ public:
CPPUNIT_TEST(testPivotTableDuplicateDataFields);
CPPUNIT_TEST(testPivotTableNormalGrouping);
CPPUNIT_TEST(testPivotTableNumberGrouping);
+ CPPUNIT_TEST(testPivotTableDateGrouping);
CPPUNIT_TEST(testSheetCopy);
CPPUNIT_TEST(testSheetMove);
CPPUNIT_TEST(testExternalRef);
@@ -1245,7 +1247,6 @@ ScDPObject* createDPFromSourceDesc(
ScDPSaveDimension* pDim = aSaveData.GetNewDimensionByName(aDimName);
pDim->SetOrientation(static_cast<sal_uInt16>(aFields[i].eOrient));
pDim->SetUsedHierarchy(0);
- pDim->SetShowEmpty(true);
if (aFields[i].eOrient == sheet::DataPilotFieldOrientation_DATA)
{
@@ -2424,6 +2425,123 @@ void Test::testPivotTableNumberGrouping()
m_pDoc->DeleteTab(0);
}
+void Test::testPivotTableDateGrouping()
+{
+ m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
+ m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
+
+ // Raw data
+ const char* aData[][2] = {
+ { "Date", "Value" },
+ { "2011-01-01", "1" },
+ { "2011-03-02", "2" },
+ { "2012-01-04", "3" },
+ { "2012-02-23", "4" },
+ { "2012-02-24", "5" },
+ { "2012-03-15", "6" },
+ { "2011-09-03", "7" },
+ { "2012-12-25", "8" }
+ };
+
+ // Dimension definition
+ DPFieldDef aFields[] = {
+ { "Date", 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);
+
+ 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());
+
+ ScDPSaveData* pSaveData = pDPObj->GetSaveData();
+ CPPUNIT_ASSERT_MESSAGE("No save data !?", pSaveData);
+ ScDPDimensionSaveData* pDimData = pSaveData->GetDimensionData();
+ CPPUNIT_ASSERT_MESSAGE("No dimension data !?", pDimData);
+
+ rtl::OUString aBaseDimName(RTL_CONSTASCII_USTRINGPARAM("Date"));
+
+ ScDPNumGroupInfo aInfo;
+ aInfo.mbEnable = true;
+ aInfo.mbAutoStart = true;
+ aInfo.mbAutoEnd = true;
+ {
+ // Turn the Date dimension into months. The first of the date
+ // dimensions is always a number-group dimension which replaces the
+ // original dimension.
+ ScDPSaveNumGroupDimension aGroup(aBaseDimName, aInfo, sheet::DataPilotFieldGroupBy::MONTHS);
+ pDimData->AddNumGroupDimension(aGroup);
+ }
+
+ {
+ // Add quarter dimension. This will be an additional dimension.
+ rtl::OUString aGroupDimName =
+ pDimData->CreateDateGroupDimName(
+ sheet::DataPilotFieldGroupBy::QUARTERS, *pDPObj, true, NULL);
+ ScDPSaveGroupDimension aGroupDim(aBaseDimName, aGroupDimName);
+ aGroupDim.SetDateInfo(aInfo, sheet::DataPilotFieldGroupBy::QUARTERS);
+ pDimData->AddGroupDimension(aGroupDim);
+
+ // Set orientation.
+ ScDPSaveDimension* pDim = pSaveData->GetDimensionByName(aGroupDimName);
+ pDim->SetOrientation(sheet::DataPilotFieldOrientation_ROW);
+ pSaveData->SetPosition(pDim, 0); // set it to the left end.
+ }
+
+ {
+ // Add year dimension. This is a new dimension also.
+ rtl::OUString aGroupDimName =
+ pDimData->CreateDateGroupDimName(
+ sheet::DataPilotFieldGroupBy::YEARS, *pDPObj, true, NULL);
+ ScDPSaveGroupDimension aGroupDim(aBaseDimName, aGroupDimName);
+ aGroupDim.SetDateInfo(aInfo, sheet::DataPilotFieldGroupBy::YEARS);
+ pDimData->AddGroupDimension(aGroupDim);
+
+ // Set orientation.
+ ScDPSaveDimension* pDim = pSaveData->GetDimensionByName(aGroupDimName);
+ pDim->SetOrientation(sheet::DataPilotFieldOrientation_ROW);
+ pSaveData->SetPosition(pDim, 0); // set it to the left end.
+ }
+
+ pDPObj->SetSaveData(*pSaveData);
+ ScRange aOutRange = refreshGroups(pDPs, pDPObj);
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][4] = {
+ { "Years", "Quarters", "Date", 0 },
+ { "2011", "Q1", "Jan", "1" },
+ { 0, 0, "Mar", "2" },
+ { 0, "Q3", "Sep", "7" },
+ { "2012", "Q1", "Jan", "3" },
+ { 0, 0, "Feb", "9" },
+ { 0, 0, "Mar", "6" },
+ { 0, "Q4", "Dec", "8" },
+ { "Total Result", 0, 0, "36" },
+ };
+
+ bSuccess = checkDPTableOutput<4>(m_pDoc, aOutRange, aOutputCheck, "Years, quarters and months date groups.");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ pDPs->FreeTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("There should be no more tables.", pDPs->GetCount() == 0);
+ CPPUNIT_ASSERT_MESSAGE("There shouldn't be any more cache stored.",
+ pDPs->GetSheetCaches().size() == 0);
+
+ m_pDoc->DeleteTab(1);
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testSheetCopy()
{
OUString aTabName(RTL_CONSTASCII_USTRINGPARAM("TestTab"));
commit 914e797844435a730a20d4269cd7093d725e37b6
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Thu Mar 22 14:23:32 2012 -0400
New unit test for pivot table with number grouping.
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 15c774c..89315af 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -162,6 +162,8 @@ public:
void testPivotTableNormalGrouping();
+ void testPivotTableNumberGrouping();
+
void testSheetCopy();
void testSheetMove();
void testExternalRef();
@@ -219,6 +221,7 @@ public:
CPPUNIT_TEST(testPivotTableCache);
CPPUNIT_TEST(testPivotTableDuplicateDataFields);
CPPUNIT_TEST(testPivotTableNormalGrouping);
+ CPPUNIT_TEST(testPivotTableNumberGrouping);
CPPUNIT_TEST(testSheetCopy);
CPPUNIT_TEST(testSheetMove);
CPPUNIT_TEST(testExternalRef);
@@ -2162,6 +2165,9 @@ void Test::testPivotTableDuplicateDataFields()
aParam.maLabelArray.size() == 4);
pDPs->FreeTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("There should be no more tables.", pDPs->GetCount() == 0);
+ CPPUNIT_ASSERT_MESSAGE("There shouldn't be any more cache stored.",
+ pDPs->GetSheetCaches().size() == 0);
m_pDoc->DeleteTab(1);
m_pDoc->DeleteTab(0);
@@ -2314,6 +2320,106 @@ void Test::testPivotTableNormalGrouping()
CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
}
+ pDPs->FreeTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("There should be no more tables.", pDPs->GetCount() == 0);
+ CPPUNIT_ASSERT_MESSAGE("There shouldn't be any more cache stored.",
+ pDPs->GetSheetCaches().size() == 0);
+
+ m_pDoc->DeleteTab(1);
+ m_pDoc->DeleteTab(0);
+}
+
+void Test::testPivotTableNumberGrouping()
+{
+ m_pDoc->InsertTab(0, OUString(RTL_CONSTASCII_USTRINGPARAM("Data")));
+ m_pDoc->InsertTab(1, OUString(RTL_CONSTASCII_USTRINGPARAM("Table")));
+
+ // Raw data
+ const char* aData[][2] = {
+ { "Order", "Score" },
+ { "43", "171" },
+ { "18", "20" },
+ { "69", "159" },
+ { "95", "19" },
+ { "96", "163" },
+ { "46", "70" },
+ { "22", "36" },
+ { "81", "49" },
+ { "54", "61" },
+ { "39", "62" },
+ { "86", "17" },
+ { "34", "0" },
+ { "30", "25" },
+ { "24", "103" },
+ { "16", "59" },
+ { "24", "119" },
+ { "15", "86" },
+ { "69", "170" }
+ };
+
+ // Dimension definition
+ DPFieldDef aFields[] = {
+ { "Order", sheet::DataPilotFieldOrientation_ROW, 0 },
+ { "Score", 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);
+
+ 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());
+
+ ScDPSaveData* pSaveData = pDPObj->GetSaveData();
+ CPPUNIT_ASSERT_MESSAGE("No save data !?", pSaveData);
+ ScDPDimensionSaveData* pDimData = pSaveData->GetDimensionData();
+ CPPUNIT_ASSERT_MESSAGE("No dimension data !?", pDimData);
+
+ {
+ ScDPNumGroupInfo aInfo;
+ aInfo.mbEnable = true;
+ aInfo.mbAutoStart = false;
+ aInfo.mbAutoEnd = false;
+ aInfo.mbDateValues = false;
+ aInfo.mbIntegerOnly = true;
+ aInfo.mfStart = 30;
+ aInfo.mfEnd = 60;
+ aInfo.mfStep = 10;
+ ScDPSaveNumGroupDimension aGroup(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Order")), aInfo);
+ pDimData->AddNumGroupDimension(aGroup);
+ }
+
+ pDPObj->SetSaveData(*pSaveData);
+ ScRange aOutRange = refreshGroups(pDPs, pDPObj);
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "Order", 0 },
+ { "<30", "423" },
+ { "30-39", "87" },
+ { "40-49", "241" },
+ { "50-60", "61" },
+ { ">60", "577" },
+ { "Total Result", "1389" }
+ };
+
+ bSuccess = checkDPTableOutput<2>(m_pDoc, aOutRange, aOutputCheck, "Order grouped by numbers");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ pDPs->FreeTable(pDPObj);
+ CPPUNIT_ASSERT_MESSAGE("There should be no more tables.", pDPs->GetCount() == 0);
+ CPPUNIT_ASSERT_MESSAGE("There shouldn't be any more cache stored.",
+ pDPs->GetSheetCaches().size() == 0);
+
m_pDoc->DeleteTab(1);
m_pDoc->DeleteTab(0);
}
More information about the Libreoffice-commits
mailing list