summaryrefslogtreecommitdiff
path: root/sc
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 /sc
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.
Diffstat (limited to 'sc')
-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);
}