--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/test/Integration/TestBookmarksSuite/TestBookmarksBaseStep.cpp Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,451 @@
+// Copyright (c) 2005-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:
+// Contains implementation of CTestBookmarksBaseStep class
+//
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+
+// User Include
+#include "TestBookmarksBaseStep.h"
+
+/**
+Constructor. Sets the test step name and initialises the TestServer
+reference.
+@internalTechnology
+@test
+*/
+CTestBookmarksBaseStep::CTestBookmarksBaseStep(CTestBookmarksServer& aTestServer) : iTestServer(aTestServer)
+ {
+ //Call base class method to set human readable name for test step
+ SetTestStepName(KTestBookmarksBaseStep);
+ }
+
+/**
+Destructor. Closes the database handle
+@internalTechnology
+@test
+*/
+CTestBookmarksBaseStep::~CTestBookmarksBaseStep()
+ {
+ iBkDb.Close();
+ }
+
+/**
+Base class virtual. Opens connection with the bookmark database.
+@internalTechnology
+@test
+@param None
+@return EPass or EFail indicating the result of opening the DB.
+*/
+TVerdict CTestBookmarksBaseStep::doTestStepPreambleL()
+ {
+ TSecurityInfo info;
+ info.Set(RProcess());
+ INFO_PRINTF2(_L("\n\nSecure id = %U\n\n"), info.iSecureId);
+
+ TInt error = KErrNone;
+ TPtrC dbMode;
+ // Get DB mode from ini
+ if(!GetStringFromConfig(ConfigSection(), KIniDbMode, dbMode))
+ {
+ TRAP(error, iBkDb.OpenL());
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Opening DB in %S mode"), &dbMode);
+ TRAP(error, iBkDb.OpenL(GetDbOpenMode(dbMode)));
+ }
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("Error occured while opening DB : %D"), error);
+ SetTestStepError(error);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("DB opened successfully"));
+ }
+ return TestStepResult();
+ } // doTestPreambleL
+
+/**
+Base class pure virtual. Just returns the test step result.
+@internalTechnology
+@test
+@param None
+@return EPass or EFail indicating the result of the test step.
+*/
+TVerdict CTestBookmarksBaseStep::doTestStepL()
+ {
+ return TestStepResult();
+ } // doTestStepL
+
+/**
+Commits the Bookmarks Database
+@internalTechnology
+@test
+@param None
+@return None
+*/
+void CTestBookmarksBaseStep::CommitDb()
+ {
+ TRAPD(err, iBkDb.CommitL());
+ if(err == KErrNone)
+ {
+ INFO_PRINTF1(_L("Commit succeeded"));
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Error occured during commit: %D"), err);
+ SetTestStepError(err);
+ }
+ }
+
+/**
+Gets the array index of the id for the item with the particular title
+@internalTechnology
+@test
+@param Title of the Bookmark item
+@return The index of the item in the array of ids
+*/
+TInt CTestBookmarksBaseStep::GetArrayIndex(const TPtrC& aTitle)
+ {
+ for(TInt index = 0; index < iTestServer.iTitles.Count(); ++index)
+ {
+ if (iTestServer.iTitles[index]->Des().Compare(aTitle) == KErrNone)
+ {
+ return index;
+ }
+ }
+ return KErrGeneral;
+ }
+
+/**
+Opens a folder or root based on title passed
+@internalTechnology
+@test
+@param Title of the parent folder
+@param Reference to a non-open folder handle.
+@return Error code that indicates the result of the operation.
+*/
+TInt CTestBookmarksBaseStep::GetParentFolder(const TPtrC& aParent, RBkFolder& aParentFolder)
+ {
+ TInt error = KErrNone;
+ if(aParent == KRoot)
+ {
+ TRAP(error, aParentFolder = iBkDb.OpenRootL());
+ }
+ else
+ {
+ TRAP(error, aParentFolder = iBkDb.OpenFolderL(aParent));
+ }
+ return error;
+ }
+
+/**
+Opens the node which has a particular title
+@internalTechnology
+@test
+@param Title of the item to be opened
+@param Type of item : bookmark/folder
+@param Type of item
+@param Reference to a non-open node handle.
+@return Error code that indicates the result of the operation.
+*/
+TInt CTestBookmarksBaseStep::GetBkNode(const TPtrC& aTitle, \
+ const TPtrC& aTypeOfItem,\
+ RBkNode& aBkNode)
+ {
+ TInt error = KErrNone;
+ if(aTitle == KRoot)
+ {
+ TRAP(error, aBkNode = iBkDb.OpenRootL());
+ }
+ else if(aTypeOfItem == KFolder)
+ {
+ TRAP(error, aBkNode = iBkDb.OpenFolderL(aTitle));
+ }
+ else if(aTypeOfItem == KBookmark)
+ {
+ // If type is bookmark, try to find it in the array
+ TInt index = GetArrayIndex(aTitle);
+ if(index < KErrNone)
+ {
+ // Not found in array, do a search in the tree
+ INFO_PRINTF1(_L("Item not found in Titles array"));
+ Bookmark::TItemId id = Bookmark::KNullItemID;
+ RBkFolder root;
+ TRAP(error, root = iBkDb.OpenRootL());
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("Error occured while opening root: %D"), error);
+ }
+ else
+ {
+ TRAP(error, id = GetItemFromTreeL(aTitle, root));
+ root.Close();
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("Error occured in IsItemInFolderL: %D"), error);
+ }
+ else if(id == Bookmark::KNullItemID)
+ {
+ INFO_PRINTF1(_L("Item not found in folder tree"));
+ error = KErrNotFound;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Trying to open item with id %U"), id);
+ TRAP(error, aBkNode = iBkDb.OpenBookmarkL(id));
+ }
+ }
+ }
+ else
+ {
+ TRAP(error, aBkNode = iBkDb.OpenBookmarkL(iTestServer.iIds[index]));
+ }
+ }
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("Error occured in GetBkNode : %D"), error);
+ }
+ return error;
+ }
+
+/**
+Resolves DB open mode from the string passed
+@internalTechnology
+@test
+@param Descriptor indicating mode to open the DB
+@return Bookmark::TVisibility enumeration based on the open-mode
+*/
+Bookmark::TVisibility CTestBookmarksBaseStep::GetDbOpenMode(const TPtrC& aMode)
+ {
+ if(aMode.Compare(KDbModePublic) == KErrNone)
+ {
+ return Bookmark::EVisibilityPublic;
+ }
+ else if(aMode.Compare(KDbModePrivate) == KErrNone)
+ {
+ return Bookmark::EVisibilityPrivate;
+ }
+ else if(aMode.Compare(KDbModeAll) == KErrNone)
+ {
+ return Bookmark::EVisibilityAll;
+ }
+ else if(aMode.Compare(KDbModeManager) == KErrNone)
+ {
+ return Bookmark::EVisibilityManager;
+ }
+ else
+ {
+ return Bookmark::EVisibilityDefault;
+ }
+ }
+
+/**
+A recursive routine to find an item with a particular title from the tree
+@internalTechnology
+@test
+@param Title of the item to be found
+@param Handle to the main folder from which search is to begin.
+@return Id of the bookmark item if found. Null Id if not.
+*/
+Bookmark::TItemId CTestBookmarksBaseStep::GetItemFromTreeL(const TDesC& aName, RBkFolder aFolder)
+ {
+ RBkNode item;
+ Bookmark::TItemId id = Bookmark::KNullItemID;
+ // Loop through all children
+ TInt index = aFolder.Count() - 1;
+ for (;index >= 0; --index)
+ {
+ item = aFolder.OpenItemL(index);
+ CleanupClosePushL(item);
+ const TDesC& title = item.Title();
+
+ INFO_PRINTF3(_L("Parent-title = %S, id = %U"), &(aFolder.Title()), aFolder.Id());
+ INFO_PRINTF4(_L("index = %D Title = %S, id = %U"), index, &title, item.Id());
+
+ if (title.Compare(aName) == 0)
+ {// Title matched
+ id = item.Id();
+ }
+ else if (item.Type() == Bookmark::ETypeFolder)
+ {// Title did not match, but item is a folder, so recurse into it
+ RBkFolder folder = item.OpenFolderL();
+ CleanupClosePushL(folder);
+ // recurse
+ id = GetItemFromTreeL(aName, folder);
+ CleanupStack::PopAndDestroy(&folder);
+ }
+ CleanupStack::PopAndDestroy(&item);
+ if (id != Bookmark::KNullItemID)
+ {// If valid id, then we are done
+ break;
+ }
+ }
+ return id;
+ }
+
+/**
+Compare two TUints and return verdict
+@internalTechnology
+@test
+@param TUint32 Value 1 to be compared
+@param TUint32 Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareTUints(const TUint32& aTUint32Val1, const TUint32& aTUint32Val2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %U"), aTUint32Val1);
+ INFO_PRINTF2(_L("Value 2 = %U"), aTUint32Val2);
+ return (aTUint32Val1 == aTUint32Val2) ? EPass : EFail;
+ }
+
+/**
+Compare two TBools and return verdict
+@internalTechnology
+@test
+@param TBool Value 1 to be compared
+@param TBool Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareBools(const TBool& aBoolVal1, const TBool& aBoolVal2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %S"), &(aBoolVal1 ? KTrue() : KFalse()));
+ INFO_PRINTF2(_L("Value 2 = %S"), &(aBoolVal2 ? KTrue() : KFalse()));
+ return (!aBoolVal1 == !aBoolVal2) ? EPass : EFail;
+ }
+
+/**
+Compare two strings and return verdict
+@internalTechnology
+@test
+@param Descriptor Value 1 to be compared
+@param Descriptor Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareStrings(const TPtrC& aStrVal1, const TPtrC& aStrVal2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %S"), &aStrVal1);
+ INFO_PRINTF2(_L("Value 2 = %S"), &aStrVal2);
+ return (aStrVal1.Compare(aStrVal2) == KErrNone) ? EPass : EFail;
+ }
+
+/**
+Compare two TInts and return verdict
+@internalTechnology
+@test
+@param TInt Value 1 to be compared
+@param TInt Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareTInts(const TInt& aTIntVal1, const TInt& aTIntVal2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %D"), aTIntVal1);
+ INFO_PRINTF2(_L("Value 2 = %D"), aTIntVal2);
+ return (aTIntVal1 == aTIntVal2) ? EPass : EFail;
+ }
+
+/**
+Compare two TReals and return verdict
+@internalTechnology
+@test
+@param TReal Value 1 to be compared
+@param TReal Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareTReals(const TReal& aTRealVal1, const TReal& aTRealVal2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %g"), aTRealVal1);
+ INFO_PRINTF2(_L("Value 2 = %g"), aTRealVal2);
+ return (aTRealVal1 == aTRealVal2) ? EPass : EFail;
+ }
+
+/**
+Compare two TTimes and return verdict
+@internalTechnology
+@test
+@param TTime Value 1 to be compared
+@param TTime Value 2 to be compared
+@return EPass or EFail based on comparison
+*/
+TVerdict CTestBookmarksBaseStep::CompareTTimes(const TTime& aTTimeVal1, const TTime& aTTimeVal2)
+ {
+ INFO_PRINTF2(_L("Value 1 = %g"), aTTimeVal1.Int64());
+ INFO_PRINTF2(_L("Value 2 = %g"), aTTimeVal2.Int64());
+ return (aTTimeVal1 == aTTimeVal2) ? EPass : EFail;
+ }
+
+/**
+Checks error and commits the DB if error is KErrNone
+@internalTechnology
+@test
+@param Error value to be checked
+@return None
+*/
+void CTestBookmarksBaseStep::CheckErrorAndCommit(const TInt& aError)
+ {
+ // Examine the result
+ if(TestStepResult() == EPass)
+ {
+ if(aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("The operation failed with error: %D"), aError);
+ SetTestStepError(aError);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("The operation was successful."));
+ CommitDb();
+ }
+ }
+ }
+
+/**
+Checks error and if error is KErrNone, checks and sets the verdict
+@internalTechnology
+@test
+@param Error value to be checked
+@param Verdict as a result of some operation
+@return None
+*/
+void CTestBookmarksBaseStep::CheckErrorAndVerdict(const TInt& aError, const TVerdict& aVerdict)
+ {
+ if(TestStepResult() == EPass)
+ {
+ if(aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("The operation failed with error: %D"), aError);
+ SetTestStepError(aError);
+ }
+ else
+ {
+ if(aVerdict == EPass)
+ {
+ INFO_PRINTF1(_L("The returned and the expected values matched."));
+ }
+ else
+ {
+ INFO_PRINTF1(_L("The returned and the expected values did not match."));
+ SetTestStepResult(aVerdict);
+ }
+ }
+ }
+ }
+
+