contentstorage/castorage/tsrc/t_castorage/src/castoragetesttouch.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentstorage/castorage/tsrc/t_castorage/src/castoragetesttouch.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,284 @@
+/*
+* 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);
+}