/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#ifndef CASTORAGETEST_H
#define CASTORAGETEST_H
// INCLUDES
#include <e32svr.h>
#include <e32math.h>
#include <f32file.h>
#include <QtTest/QtTest>
#include <QString>
#include "cainnerquery.h"
class CCaStorage;
class CCaInnerEntry;
class CCAStorageTest : public QObject
{
Q_OBJECT
private slots:
/**
* Test methods are listed below.
*/
//tests for add command
void testAdd();
//tests for add command without icon
void testAddEmptyIcon();
//tests for add command with icon
void testAddWithIcon();
//tests for add command with existing icon
void testAddWithExistingIcon();
//tests for add command with existing icon where only filename specified
void testAddWithExistingIconOnlyFileName();
//tests for add command with partly matching icon
void testAddWithPartlyMatchingIcon();
//tests for add command with partly matching icon when not all icon params where set
void testAddWithPartlyMatchingIconNotAllParams();
//tests for add command with not complete icon
void testAddWithNotCompleteIcon();
//tests for add command to update icon
void testAddUpdateIcon();
//tests for add command to update icon with the same one
void testAddUpdateIconOnlyFewParams();
//tests for add command to update icon
void testAddUpdateWithEmptyIcon();
//tests for add command to update icon
void testAddUpdateWithEmptyIconAdvanced();
//tests for add command to update icon, to an already existing icon
void testAddUpdateWithExistingIcon();
//tests for add command - add attributes
void testAddAttributes();
//tests for add command - update attributes
void testUpdateAttributes();
//tests for add command - remove attributes
void testDeleteAttributes();
//tests for remove command
void testRemoveOneEntryWithIcon();
void testRemoveOneEntryWhenIconIsUseByOtherEntry();
void testRemoveTwoEntriesWithSameIcon();
void testRemoveOneEntryWithoutIcon();
void testRemove5Entries();
void testRemoveEntriesWithIdOutOFBound();
void testTouch();
void testTouch2Times();
void testTouch5Entries();
void testRemoveOldFromLaunch();
void testRemoveOldWhen2DifferentLaunchTimes();
//tests getentries by id.
void testGetEntriesById();
//tests getentries by group id.
void testGetEntriesByGroupId();
//tests getentries by group id.
void testGetEntriesByTypeName();
//tests getentries sorted by name.
void testGetEntriesSortByName();
//tests getentries sorted by created timestamp.
void testGetEntriesSortByCreatedTimestamp();
//tests getentries sorted by most used timestamp.
void testGetEntriesSortByMostUsedTimestamp();
//tests getentries sorted by last used timestamp.
void testGetEntriesSortByLastUsedTimestamp();
//tests getentries sorted by default.
void testGetEntriesSortByDefault();
//tests getentries by flags.
void testGetEntriesByFlags();
//tests getentries by flags off.
void testGetEntriesByFlagsOff();
//tests getentries by flags on.
void testGetEntriesByFlagsOn();
//tests getentries by flags on.
void testGetEntriesByRole();
//tests getentries by flags.
void testGetEntriesByUid();
//tests getentries by attributes.
void testGetEntriesByAttributes();
//tests getentries by attributes.
void testGetEntriesByAttributes2();
//tests getentries by child Id.
void testGetEntriesByChildId();
//tests organize remove.
void testOrganizeRemove();
//tests organize append.
void testOrganizeAppend();
//tests organize prepend.
void testOrganizePrepend();
//tests organize insert new entry into group.
void testOrganizeInsertNewIntoGroup();
//tests organize get entries' ids.
void testGetEntriesIds();
//tests organize bad parameters case.
void testOrganizeBadParams();
void testGetNewEntryWithAttributes();
void testGetNewEntryWithAttributesByUid();
void testGetEntriesWhenLimitSetTo();
//tests custom sort
void testCustomSort();
//tests get parent ids
void testGetParentIds();
void testGetParentIdsInLoop();
//tests properties
void testPropertyGetDbVersion();
void testPropertyGetLanguage();
void testLoadDBFromROM();
//tests localization
void testRemoveFromLocalizationAfterNameChange();
void testGetLocalizations();
void testLocalizeEntry();
void testAddLocalizationEntry();
void testUpdateLocalizationEntry();
void testSaveRestoreDatabase();
//unused
//void testBadDBVersion();
void init(); // called before each test method
void cleanup(); // called after each test method
void initTestCase(); // called once before all test methods
void cleanupTestCase(); // caled once after all test methods
/**
* Utility methods are listed below.
*/
// Test that two data arrays have opposite order.
private:
TInt locEntriesCount();
protected:
/**
* Utils methods are listed below.
*/
TInt verifyOppositeOrder(RPointerArray<CCaInnerEntry>& aArray1,
RPointerArray<CCaInnerEntry>& aArray2);
TInt testSortingBySortOrder(CCaInnerQuery::TSortAttribute sortAttr1,
CCaInnerQuery::TSortAttribute sortAttr2);
TInt testSortingBySortOrder(CCaInnerQuery *aInnerQuery1,
CCaInnerQuery *aInnerQuery2);
void RestoreDatabase();
void CopyFile(const TDesC &aSorcePath, const TDesC &aDestinationPath);
QString descToQString(const TDesC &descriptor);
private:
CCaStorage *mStorage;
};
#endif