contentstorage/castorage/tsrc/t_castorage/src/castoragetesttouch.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* 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:
*
*/
/*
 * castoragetesttouch.cpp
 *
 *  Created on: 2009-08-17
 *      Author: michal.wojcik
 */

#include "castoragetest.h"
#include "castoragefactory.h"
#include "castorage.h"
#include "cainnerentry.h"
#include "casqlquery.h"
#include "casqlitestorage.h"
#include "castoragetestsqlcommands.h"
#include "casqlcommands.h"

// ============================ MEMBER FUNCTIONS ===============================

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void CCAStorageTest::testTouch()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // check database before touch
         CCaSqlQuery *query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchBeforeTouch(0);
         query->ExecuteL(countLaunchBeforeTouch);
         CleanupStack::PopAndDestroy(query);

         // Id 14 - Clock app
         mStorage->TouchL(14, ETrue);

         // check database after touch
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchAfterTouch(0);
         query->ExecuteL(countLaunchAfterTouch);
         CleanupStack::PopAndDestroy(query);

         // flag should be set to EUsed on 1 Entry
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetUsedFlagCountFromEntryTable);
         query->PrepareL();
         query->BindValuesForLaunchL(0,0);
         TInt countEntriesWithUsedFlag(0);
         query->ExecuteL(countEntriesWithUsedFlag);
         CleanupStack::PopAndDestroy(query);

    if (((countLaunchAfterTouch - countLaunchBeforeTouch) == 1) && (countEntriesWithUsedFlag == 1)) {
    err = KErrNone;
} else {
    err = KErrGeneral;
}
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testTouch2Times()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // check database before touch
         CCaSqlQuery *query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchBeforeTouch(0);
         query->ExecuteL(countLaunchBeforeTouch);
         CleanupStack::PopAndDestroy(query);

         // Id 14 - Clock app
         mStorage->TouchL(14, ETrue);//removable application
         User::After(1000000); // 1 sec
         mStorage->TouchL(14, ETrue);

         // check database after touch
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchAfterTouch(0);
         query->ExecuteL(countLaunchAfterTouch);
         CleanupStack::PopAndDestroy(query);

         // flag should be set to EUsed on 1 Entry
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetUsedFlagCountFromEntryTable);
         query->PrepareL();
         query->BindValuesForLaunchL(0,0);
         TInt countEntriesWithUsedFlag(0);
         query->ExecuteL(countEntriesWithUsedFlag);
         CleanupStack::PopAndDestroy(query);

    if (((countLaunchAfterTouch - countLaunchBeforeTouch) == 2) && (countEntriesWithUsedFlag == 1)) {
    err = KErrNone;
} else {
    err = KErrGeneral;
}
    );

    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testTouch5Entries()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;

    TRAP(err,
         // check database before touch
         CCaSqlQuery *query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchBeforeTouch(0);
         query->ExecuteL(countLaunchBeforeTouch);
         CleanupStack::PopAndDestroy(query);
        //all apps are not removeable
         mStorage->TouchL(9, EFalse);  // calendar
         mStorage->TouchL(10, EFalse); // calculator
         mStorage->TouchL(16, EFalse); // music player
         mStorage->TouchL(20, EFalse); // photos
         mStorage->TouchL(21, EFalse); // video center

         // check database after touch
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchAfterTouch(0);
         query->ExecuteL(countLaunchAfterTouch);
         CleanupStack::PopAndDestroy(query);

         // flag should be set to EUsed on 5 Entries
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetUsedFlagCountFromEntryTable);
         query->PrepareL();
         query->BindValuesForLaunchL(0,0);
         TInt countEntriesWithUsedFlag(0);
         query->ExecuteL(countEntriesWithUsedFlag);
         CleanupStack::PopAndDestroy(query);

    if (((countLaunchAfterTouch - countLaunchBeforeTouch) == 5) && (countEntriesWithUsedFlag == 0)) {
    err = KErrNone;
} else {
    err = KErrGeneral;
}
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testRemoveOldFromLaunch()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // prepare time older than 30 days
         TTime presentTime;
         presentTime.UniversalTime();
         TTime outOfDateTime = presentTime - (TTimeIntervalDays(30 + 5));

         // prepare item with launch time older than 30 days
         CCaSqlQuery *query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLInsertToLaunch);
         query->PrepareL();
         // change launch time for calculator app to older than 30 days
         query->BindValuesForLaunchL(10, outOfDateTime.Int64());
         query->ExecuteL();
         CleanupStack::PopAndDestroy(query);
         // prepare 2 items with launch time newer than 30 days
         mStorage->TouchL(20, EFalse); // photos
         mStorage->TouchL(21, EFalse); // video center

         // check database before remove old launch
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchBeforeRemove(0);
         query->ExecuteL(countLaunchBeforeRemove);
         CleanupStack::PopAndDestroy(query);

         // remove launches older than 30 days
         ((CCaSqLiteStorage *)mStorage)->RemoveOldEntriesFromLaunchTableL(30);

         // check database after remove old launches
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchAfterRemove(0);
         query->ExecuteL(countLaunchAfterRemove);
         CleanupStack::PopAndDestroy(query);

    if ((countLaunchBeforeRemove - countLaunchAfterRemove) == 1) {
    err = KErrNone;
} else {
    err = KErrGeneral;
}
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}

void CCAStorageTest::testRemoveOldWhen2DifferentLaunchTimes()
{
    TInt err(KErrGeneral);

    __UHEAP_MARK;
    TRAP(err,
         // prepare time older than 30 days
         TTime presentTime;
         presentTime.UniversalTime();
         TTime outOfDateTime = presentTime - (TTimeIntervalDays(30 + 5));

         // prepare item with launch time older than 30 days
         CCaSqlQuery *query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLInsertToLaunch);
         query->PrepareL();
         // change launch time for calculator app to older than 30 days
         query->BindValuesForLaunchL(10, outOfDateTime.Int64());
         query->ExecuteL();
         CleanupStack::PopAndDestroy(query);
         // prepare 2 items with launch time newer than 30 days
         mStorage->TouchL(10, EFalse); // launch the same app again - time newer than 30 days

         // check database before remove old launch
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchBeforeRemove(0);
         query->ExecuteL(countLaunchBeforeRemove);
         CleanupStack::PopAndDestroy(query);

         // remove launches older than 30 days
         ((CCaSqLiteStorage *)mStorage)->RemoveOldEntriesFromLaunchTableL(30);

         // check database after remove old launches
         query = CCaSqlQuery::NewLC(((CCaSqLiteStorage *)mStorage)->iSqlDb);
         query->SetQueryL(KSQLGetIdCountFromLaunchTable);
         query->PrepareL();
         TInt countLaunchAfterRemove(0);
         query->ExecuteL(countLaunchAfterRemove);
         CleanupStack::PopAndDestroy(query);

    if ((countLaunchBeforeRemove - countLaunchAfterRemove) == 1) {
    err = KErrNone;
} else {
    err = KErrGeneral;
}
    );
    __UHEAP_MARKEND;

    QCOMPARE(err, KErrNone);
}