From fdcac5fa84b5fba908a0e59b0ceb953da58e8609 Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Tue, 20 Mar 2012 16:27:20 -0400 Subject: 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. --- sc/qa/unit/ucalc.cxx | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) 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); } -- cgit