summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-03-20 16:27:20 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-03-20 17:06:12 -0400
commitfdcac5fa84b5fba908a0e59b0ceb953da58e8609 (patch)
tree43fde618ec28074a24034d9977a9c571c767f6f0
parent90ec7ecb86f4cc2005ac1c5a7e70b19fbdc02426 (diff)
Added more code to test the integrity of the source data arrays.
Source data array stores item IDs and represents the original data series before normalization.
-rw-r--r--sc/qa/unit/ucalc.cxx50
1 files changed, 50 insertions, 0 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 532460155996..43ea584c1a3b 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -147,6 +147,10 @@ public:
*/
void testPivotTableNamedSource();
+ /**
+ * Test for pivot table cache. Each dimension in the pivot cache stores
+ * only unique values that are sorted in ascending order.
+ */
void testPivotTableCache();
void testSheetCopy();
@@ -1987,6 +1991,52 @@ void Test::testPivotTableCache()
pItem = aCache.GetItemDataById(2, 6);
CPPUNIT_ASSERT_MESSAGE("wrong item value", !pItem);
+ {
+ // Check the integrity of the source data.
+ ScDPItemData aTest;
+ long nDim;
+
+ {
+ // Dimension 0: Z, R, A, F, Y, 12
+ nDim = 0;
+ const char* aChecks[] = { "Z", "R", "A", "F", "Y" };
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aChecks); ++i)
+ {
+ pItem = aCache.GetItemDataById(nDim, aCache.GetItemDataId(nDim, i, false));
+ aTest.SetString(rtl::OUString::createFromAscii(aChecks[i]));
+ CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem && *pItem == aTest);
+ }
+
+ pItem = aCache.GetItemDataById(nDim, aCache.GetItemDataId(nDim, 5, false));
+ aTest.SetValue(12);
+ CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem && *pItem == aTest);
+ }
+
+ {
+ // Dimension 1: A, A, B, B, C, C
+ nDim = 1;
+ const char* aChecks[] = { "A", "A", "B", "B", "C", "C" };
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aChecks); ++i)
+ {
+ pItem = aCache.GetItemDataById(nDim, aCache.GetItemDataId(nDim, i, false));
+ aTest.SetString(rtl::OUString::createFromAscii(aChecks[i]));
+ CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem && *pItem == aTest);
+ }
+ }
+
+ {
+ // Dimension 2: 30, 20, 45, 12, 8, 15
+ nDim = 2;
+ double aChecks[] = { 30, 20, 45, 12, 8, 15 };
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aChecks); ++i)
+ {
+ pItem = aCache.GetItemDataById(nDim, aCache.GetItemDataId(nDim, i, false));
+ aTest.SetValue(aChecks[i]);
+ CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem && *pItem == aTest);
+ }
+ }
+ }
+
m_pDoc->DeleteTab(0);
}