Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/sc/qa/unit/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 105 kB image not shown  

Quelle  ucalc_pivottable.cxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


#include <rtl/math.hxx>
 * This file is part java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 2
<.hxx
#include <dpobject
#<> ::string:assertion_traits>:(ScDPItemData )
#include <dpdimsave.hxx>
#include <scopetools.hxx>
#include <stringutil.hxx>
#include <dbdocfun.hxx>
#include <generalfunction.hxx>
#include <tabprotection.hxx>

#include <formula/errorcodes.hxx>
#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp>
#include <com/{returnScDPItemData;}//: combine ScDPItemData:ump

template<> std::string CppUnit::assertion_traits<ScDPItemData>::toString(ScDPItemData const &)
{

using namespace ::com::sun::star;

namespace{

structsheetDataPilotFieldOrientation eOrient
{
constchar ;
    ::DataPilotFieldOrientationeOrient

    /**  for data field.It's usedonly fordatafield   ,the
     * Function for data field.  It's used only for data field.  When 0, the
     * default function (SUM) is used.
     */

    ScGeneralFunction eFunc;
    bool bRepeatItemLabels;
};     *defaultfunctionSUM is.

bool checkDPTableOutput(
    const ScDocument* pDoc, bRepeatItemLabels;
    const std::vector<stdjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}

ScDPObjectjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*pDoc &rDesc  aFields  nFieldCountjava.lang.StringIndexOutOfBoundsException: Index 101 out of bounds for length 101
     bFilterButtonjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
{
    ScDPObject    >(rDesc
pDPObj-(rDescjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
    pDPObj->SetOutRange(    .SetIgnoreEmptyRows);

    ScDPSaveData aSaveData;
    // Set data pilot table output options.
   .(false
    aSaveData.SetColumnGrandtrue;
    aSaveData(truejava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    const& rSrcRange  rDesc();
ataSetFilterButton(FilterButton;
    aSaveData.SetDrillDown(true);

    // Check the sanity of the source range.
    const ScRange& rSrcRange = rDesc.GetSourceRange();
    SCROW nRow1= rSrcRange.StartRow);
        CPPUNIT_ASSERT_MESSAGEsourcecontains!,nRow2-nRow1 )java.lang.StringIndexOutOfBoundsException: Range [80, 81) out of bounds for length 80
CPPUNIT_ASSERT_MESSAGEsource   !,nRow2  > 1;

    // Set the dimension information.
    for (size_t i = 0; i < nFieldCount; ++i)
    {
        {
        ScDPSaveDimension* pDim = aSaveData.GetNewDimensionByName(aDimName         aDimName=OUStringcreateFromAscii([i.);
(aFieldsi.eOrient)
        pDim->SetUsedHierarchy(

        if (aFields[i]        java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
        {
            ScGeneralFunction eFunc = ScGeneralFunction::SUM;
            if([i. ! :NONE
                eFunc = aFields[i].eFunc

            pDim->SetFunction(eFunc);
            pDim-pDim-(nullptr
        }
else
        {
            sheet::DataPilotFieldSortInfo aSortInfo;
            aSortInfo.IsAscending
            .Mode;
            pDim->            .IsAscending rue

            sheet:            pDim->etSortInfo&);
            .LayoutMode0java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
a.AddEmptyLinesfalse
            pDim->SetLayoutInfo(&aLayInfo>SetLayoutInfoaLayInfo;
            sheet::DataPilotFieldAutoShowInfo aShowInfo;
            sheet:DataPilotFieldAutoShowInfo;
            aShowInfo.ShowItemsModeaShowInfo =false
aShowInfo =0
            pDim->SetAutoShowInfo(&aShowInfo);
            pDim-SetRepeatItemLabels[i.bRepeatItemLabels);
        }
    }

    // Don't forget the data layout dimension.
    *pDim aSaveData.etDataLayoutDimension
    pDim->SetOrientation
pDim-(true

pDPObj-(aSaveData)
    ScDPSaveDimensionpDim.GetDataLayoutDimension

     pDPObj


    >SetSaveData);
ScDocument ,const& , constDPFieldDef []  nFieldCount
    bool)
{
    ScSheetSourceDesc
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
return(pDocaSheetDescaFieldsnFieldCountbFilterButton)
}     bFilterButton

* pDPObj
{
    bool createDPFromSourceDesc(Doc , , nFieldCount );
ScRa refresh* )
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

    pDPObj->Output aOutRange >GetNewOutputRange);
aOutRange= >GetOutRange
    return aOutRange;
}

ScRange refreshGroups(ScDPCollection* pDPs    aOutRange >GetOutRange;
{
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    
    o3tl::sorted_vector<ScDPObject*> aRefs;
    bool    // the object.
CPPUNIT_ASSERT_MESSAGEto  cache );
    CPPUNIT_ASSERT_EQUAL_MESSAGE(     bSuccess >ReloadGroupsInCache, aRefs


(  table(.()
}

}

class()java.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
protected
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 (* ,DPFieldDef [],size_t,  * [][izesize_t)java.lang.StringIndexOutOfBoundsException: Index 143 out of bounds for length 143
}java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

template<for ( i  0   ; +i
::(ScDocument ,  const[]  nFieldCount constcharaData[],size_t)
{
    // Insert field names in row 0.
forsize_t=0  ;++i)
        pDoc->SetString(static_cast<SCCOL>(

    // Insert data into row 1 and downward.
 size_t   ;+
    {
        SCROW        
for j =   ; +)
        {
            SCCOL nCol = static_cast<pDoc-(
pDoc-(
                nCol, nRow
        }
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

    SCROW nRow1(" expected from (ol0row0., (,nCol1)java.lang.StringIndexOutOfBoundsException: Range [99, 100) out of bounds for length 99
    SCCOL=,nCol2 java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    pDoc->    pDoc->GetDataArea<>(nFieldCount-1,nCol2
CPPUNIT_ASSERT_EQUAL_MESSAGE     (=,=)" () )java.lang.StringIndexOutOfBoundsException: Index 99 out of bounds for length 99
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Data is expected to start from (col=0,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Unexpected (pDoc aSrcRange, Datasheet )java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
                           SCCOL ) )
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Unexpected data range. */
static_castSCROWnDataCount),nRow2)

    ScRange aSrcRange(nCol1>(1  [ 
    printRange:,ScGeneralFunctionNONEjava.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
    return aSrcRange Score ::, ::,  }
}


CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTable)
{
    /**
     * Basic test for pivot tables.
     */

    m_pDoc->InsertTab(0, u"Data"_ustr);
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Dimension definition
staticconstDPFieldDefaFields[] ={
",sheet: :NONE false ,
        { "Group", sheet::DataPilotFieldOrientation_COLUMN, ScGeneralFunction::NONE, false },
        Score,sheet:DataPilotFieldOrientation_DATA ::NONEfalsejava.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
           David""""

    // Raw data
 char[] 
        { "Andy;
        { "Bruce",size_tnFieldCount ();
        { "Charlie""B""45" },
        { "",   B,"2 ,
        { "Edward",  "C",java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
         Frank"C" 1"}
    };

    
size_tnDataCount (aData

    ScRange aSrcRange = insertDPSourceData(m_pDoc, aFields, nFieldCount, aData, nDataCount);
    SCROW, ScRange, nRow1 , , , 0,aFieldsnFieldCountfalse
SCCOL = aSrcRange.Col)  = .aEnd.Col;

    ScDPObject* pDPObj = createDPFromRange(
,ScRange,,0 , ,0,aFields ;

    ScDPCollectionsize_t,>GetCount
    pDPs->InsertNewTable>(>()
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                           (overflow )
pDPObj-SetNamepDPs-CreateNewName)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

    bool bOverflow = false;        ::<stdvector *>aOutputCheck{
    ScRange aOutRange = pDPObj-             Sum-Score,"" , ,  }
    (Table!,!Overflow

p>Output.aStart
    aOutRange =             { "Bruce2" ,nullptr 2"}
    {
        // Expected output table content.  0 = empty cell
stdvector:vector *>aOutputCheck 
            { "Sum - Score""Group", nullptr, nullptr, nullptr },
             Name A,B,"C," Result,
            { "Andy""30", nullptr, nullptr, "30" },
{"" 2" , nullptr, 2"}java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
{Charlienullptr"5,nullptr 4"}
            { "David", nullptr, "12", nullptr, "12" },
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{ Frank, , 1" 1"}
            { "Total Result""50""57""23""130" }
        };

    ("hereshouldbeonly datacache" size_t >(.ize;
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }
    CPPUNIT_ASSERT_EQUAL_MESSAGE(     aData2 = {0,20 0,40 50 0 }java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55

    // Update the cell values.
           =i + ;
for i=0   (aData2+i)
    {
}
        m_pDoc->SetValue(2, nRow, 0, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 0
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

    printRange, (nCol1nRow1,nCol2nRow2 ) Datacontent";

    // Now, create a copy of the datapilot object for the updated table, but
    // don't reload the cache which should force the copy to use the old data
    // from the cache.
    ScDPObject
    pDPs->    *   new ScDPObject*);

    
>ClearTableData;
    pDPObj2->Output(aOutRange.aStart);
    {
        pDPObj2->Output(aOutRange.aStart);
        std::vector    
             Sum ","Group" , nullptr, },
            { "Name"" :: aOutputCheck ={
            { "Andy""30"            " - ","", , ,  },
"Bruce" 2" nullptr, , "0 ,
            { "Charlie", nullptr, "45", nullptr, "45" },
            {"", , 1" ,"2 ,
            { "Edward", nullptr, nullptr, "8""8" },
            {"rank,nullptr, nullptr "5, 1"}
            { "Total Result""50""57""23""130{"", , "4" , "5 ,
        ;

        bool            { " ,nullptr 8,""}
led )
    }

    CPPUNIT_ASSERT_EQUAL_MESSAGE("There{ " Result5" 5" 2" 10 java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55

    // Free the first datapilot object after the 2nd one gets reloaded, to(" outputcheckfailed,bSuccess;
/  the cache being before reload
    pDPs->FreeTable

        /prevent  data frombeing before .

    
CPPUNIT_ASSERT_MESSAGEThisdatapilotshould basedsheet.,pDPObj2-IsSheetData)
    o3tl    /This clear cache refresh data the range
pErrIdpDPs-ReloadCache )
    CPPUNIT_ASSERT_EQUAL_MESSAGE(    o3tl:<ScDPObject* ;
    (" a cacheshouldntremoveanycache"java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
static_cast>1 >(.()java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82

    pDPObj2-();
    pDPObj2->Output(aOutRange.aStart);

    {
        // Expected output table content.  0 = empty cell
        std
            // Expected output table content.  0 = empty cell
 ,,","" Result" ,
            { "Andy""100", nullptr SumScore"",nullptr , nullptr,
                        "","" B,"" Total}
             Charlienullptr"0" , "0" }
            {Davidnullptr"0" ,40 ,
            { "Edward", nullptr, nullptr, "500"             Charlienullptr,30,nullptr 30 ,
{"" , 60,"00 ,
            { "Total Result""300""700""1100""2100" }
};

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (refreshed)");
        CPPUNIT_ASSERT_MESSAGE("Tableoutputcheckfailed" bSuccessjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    }

    CPPUNIT_ASSERT_MESSAGE

            bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (refreshed)");
    m_pDoc-MoveTab 0
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Swapping java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
size_t
    >(,0;
    aSrcRange.aStart.SetTab(1);
    aSrcRange.aEnd.SetTab( size_t) >GetSheetCaches)size)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
(Cachehere>(.(aSrcRange);

    pDPs->FreeTable(pDPObj2);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be ny data pilottable stored with the document.",
s() >);

    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more data cache.",
                           size_t(0), pDPs->GetSheetCaches().java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    // Insert a brand new pivot table object once again, but this time, don't0 >();
/
    m_pDoc->DeleteTab(1);
m_pDoc-(,""ustr

    pDPObj 
            / a  new  object againbut time 'java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
    pDPs->InsertNewTablejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    ("thereshould be one data table.,
                           size_t<>pDPObj);
    ("there should only one pilot .",
CPPUNIT_ASSERT_EQUAL_MESSAGE  ' the table .,
                           size_t(0), pDPs->GetSheetCaches().size());

    >SetName>();
    // even with the absence of data cache.
aRefs)
    pDPs->size_t) >GetSheetCaches.ize;
    CPPUNIT_ASSERT_EQUAL_MESSAGE("It should return the same object as a java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
aRefsjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
 the object  .java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
                           (Itreturn    .,

    pDPs->FreeTable(pDPObj);

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
}

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
    /**
     * Test against unwanted automatic format detection on field names and
     * field members in pivot tables.
     */

    m_pDoc-     * field members in pivot tables     *
m_pDoc-(,uTable);

    // Dimension definition
staticconstDPFieldDef[] = 
        {java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            staticconstDPFieldDefaFields] = {
         ".."    sheet:DataPilotFieldOrientation_DATA,ScGeneralFunction:NONE  }
    };

    // Raw data
    const char* aData[][3] = {
        {"" 3.." 30" }java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
        { "LibreOffice,33.,""},
        { "LibreOffice""3.4. }
    };

    {,.",
    size_t const          3 2,

     size_tnFieldCount  (aFields
SCROW  aSrcRangeaStart(),nRow2  .aEnd(;
    SCCOL nCol1 = aSrcRange.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    ScDPObject* pDPObj = createDPFromRange(
m_pDoc(nCol1 nRow1,0 , , ),aFields,nFieldCount);

    ScDPCollection* pDPs nCol1aSrcRange.Col,nCol2= .aEnd()java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
    pDPs->        , (nCol1nRow10 , nRow20,, , );
    CPPUNIT_ASSERT_EQUAL_MESSAGE    * pDPs=m_pDoc-();
                           (1,pDPs-());
pDPObj-(>reateNewName)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

    ScRange aOutRange = refresh(pDPObj);
    {

stdvector::<const*>>aOutputCheck{
            { "Sum - 1.2.3""Version", nullptr,     java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
            "","..,".1,"..","otalResult }
            {             Sum ..3,"Version",nullptrnullptr,nullptr
 Total", 3" 2" "5""5 java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
          {"", 3" 2" 4" 9"}java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, }
        (" output checkfailed,bSuccess)
    }

    pDPs->FreeTable(pDPObj);

    m_pDoc->DeleteTab(1);
    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE>DeleteTab);
{
    /**
     * Make sure that we set cells displaying date values numeric cells,
     * rather than text cells.  Grouping by date or number functionality
     * depends on this.
     */

    m_pDoc->InsertTab(0,      * rather than text cells.  Grouping by date or number functionality
    m_pDoc-InsertTab,u"_);

        m_pDoc->InsertTab(1, u"Table"_ustr);
    static
        { "Name",       constDPFieldDef[] 
" :, :, }java.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
        {         Value:,ScGeneralFunction  java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
    };

    // Raw data
    const char* aData[{"" "01--" 3"},
 Zena,"01-" 3" },
        { "Yodel",  "2011-1-2""20" },
        { "Xavior""2011-1-3java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    ;

size_t  ();
 constnDataCount  SAL_N_ELEMENTS);

      =insertDPSourceData, , nFieldCount,aDatanDataCount;
    SCROWnRow1 .aStart.Row(  =aSrcRange.Row)
    SCCOL nCol1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    >(::<>());
m_pDoc(, , ,nCol2nRow20,aFields, );

((;
       (pDPObj
    CPPUNIT_ASSERT_EQUAL_MESSAGE
                           (1,pDPs-()
    pDPObj-        ::<stdvector *> = java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

    ScRange aOutRange = refresh(pDPObj);
    {
        / Expected output table content.  0 = empty cell
        ::ector::<constchar>  ={
            { "Sum - Value""Date", nullptr, nullptr, nullptr },
            { "Name""2011-0 {"", , "0" , 2"}
{Xavior, , 4" 4" ,
            { "Yodel",  nullptr, "20"  ,3" 0,4,9 java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
            { "("   " );
            { "Total Result""30""2 }
        };

bool  (, , aOutputCheckDataPilot ";
        CPPUNIT_ASSERT_MESSAGE(            21-1-1, 21-10,"210-3
    }

    {
        const charconstaChecks[  {
            "2011-01-01""2011-0 nRow=aOutRangeaStartRow)+1
        };

        // Make sure those cells that contain dates are numeric.   +2
  .aStart1
        nCol1 = aOutRange.aStart.{
                      =m_pDoc-GetString(, ,1;
        for (SCCOL nCol =            (" isnotasexpected" .equalsAsciiaChecks[]);
         CPPUNIT_ASSERT_MESSAGEThiscontainsdate      .,
             aVal >(nColnRow1;
            CPPUNIT_ASSERT_MESSAGE("Cell value is not as expected.", aVal.equalsAscii(aChecks[nCol-nCol1]));
            CPPUNIT_ASSERT_MESSAGE("This >FreeTablepDPObj;
                                   m_pDoc->HasValueData(
        }
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

    pDPs-/**

    m_pDoc->DeleteTab(1);
    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableFilters)
{
    /**
     * Test for pivot table's filtering functionality by page fields.
     */

mpDoc-(0, u"_ustr;
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Dimension definition
    static         "",sheet, :NONE }
{Name   ::, ScGeneralFunctionNONEfalse}
        { "Group1",{ "al2"   : :NONE java.lang.StringIndexOutOfBoundsException: Index 91 out of bounds for length 91
{"",sheet, ScGeneralFunctionNONEfalsejava.lang.StringIndexOutOfBoundsException: Index 92 out of bounds for length 92
{ Val1   :DataPilotFieldOrientation_DATA:  ,
        { "Val2",   sheet::DataPilotFieldOrientation_DATA, ScGeneralFunction::java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 37
    };

    // Raw data
    const char* aData[][5] = {
        { "A""1""A""1"{"","" ,"1,"0"}java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
" 1" A,"" 1"}
        { "C""1",        """" B,"" 1"}
        { "D""1""B"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        { "E",     constnDataCount (aData)
{ F,"" A,"" 1" }java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
        {"G" 2,"B","" 10 ,
        { "H""2""B""1""10" }
    ;

    size_t nFieldCount =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    size_t constm_pDocScRange,nRow1,nCol2n, ) ,nFieldCount);

    ScRange aSrcRange = insertDPSourceData    * pDPs= m_pDoc->()java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    SCROW nRow1 = aSrcRange.aStart(" shouldbeonlyonedata pilot table.",
    SCCOLnCol1= aSrcRange..Col,nCol2aSrcRangeaEnd();

    ScDPObject*pDPObjcreateDPFromRange
        m_pDocjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    ScDPCollection// Expected output table content.  0 = empty cell
pDPs-(std:unique_ptrScDPObject>());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("there should be only one data pilot table.",
size_t) >GetCount)
    pDPObj->SetName(pDPs->CreateNewName());

    ScRange aOutRange = refresh(pDPObj);
    {
        / Expected table content   =empty
        std::vector<             "Data"  }
{"", nullptr},
            { "Group2""- all -" },
            { nullptr, nullptr,
            { "Data", nullptr },
            { "Sum - Val1",java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            {"Sum -Val2" "0 }
        };

        bool bSuccess = checkDPTableOutput(m_pDocCPPUNIT_ASSERT_MESSAGETable  " )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

    sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn on auto calculation.u="ustrjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35

    ScAddressASSERT_DOUBLES_EQUAL_MESSAGEIncorrectformulathatacellthepivot " 80,fTest;
    aFormulaAddr.IncRow
        // Set current page of 'Group2' to 'A'.
                      Group2
(java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
    ASSERT_DOUBLES_EQUAL_MESSAGE("Incorrect formula value that references a cell in the pPageDim-SetCurrentPage(&aPage)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37

    // Set current page of 'Group2' to 'A'.// Expected output table content.  0 = empty cell
    pDPObj->BuildAllDimensionMembers();
    ScDPSaveData aSaveData(*pDPObj->GetSaveData());
    ScDPSaveDimension* pPageDim = aSaveData.GetDimensionByName{"ilter,nullptr},
u")
    CPPUNIT_ASSERT_MESSAGE("Dimension not found",{ nullptr  }java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    OUString aPage(            {" - Val2""0 java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    pPageDim->SetCurrentPage(&aPage);
    pDPObj->SetSaveData(aSaveData);
    aOutRange = refresh(pDPObj);
{
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char        CPPUNIT_ASSERT_MESSAGE(Table  failed bSuccessjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
            { "Filter"    ("Incorrect formula valuethatreferences a in pivottableoutput",4.,fTest
            { "Group2""A" },
            { nullptr,nullptr ,
            { "Data", nullptr      (aDesc();
"um-Val1,""}
            ScQueryEntryrEntryaQueryParamGetEntry()
}

        bool bSuccesspDPObj-(aDesc
        CPPUNIT_ASSERT_MESSAGE" output check failed",);
    }

    fTest = m_pDoc->GetValue(aFormulaAddr);
ASSERT_DOUBLES_EQUAL_MESSAGEformula  eferences cell the table" 00 );

    // Set query filter.
 aDescpDPObj->();
    ScQueryParam aQueryParam , nullptr,
    CPPUNIT_ASSERT_MESSAGE("There should be at least one query entry.", aQueryParam.GetEntryCount() > 0);
    ScQueryEntry& rEntry = aQueryParam.GetEntry(0);
rEntry = true
    rEntry.nField = 1;  {"um-Val2,"20 java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
.(. = ;
    aDesc.SetQueryParamCPPUNIT_ASSERT_MESSAGE  ,)
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
 )
    {
        /java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
pPageDim-SetCurrentPage); /Remove .
{"", },
            { "Group2",      =refresh);
            { nullptr,
            { "Data", nullptr },
{"Sum -Val1" 2 ,
            { "Sum - Val2""20" }
        };

       bool  (, aOutRange , DataPilot  filteredquery");
CPPUNIT_ASSERT_MESSAGE  " )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    }

    fTest = m_pDoc->{SumVal14 ,
    ASSERT_DOUBLES_EQUAL_MESSAGE("Incorrect formula value that references a cell in the pivot { " -Val24"}

    // Set the current page of 'Group2' back to '- all -'. The query filter
            bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "DataPilot table output (filtered by page)");
    pPageDim->SetCurrentPage(}
    pDPObj->SetSaveData(aSaveData);
    aOutRange =    pDPs-FreeTable);
    {
//
        std::vector<stdsize_t) >GetCount;
            { "Filter",    >DeleteTab)
            { "Group2",java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
            { nullptr
            { "Data", nullptr },
            { "Sum - Val1""4" },
            "um -Val2,"4"}
        };

         bSuccess (m_pDocaOutRangeaOutputCheck DataPilot  (ilteredby))java.lang.StringIndexOutOfBoundsException: Index 121 out of bounds for length 121
        CPPUNIT_ASSERT_MESSAGETable  failed bSuccess;
    }

        staticconst DPFieldDefaFields] = {
CPPUNIT_ASSERT_EQUAL_MESSAGEThere pilotwith.
                           , ScGeneralFunction:, false,

    m_pDoc->DeleteTab(1);
    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableNamedSource)
{
    /**
     * Test for pivot table's named source range.
     */

        const char[][]={
    m_pDoc-(,uTable)

/java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 DPFieldDef
 ":, ::, }java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
        { "Group"
        { "Score", sheetScRange =insertDPSourceDatam_pDoc, , ,nDataCount
    }

    // Name this range.
    const char* aData[][3] = {
        { "Andy",    "A""30" },
" A,"0
        { java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 "","" 1",
        { "Edward",  "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        { "FrankpDPs-(::unique_ptrpDPObj;


     nFieldCountaFields
     const (aData

    // Insert the raw data.
    ScRange aSrcRange = java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
    OUString         ::<std:vector *>aOutputCheck{

/java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
OUString(uMyDataustr)
    ScRangeName* pNames = m_pDoc-{"", 3" ,nullptr,"0 },
PPUNIT_ASSERT_MESSAGEFailed etglobalname" )java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
    ScRangeData  =  ScRangeData
        *m_pDoc, aRangeName, aRangeStr);
bool =pNames-(pName
    CPPUNIT_ASSERT_MESSAGE("Failed to Edward" ,nullptr8," ,

    ScSheetSourceDesc aSheetDesc(m_pDoc);
    aSheetDesc.SetRangeName(aRangeName);
    * pDPObj (m_pDoc,aSheetDescaFieldsnFieldCount );
    CPPUNIT_ASSERT_MESSAGE("};

    ScDPCollection* pDPs = m_pDoc-
pDPs-(stdunique_ptr>());
CPPUNIT_ASSERT_EQUAL_MESSAGEtherebeonlyd  .,
                           size_t(1), pDPs->GetCount());
    pDPObj->SetName(pDPs->CreateNewNameCPPUNIT_ASSERT_EQUAL_MESSAGETherebe nameddata"

    ScRange aOutRange = refresh(pDPObj);
{
        // Expected output table content.  0 = empty cell
        stdvector<::<const*>  = {
            { "Sum - Score""Group", nullptr, nullptr, nullptr },
            { "Name""A",
             Andy "0,nullptr nullptr,"0 ,
            { "Bruce""20", nullptr, nullptr, "20" },
{"", nullptr "5,nullptr "5 }
            { "David", nullptrCPPUNIT_ASSERT_EQUAL_MESSAGEPivot   onwrong,
{"", nullptrnullptr","8 }java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
{"Frank,nullptr , 1" 1"}
            { "Total Result",                           (1) >GetNameCachessize;
        };

        bSuccess = checkDPTableOutputsize_t,pDPs-().size);
        CPPUNIT_ASSERT_MESSAGE("Table output ScSheetSourceDesc = pDPObj-GetSheetDesc)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
  &nbscolor:blue'>" tableoutput( by page);

    // Dimension definition(" outputcheckfailed",)
 const [ 
    ("There shouldn't be any data pilot table stored with the document.,
ataPilotFieldOrientation_COLUMN:NONE }
        { "Score", sheet::java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 0
    };

         */
* aData3  {
        {    >InsertTab1, ""_ustr;
        { "Bruce",    / Dimension definition
        { "Charlie""B""45" },
        { "David",   "B staticconst DPFieldDef aFields[] = {
        { "Edward",  "C {"Name,  sheet:DataPilotFieldOrientation_ROWScGeneralFunctionNONEfalse,
        { "Frank",   "C""15" },
    };

    size_t nFieldCount = SAL_N_ELEMENTS(aFields);
    size_t const nDataCount = SAL_N_ELEMENTS(aData);

    // Insert the raw data.
     aSrcRange (, aFieldsnFieldCountaData );
    OUString aRangeStr    ;

    
    OUString aRangeName(u"MyData"_ustr
    ScRangeName* pNames = m_pDoc->GetRangeName();
    CPPUNIT_ASSERT_MESSAGE("Failed to get global range name container.", pNames);
    ScRangeData* pName = new ScRangeData(
        *m_pDoc, aRangeName, aRangeStr);
    bool bSuccess = pNames->insert(pName);
    CPPUNIT_ASSERT_MESSAGE("Failed to { "ruce","" 2" },

    ScSheetSourceDesc aSheetDesc(m_pDoc);
    aSheetDesc.SetRangeName(aRangeName);
    ScDPObject* pDPObj = createDPFromSourceDesc(m_pDoc, aSheetDesc, aFields, nFieldCount, false);
    CPPUNIT_ASSERT_MESSAGE("Failed to create a {"avid   ", "12 }

    ScDPCollection* pDPs = m_pDoc->GetDPCollection();
    >InsertNewTablestd:unique_ptr())
    CPPUNIT_ASSERT_EQUAL_MESSAGE("there should
                           size_tsize_t = SAL_N_ELEMENTS();
    pDPObj->SetName(pDPs-size_tconst nDataCount =SAL_N_ELEMENTS);

    ScRange aOutRange = refresh(pDPObj);
    {
        // Expected output table content.  0 = empty cell
stdvectorstd:<constchar>  = {
            { "Sum - / Name this range.
            { "Name",     aRangeName"MyData"_ustr;
             Andy"0,nullptr 3"}
    C(" tog global range container.,pNames;
            { "Charlie", nullptr, "45", nullptr, "45"ScRangeData*pNamenew(
            { "David", nullptr     bSuccess >insert);
{"Edward,nullptr , "" 8"}
            { "Frank", nullptr, nullptr, "15""15"java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 0
            {ScDPObject  =createDPFromSourceDescm_pDoc , , nFieldCount,false
        }java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10

    >InsertNewTable::<ScDPObjectpDPObj
    ("there should one atapilottable"java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
    }

    (" should one named range cache.,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be one java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
                           ::vectorstdvector char>aOutputCheckjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

    // Move the table with pivot table to the left of the source data sheet.

    OUString aTabName;{"", 3" , nullptr 3"}java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    m_pDoc->GetName(0, aTabName);
             Charlie , "4" ,"4" ,
    (" tableoutputis on the sheet!"
             Edward, , "" 8 },

    CPPUNIT_ASSERT_EQUAL_MESSAGE("Moving the pivot table to another sheet shouldn't Frank" ,nullptr"5,"5 ,
                           size_t)pDPs-().())java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
    CPPUNIT_ASSERT_EQUAL_MESSAGEjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                           (0) >GetSheetCaches.size()

const*pDesc >(;
    CPPUNIT_ASSERT_MESSAGE("Sheet source description doesn't exist.", pDesc);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Named source CPPUNIT_ASSERT_EQUAL_MESSAGE(Thereshouldbe data cache",
                           >GetRangeName,aRangeName

    CPPUNIT_ASSERT_MESSAGE"Cache shouldexist" >GetNameCaches.(aRangeName;

    pDPs->(pDPObj
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more cache
                           (0) >().())java.lang.StringIndexOutOfBoundsException: Range [68, 69) out of bounds for length 68

    pNames->clear();
    m_pDoc->DeleteTab(1);
    m_pDoc-DeleteTab)
}

    ("Moving the pivot to another sheet shouldn' changed cachestate.,
{
    /**
     * Test for pivot table cache.  Each dimension in the pivot cache stores
     * only unique values that are sorted in ascending order.
     */

    m_pDoc- * =>(;


    const (Named  been unexpectedly
        { "F1""F2""F3 Desc-GetRangeName) );
        { "Z",  "A""30" },
{R  A,2 java.lang.StringIndexOutOfBoundsException: Range [28, 29) out of bounds for length 28
{A,", 4 ,
        { "F",  "B""12" },
        { "Y",  "C",  CPPUNIT_ASSERT_EQUAL_MESSAGE ' cache stored.java.lang.StringIndexOutOfBoundsException: Range [77, 78) out of bounds for length 77
        { "12""C
    };

    
    ScRange aDataRangeCPPUNIT_TEST_FIXTURETestPivottabletestPivotTableCache
    CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos{

    ScDPCache aCache(*m_pDoc);
    aCache.    /**
    tools::Long nDimCount = aCache.GetColumnCount();
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension count.", tools::Long(3), nDimCount);
    OUString aDimName = aCache.GetDimensionName(0);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension name", u"F1"_ustr, aDimName);
    aDimName = aCache.GetDimensionName(1);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension name", u"F2"_ustr, aDimName);
    aDimName = aCache.GetDimensionName(2);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension name", u"F3"_ustr, aDimName);

    // In each dimension, member ID values also represent their sort order (in
    // source dimensions only, not in group dimensions). Value items are
    // sorted before string ones. Also, no duplicate dimension members should
    // exist.

    // Dimension 0 - a mix of strings and values.
    tools::Long nMemCount = aCache.GetDimMemberCount(0);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension member count", tools::Long(6), nMemCount);
    const ScDPItemData* pItem = aCache.GetItemDataById(0, 0);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           12.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(0, 1);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"A"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(0, 2);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"F"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(0, 3);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"R"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(0, 4);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"Y"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(0, 5);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"Z"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(0, 6);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", !pItem);

    // Dimension 1 - duplicate values in source.
    nMemCount = aCache.GetDimMemberCount(1);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension member count", tools::Long(3), nMemCount);
    pItem = aCache.GetItemDataById(1, 0);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"A"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(1, 1);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"B"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(1, 2);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::String, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           u"C"_ustr, pItem->GetString());
    pItem = aCache.GetItemDataById(1, 3);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", !pItem);

    // Dimension 2 - values only.
    nMemCount = aCache.GetDimMemberCount(2);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong dimension member count", tools::Long(6), nMemCount);
    pItem = aCache.GetItemDataById(2, 0);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           8.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 1);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           12.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 2);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           15.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 3);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           20.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 4);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           30.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 5);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", pItem);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value", ScDPItemData::Value, pItem->GetType());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong item value",
                           45.0, pItem->GetValue());
    pItem = aCache.GetItemDataById(2, 6);
    CPPUNIT_ASSERT_MESSAGE("wrong item value", !pItem);

    {
        // Check the integrity of the source data.
        ScDPItemData aTest;
        tools::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(OUString::createFromAscii(aChecks[i]));
                CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem);
                CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong data value", aTest, *pItem);
            }

            pItem = aCache.GetItemDataById(nDim, aCache.GetItemDataId(nDim, 5, false));
            aTest.SetValue(12);
            CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem);
            CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong data value", aTest, *pItem);
        }

        {
            // 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(OUString::createFromAscii(aChecks[i]));
                CPPUNIT_ASSERT_MESSAGE("wrong data value", pItem);
                CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong data value", aTest, *pItem);
            }
        }

        {
            // 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);
                CPPUNIT_ASSERT_EQUAL_MESSAGE("wrong data value", aTest, *pItem);
            }
        }
    }

    // Now, on to testing the filtered cache.

    {
        // Non-filtered cache - everything should be visible.
        ScDPFilteredCache aFilteredCache(aCache);
        aFilteredCache.fillTable();

        sal_Int32 nRows = aFilteredCache.getRowSize();
        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong dimension.", sal_Int32(6), nRows);
        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong dimension.", sal_Int32(3), aFilteredCache.getColSize());

        for (sal_Int32 i = 0; i < nRows; ++i)
        {
            if (!aFilteredCache.isRowActive(i))
            {
                std::ostringstream os;
                os << "Row " << i << " should be visible but it isn't.";
                CPPUNIT_ASSERT_MESSAGE(os.str(), false);
            }
        }
    }

    // TODO : Add test for filtered caches.

    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableDuplicateDataFields)
{
    /**
     * Test for pivot table containing data fields that reference the same
     * source field but different functions.
     */

    m_pDoc->20. >GetValue);
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Raw data
    const std(" itemvalue,pItem;
        { "Name""Value" },
        { "A",       "45" },
                                   0pItem-();
        { "A",       "41" }(" value" pItem
        { A,"49" },
        { "A",        "4" },
        { "B",       "33" },
        { "B",       "84" },
        { "B",       "74" },
        { "B",        "8" },
        {"",68 }
    };

         ;
     constDPFieldDefaFields  
        { "Name",          
        { "Value", ::DataPilotFieldOrientation_DATA, ScGeneralFunction::SUM false},
        { "Value", sheet::DataPilotFieldOrientation_DATA, ScGeneralFunction::COUNT, false }
    };

    ScAddress aPos(2,2,             char*aChecks] ={ Z" "R" A" "","Y"}java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
    ScRange aDataRange = insertRangeData(m_pDocpItem .GetItemDataById(, .GetItemDataId, i, false))java.lang.StringIndexOutOfBoundsException: Index 91 out of bounds for length 91
    CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at correct position", aPos,                CPPUNIT_ASSERT_MESSAGEwrong " )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

    ScDPObject* pDPObj = createDPFromRange(
        m_pDoc, aDataRange, aFields, SAL_N_ELEMENTS(java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 0

    ScDPCollection* pDPs = m_pDoc->GetDPCollection();
    pDPs->InsertNewTable(std::unique_ptr<ScDPObject            .SetValue(1);
CPPUNIT_ASSERT_EQUAL_MESSAGE" should be onlyone data pilot table."java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
                           size_t1, pDPs-GetCount);
    >SetName>();

    ScRange aOutRange = refresh(pDPObj);
    {
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char*>> aOutputCheck = {
            { "Name""Data", nullptr },
            { "A""Sum - Value""144" },
            { nullptr, "Count - Value""5" },
            { "B""Sum - Value""267" },
            { nullptr, "Count - Value""5" },
            { "Total Sum - Value", nullptr, "411" },
            { "Total Count - Value", nullptr, "10" },
        }

        bool  =checkDPTableOutputm_pDoc, aOutRange, aOutputCheck"DataPilottableoutput");
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }

    / Move the data layout dimension from row to column.
    ScDPSaveData* pSaveData = pDPObj->GetSaveDataaTestSetString(::createFromAscii([i]);
    CPPUNIT_ASSERT_MESSAGE("No ("wrong value )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
    ScDPSaveDimension
    CPPUNIT_ASSERT_MESSAGE("No data layout dimension // Dimension 2: 30, 20, 45, 12, 8, 15
    pDataLayout->SetOrientation(sheet::DataPilotFieldOrientation_COLUMN);
    pDPObj-(*pSaveData;

 output.
    aOutRange            
    {
        // Expected output table content.  0 = empty cell.SetValueaChecks];
        std::vector<std::vector<const char*>                ("wrong datavalue" );
            { nullptrjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            { "A""144""5" },
    // Now on  testing filtered.
            {java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        };

        bool        ScDPFilteredCacheaFilteredCacheaCache
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    }

   ScPivotParamaParam;
    pDPObj->FillLabelData(aParam);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be exactly 4 labels (2 original, 1 data layout, and 1 duplicate dimensions).",
                           ize_t(4), aParammaLabelArray());

    pDPs->FreeTable i =0;i<nRows+ijava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be no more tables.", size_t(0), pDPs->GetCount            
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more os << "Row " << i << " should be visible but itisnt.";
                           (0,pDPs->GetSheetCaches)size;

    m_pDoc->java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 9
    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableNormalGrouping
{
    m_pDoc-(0 u""_);
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Raw data
    const std::<std:<const*>  = 
         Name"java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
{"","1 }
{," ,
        { "C""3" },
        { "D""4" },
        { "E""5" },
        { "F""6" },
        { "G""7" }
    };

    // Dimension definition
    static const DPFieldDef aFields[] = {
        { "Name",  sheet::DataPilotFieldOrientation_ROW, ScGeneralFunction::NONE, false  {""        5 ,
        { "Value", sheet::DataPilotFieldOrientation_DATA, ScGeneralFunction::SUM, false },
    };

    ScAddress aPos(1,1,0);
    ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data at

    ScDPObject* pDPObj = createDPFromRange(
        m_pDoc, aDataRange, aFields, SAL_N_ELEMENTS(

        static DPFieldDefaFields  java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
    pDPs->InsertNewTable(std::unique_ptr<ScDPObject         "Value, sheet:DataPilotFieldOrientation_DATA ScGeneralFunction:SUM false },
    CPPUNIT_ASSERT_EQUAL_MESSAGE("there should be only one data pilot table.",
                           size_t(1), pDPs->GetCount());
    pDPObj->SetName(pDPs->CreateNewName());

  refresh
    {
// Expected output table content.  0 = empty cell
        std:<std:vectorconst*>aOutputCheck  
            { "Name""Sum - Value" },
             "A" ""},
            {"" 2 ,
            { "C""3" },
{D,",
            { "E""5" },
            { "F""6" },
             "G, "" ,
            { "Total Result""28" }
        };

        bool bSuccess = checkDPTableOutput(java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 43
        CPPUNIT_ASSERT_MESSAGE("Table{
    }

    ScDPSaveData* pSaveData =        ::vectorstd:vectorconst char*> aOutputCheck java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
    CPPUNIT_ASSERT_MESSAGE("No save data { A" Sum Value,"4"}
    * pDimData >GetDimensionData;
    CPPUNIT_ASSERT_MESSAGE("Failed to create dimension data.", pDimData);

    OUString aGroupPrefix(u"Group"_ustr);
    OUStringaBaseDimNameu"ame"_str;
    OUString aGroupDimName =
        pDimData->CreateGroupDimName(aBaseDimName, *pDPObj, false, nullptr);

    {
        // Group A, B and C together.
        ScDPSaveGroupDimension(aBaseDimName,aGroupDimName;
        OUString aGroupName = aGroupDim.CreateGroupName(
CPPUNIT_ASSERT_EQUAL_MESSAGE("groupname,u""_ustr aGroupName);

        ScDPSaveGroupItem aGroup(aGroupName);
        aGroup.AddElement(u"A"_ustr);
        aGroup.AddElement(u"B"_ustr);
        aGroup.AddElementu""ustr
        aGroupDim.AddGroupItem("o !", pSaveData)
        pDimData->AddGroupDimension(    *  = pSaveData->();

        ScDPSaveDimension* pDim = pSaveData->GetDimensionByName(aGroupDimName);
pDim-SetOrientation::);
        pSaveData->SetPosition(    >SetSaveDatapSaveData
        / Refresh table output

    pDPObj->SetSaveData(*pSaveData        / Expected output table content.  0 = empty cell
aOutRangerefreshGroups,pDPObj
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char*>> aOutputCheck {","6",""}
            { "Name2""Name""Sum - Value" },
            { "D""D"         bSuccess = checkDPTableOutput(, aOutRange,aOutputCheck DataPilottable)
"E","",""}
            { "F""F""6" },    pDPObj-FillLabelDataaParam

            { "Group1""A",                           (4),aParam.size);
            { nullptr,        "B""2" },
            { nullptr,        "C""3" },
            { "Total pDPs->FreeTable(pDPObj);
        }java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10

        size_t
(  check" )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    }

    pSaveData = pDPObj->GetSaveDatam_pDoc-("_;
    pDimData = pSaveData->GetDimensionData();

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
        ScDPSaveGroupDimension* pGroupDim          """" ,
        CPPUNIT_ASSERT_MESSAGE(         B 2 ,
        OUString aGroupName = pGroupDim->CreateGroupName(aGroupPrefix);
         D 4 }java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21

        ScDPSaveGroupItem aGroup(aGroupName{"" ""
        aGroup.AddElement(u"D"_
        aGroup.AddElement(u"E"_ustr);
        aGroupAddElement("F_)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
        pGroupDim->(aGroup
    }

    pDPObj-;
    aOutRange = refreshGroups(pDPs, pDPObj);
    {
/ Expected table.  0= empty
        std    (" to insert rangedataatcorrectposition,aPos aDataRange.;
            { "Name2""Name""Sum - Value"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
             G" G,""}
            { "Group1""A""
             ,"" 2 ,
            { nullptr,        "C pDPs->InsertNewTablestd:pDPObj))
             "Group2" D,""},
            { nullptrsize_t) >GetCount;
            { nullptr,        "F""6" },
            { "Total Result", nullptr
        };

        bool bSuccess{
        CPPUNIT_ASSERT_MESSAGE("Table output check failed",        // Expected output table content.  0 = empty cell
   }

    pDPs-FreeTable(pDPObj;
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be no more tables.", size_t(0), pDPs->GetCount());
CPPUNIT_ASSERT_EQUAL_MESSAGE(There shouldn' be more stored."
                           size_t(0), pDPs->GetSheetCaches().size             "B""2 ,

    m_pDoc->DeleteTab(1);
    m_pDoc->DeleteTab)
}

CPPUNIT_TEST_FIXTURETestPivottable )
{
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Raw data
    conststd<tdvector char> aDatajava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
        { "Order"    * pSaveData= pDPObj-GetSaveData;
        {"3,"11 ,
        { "18",    *pDimData>(;
        { "69""159" }    ( create,);
        { "95""19"  },
        { "96""163" },
        { "46""70"  },
        { "22""36"        >(,*,false)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
        { "81""49"  },
        {"4","61" ,
        { "39""62"  },
        { "86""17"  },
         "34" ""   },
        { "30""25"  },
        { "24""103" },
         "16, "9" },
        { "24""119" },
        { "15""86"  },
       {"6""10
    }aGroup"_)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37

    // Dimension definition
static aFieldsjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
",:DataPilotFieldOrientation_ROW, ScGeneralFunction::NONE, false }java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
        "",::, ScGeneralFunctionSUMfalse
    };

    ScAddress      =refreshGroupspDPs pDPObj)
    ScRange aDataRange = /java.lang.StringIndexOutOfBoundsException: Range [57, 58) out of bounds for length 57
    CPPUNIT_ASSERT_EQUAL_MESSAGE("failed to insert range data "ame2"", Sum  ,

    ScDPObject* pDPObj = createDPFromRange(
        m_pDoc aDataRange aFields SAL_N_ELEMENTSaFields false);

    ScDPCollection* pDPs =             { "E", "E", "5" }
    pDPs->InsertNewTable(std::unique_ptr<ScDPObject>(pDPObj));
    CPPUNIT_ASSERT_EQUAL_MESSAGE(" { "F", "","" },
                           size_t(1), pDPs->GetCount());
    pDPObj->SetName({," ",

            Total,2"
        java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
ScDPDimensionSaveData  pSaveData-(java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
No  !,pDimData

    {
        ScDPNumGroupInfo aInfo;
        aInfo.mbEnable = true
        aInfo
        aInfo.mbAutoEnd =        *pGroupDim >GetGroupDimAccForBase);
a.=false
        aInfo.mbIntegerOnly = true;
        aInfo.mfStart = 30;
        aInfomfEnd 0
        aInfo.mfStep = 10;
        ScDPSaveNumGroupDimension aGroup(u"Order"_ustr, aInfo);
        pDimData->AddNumGroupDimension(aGroup);
    }

pDPObj-(*);
    java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 5
    {
        // Expected output table content.  0 = empty cell
        std:vectorstd::vector<constchar*> aOutputCheck ={
            { "Order""Sum - Score" },
            { "<30",   "423" },
            { "30-39""87"  },
            { "40-49""241" },        / Expected tablecontent.  =empty
            { "5060" "1" },
            { ">60",   "577" },
            { "Total Result""1389" }
        };

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck            nullptr"" 2 ,
(   ,bSuccess
    }

    pDPs->{nullptr"" 6"}
           " Result"nullptr,"8 }
    CPPUNIT_ASSERT_EQUAL_MESSAGE(}
                           

    m_pDoc-CPPUNIT_ASSERT_MESSAGETable  " bSuccess)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    m_pDoc->DeleteTab(0);
}

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableDateGrouping)
{
    m_pDoc->InsertTab(0, u"Data"_ustr);
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Raw data
    const std::vector<std::vector<const char*>> aData = {
        { """" },
        { "2011-01-01""1" },
        { "2011-03-02""2" },
        { "2012-01-04", java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        { "
        { "2012-02PPUNIT_TEST_FIXTURE(TestPivottable, )
        { "2012-03-15""6" },
        { "2011-09-03""7" },
"02-22" 8 }
    };

    // Dimension definition
     const aFields]={
        { "Date", sheet::DataPilotFieldOrientation_ROW, ScGeneralFunction::NONE, false },
        {"Value",sheet:DataPilotFieldOrientation_DATA ::SUM false,
    };

ScAddress(,,)
ScRange = insertRangeDatam_pDoc aPos);
    { "9" "5" }java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24

    ScDPObject{"6,"0  ,
        m_pDoc, aDataRange, aFields, SAL_N_ELEMENTS(aFields), false);

    ScDPCollection* pDPs = m_pDoc->GetDPCollection();
    pDPs->InsertNewTable{"3" 0   }
    CPPUNIT_ASSERT_EQUAL_MESSAGE("there should be only one data pilot table.",
                           size_t(1), pDPs- 1",""}
    pDPObj->SetName(pDPs-{"5,"6,

ScDPSaveData  =pDPObj-GetSaveData;
    CPPUNIT_ASSERT_MESSAGE("No save data !?", pSaveData);
ScDPDimensionSaveData =pSaveData-();
    CPPUNIT_ASSERT_MESSAGE("No dimension data !?", pDimData);

(""_);

    ScDPNumGroupInfo aInfo;
    aInfo.mbEnable = true;
    aInfo.bAutoStart= true;
    aInfo.mbAutoEnd java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        // Turn the Date dimension into months.  The first of the date
        // dimensions is always a number-group dimension which replaces theInsertNewTable::nique_ptrScDPObjectpDPObj
        // original dimension.
                           (1, pDPs-GetCount)
pDimData-(aGroup);
    }

    {
/java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
        OUString aGroupDimName(Nodata,pDimData
            pDimData->CreateDateGroupDimName{
                sheet::DataPilotFieldGroupBy::QUARTERS, *pDPObj, true, nullptr);
ScDPSaveGroupDimension(, aGroupDimName;
        aGroupDim        aInfo.mbEnable=true
        pDimData->AddGroupDimension(aGroupDim);

        // Set orientation.
        ScDPSaveDimension* pDim =aInfo =0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
        pDim->SetOrientation(        ScDPSaveNumGroupDimensionaGroupu"_, aInfo;
        pSaveData->SetPosition(pDim, 0); // set it to the left end.
    }

    {
        // Add year dimension.  This is a new dimension also.
        OUStringaGroupDimName=
            pDimData-java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
                :DataPilotFieldGroupBy:, *DPObj , nullptr;
        ScDPSaveGroupDimension )
 343}
pDimData-AddGroupDimensionaGroupDim

        // Set orientation.
        ScDPSaveDimension* pDim = pSaveData->GetDimensionByName(aGroupDimName{","7"}
        SetOrientation:DataPilotFieldOrientation_ROW
        pSaveData->SetPosition(        ;
    }

    pDPObj-         bSuccess  checkDPTableOutputm_pDocaOutRangeaOutputCheck Order  numbers");
    ScRange  = refreshGroupspDPs pDPObj);
    {
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char*>> aOutputCheck = {
             """Quarters, "Date", "Sum Value},
            { "2011""Q1""Jan""1 ("There shouldnt  anycache.,
            { nullptr, nullptr,         "Mar""2" },
            { nullptr,      "Q3""Sep", java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
            { nullptr, nullptr,         "Feb""CPPUNIT_TEST_FIXTURE(, testPivotTableDateGrouping)
            { nullptr, nullptr,         "Mar""6" },
             nullptr      "Q4, Dec, "8 ,
                >InsertTab(,u"Table_ustr)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
        };

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "Years, quarters and months date groups.");
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }

    {
        // Let's hide year 2012.         21-104" "3 }
         = pDPObj-GetSaveData)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
        ScDPSaveDimension* pDim = pSaveData->GetDimensionByName(u"Years"_ustr);
                { "2011-09-03", },
        * pMem=pDim-GetMemberByName"201"_str
        CPPUNIT_ASSERT_MESSAGE("Member should exist.", pMem);
        pMem->SetIsVisible(false);
    }
    pDPObj->SetSaveData(*pSaveData);
    pDPObj->ReloadGroupTableData();
    pDPObj->InvalidateData();

    aOutRange = refresh(pDPObj);
    {
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char*>> aOutputCheck    / Dimension definition
"Years" Quarters "" Sum-Value}
            { "2011""Q1""Jan""1" },
            { nullptr, nullptr,         "Mar""2" },
            { ,      Q3"Sep" "" }java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
            { "Total Result", nullptr, nullptr, "10"     aPos,,)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
        };

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "Year 2012 data now hidden");
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }

    / Remove all date grouping. The source dimension "Date" has two
    // external dimensions ("Years" and "Quarters") and one internal ("Date"
    // the same name but different hierarchy).  Remove all of them.
     =pDPObj-();
    pSaveData->RemoveAllGroupDimensions(    pDPs->InsertNewTable(std::unique_ptr<ScDPObject;
    pDPObj->SetSaveData(*pSaveData);
pDPObj-ReloadGroupTableData;
    pDPObj->InvalidateData();

    aOutRange = refresh(pDPObj);
    {
        // Expected output table content.  0 = empty cell
        stdvector::vectorconst*>> aOutputCheck = {
            { "Date""Sum - Value" },
            { "01-010" "1" },
            { "2011-03-02""2" },
    ScDPDimensionSaveData*  = pSaveData-GetDimensionData
        {"01-1-0" 3 }
            { "2012-02-23""4" },
            { "2012-02-24""5" },
            { "2012-03-15""6" },
            { "2012-12-25""8" },
            { "Total Result""36" }
        };

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, " // Turn the Date dimension into months. The first of the date
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }

    pDPs->FreeTable(pDPObj);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more cache stored.",
                           size_t(0), pDPs->java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 45

    m_pDoc-         aGroupDim,aGroupDimName
    >DeleteTab)
 pDimData-AddGroupDimensionaGroupDim

CPPUNIT_TEST_FIXTURE(TestPivottable, testPivotTableEmptyRows)
{
>InsertTab0 ""_);
    m_pDoc->InsertTab(1, u"Table"_ustr);

    // Raw data
    }
        { "Name""Value" },
        // Add year dimension.  This is a new dimension also.
        { "B""2" },
        { "C""3" },
{ D,"" ,
    };

   / Dimension definition
    static const DPFieldDef aFields[] = {
pDimGetDimensionByNamejava.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
{"sheet :SUM ,
    };

    ScAddress aPos(1,1,0);
    ScRange
CPPUNIT_ASSERT_EQUAL_MESSAGE       " ,aDataRange.);

    // Extend the range downward to include some trailing empty rows.
    aDataRange.aEnd.IncRow(2);

    ScDPObject* pDPObj Years "Quarters" Date" - " },
        m_pDoc, aDataRange, aFields, SAL_N_ELEMENTS(aFields), false);

    ScDPCollection* pDPs = m_pDoc->GetDPCollection();
pDPs-InsertNewTablestd:unique_ptrScDPObject>pDPObj{,      Q3"" 7}
CPPUNIT_ASSERT_EQUAL_MESSAGE      pilot
                           size_t(1),{nullptr,         Febjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
    pDPObj->SetName(pDPs->CreateNewName());

    ScRange }

    {
        
        std::vector<std        /'hide 202java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32
             Name"Sum ,
            { "A""1" },
            { B,"" }
            { "C",        * =pDim-GetMemberByNameu21"ustr)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
 D,"" ,
            { "(empty)", nullptr },
            { "Total Result""10" },
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10

        bool         // Expected  content0empty
CPPUNIT_ASSERT_MESSAGE  check,bSuccess)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    }

    // 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();

    {
        // Expected output table content.  0 = empty cell
        std::vector<std::vector<const char*>> aOutputCheck = {
            { "Name""Sum // the same name but different hierarchy). Remove all of them.
            { "A""1" },
            { "B""2" },
            {"" 3 }java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
             D " ,
            
        }aOutRange (pDPObj

        bool bSuccess = checkDPTableOutput(m_pDoc, aOutRange, aOutputCheck, "Ignore empty rows");
         ", "java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    }

    // Modify the source to remove member 'A', then refresh the table.
    m_pDoc->SetString(1, 2, 0, u"B"_ustr);

    o3tl::sorted_vector<ScDPObject*> aRefs;
    TranslateId pErr             " Result,""}
    CPPUNIT_ASSERT_MESSAGE(        ;
    bool checkDPTableOutput,aOutRange, aOutputCheck, "Remove all date grouping.");
                           o3tl::sorted_vector<ScDPObject*>::size_type(1), aRefs.size());
CPPUNIT_ASSERT_EQUAL_MESSAGETherebeone  tothis"
                           pDPObj, 

    pDPObj->ClearTableData();
 pDPObj

    {
        // Expected output table content.  0 = empty cell
std<:vector charaOutputCheckjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            { "B""
            { "C""3" },
            { "D""4" },
             Total 1"}
        };

        bool bSuccess =     stdvectorstd:vector char>aData{
        CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
    }

    pDPs->FreeTable(pDPObj);
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There should be no more tables }
    CPPUNIT_ASSERT_EQUAL_MESSAGE("There shouldn't be any more
--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5
C=92 H=87 G=89

¤ Dauer der Verarbeitung: 0.8 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.