--- /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);
+}