--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpststorage/tsrc/vimpststorage_ut/src/vimpststorage_testBlocks.cpp Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,1215 @@
+/*
+* Copyright (c) 2002 - 2007 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:
+:
+*
+*/
+
+
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <cntdb.h>
+#include <cntitem.h>
+//#include <cntmodel.h>
+#include <cntfldst.h>
+#include <cntfield.h>
+//#include <cvpbkcontactmanager.h>
+
+#include "vimpststorage_test.h"
+
+#include "cvimpststoragemanager.h"
+#include "cvimpststoragemanagerfactory.h"
+#include "mvimpststoragecontacts.h"
+#include "mvimpststorageitemmodel.h"
+#include "cvimpststoragecontact.h"
+#include "cvimpststoragecontactlist.h"
+#include "bamdesca.h"
+#include "cvimpststoragevpbkstorehandler.h"
+#include "CVIMPSTStorageViewId.h"
+#include "CVIMPSTStorageContactSorter.h"
+#include "MVIMPSTStorageContact.h"
+
+#include "s_MVPbkContactLinkstub.h"
+#include <CVPbkContactStoreUriArray.h>
+#include <CVPbkContactManager.h>
+#include "CVPbkStoreContactStub.h"
+#include "CVPbkContactOperationBaseStub.h"
+
+_LIT( KIMContactListId,"IMContacts" );
+//_LIT( KVPContactListId,"VPContacts" );
+_LIT( KStoreName, "TestStore.cdb" );
+_LIT( KServiceName, "TestService" ) ;
+_LIT( KDisplayname, "my contact list" );
+//_LIT( KVPDisplayname, "Voip list" );
+_LIT( KUserId, "id3@dummydomain.com" );
+const TUint32 serviceId(3);
+
+const TInt KNumberGranularity( 12 );
+
+const TInt ProcessInterval = 10000000; //10 seconds
+
+//extern
+extern TInt gGiveFieldCount;
+extern TBool gBestMatchingFieldType;
+
+extern CVPbkContactOperationBaseStub* gOperationStub;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Cvimpststorage_test::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void Cvimpststorage_test::Delete()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// Cvimpststorage_test::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt Cvimpststorage_test::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ //first of all create database.
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ // Copy this line for every implemented function.
+ // First string is the function name used in TestScripter script file.
+ // Second is the actual implementation member function.
+ ENTRY( "InitialiseLibraryTest", Cvimpststorage_test::InitialiseLibraryTestL ),
+ ENTRY( "InitialiseViewTest", Cvimpststorage_test::InitialiseViewTestL ),
+ ENTRY( "CVIMPSTStorageContactTestCase1L", Cvimpststorage_test::CVIMPSTStorageContactTestCase1L ),
+ ENTRY( "CVIMPSTStorageContactTestCase2L", Cvimpststorage_test::CVIMPSTStorageContactTestCase2L ),
+ ENTRY( "CVIMPSTStorageContactTestCase3L", Cvimpststorage_test::CVIMPSTStorageContactTestCase3L ),
+ ENTRY( "CVIMPSTStorageContactTestCase4L", Cvimpststorage_test::CVIMPSTStorageContactTestCase4L ),
+ ENTRY( "CVIMPSTStorageContactTestCase6L", Cvimpststorage_test::CVIMPSTStorageContactTestCase6L ),
+ ENTRY( "CVIMPSTStorageContactTestCase7L", Cvimpststorage_test::CVIMPSTStorageContactTestCase7L ),
+ ENTRY( "CVIMPSTStorageContactTestCase8L", Cvimpststorage_test::CVIMPSTStorageContactTestCase8L ),
+ ENTRY( "CVIMPSTStorageContactTestCase9L", Cvimpststorage_test::CVIMPSTStorageContactTestCase9L ),
+ ENTRY( "CVIMPSTStorageContactTestCase10L", Cvimpststorage_test::CVIMPSTStorageContactTestCase10L ),
+
+ ENTRY( "CVIMPSTStorageContactTestCase11L", Cvimpststorage_test::CVIMPSTStorageContactTestCase11L ),
+ ENTRY( "CVIMPSTStorageContactTestCase12L", Cvimpststorage_test::CVIMPSTStorageContactTestCase12L ),
+ ENTRY( "CVIMPSTStorageContactTestCase13L", Cvimpststorage_test::CVIMPSTStorageContactTestCase13L ),
+ ENTRY( "CVIMPSTStorageContactTestCase14L", Cvimpststorage_test::CVIMPSTStorageContactTestCase14L ),
+ ENTRY( "CVIMPSTStorageContactTestCase15L", Cvimpststorage_test::CVIMPSTStorageContactTestCase15L ),
+
+ ENTRY( "CVIMPSTStorageContactListTestCase16L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase16L ),
+ ENTRY( "CVIMPSTStorageContactListTestCase17L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase17L ),
+ ENTRY( "CVIMPSTStorageContactListTestCase18L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase18L ),
+ ENTRY( "CVIMPSTStorageContactListTestCase19L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase19L ),
+ ENTRY( "CVIMPSTStorageContactListTestCase20L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase20L ),
+ ENTRY( "CVIMPSTStorageContactListTestCase21L", Cvimpststorage_test::CVIMPSTStorageContactListTestCase21L ),
+
+ ENTRY( "CVIMPSTStorageXSPStoreHandlerTestCase01L", Cvimpststorage_test::CVIMPSTStorageXSPStoreHandlerTestCase01L ),
+
+
+
+
+
+
+ //ADD NEW ENTRY HERE
+ // [test cases entries] - Do not remove
+
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+/**
+ * Called when a contact is deleted.
+ * @param aId The ID of the deleted contact
+ * @param aFromPEC, ETrue, if event is coming from PEC
+ */
+ void Cvimpststorage_test::HandleContactDeleteL( const TDesC& /*aContactId*/ )
+ {
+ iObserverReceivedNotification = ETrue;
+ }
+
+
+/**
+ * Called when a contact is added.
+ * @param aList. List for contact that was added.
+ * @param aContact The contact which was added
+ * @param aFromPEC, ETrue, if event is coming from PEC
+ */
+ void Cvimpststorage_test::HandleAdditionL( MVIMPSTStorageContactList& /*aList*/, MVIMPSTStorageContact& /*aContact*/ )
+ {
+ iObserverReceivedNotification = ETrue;
+ }
+
+
+/**
+ * Called when a contact or list is about to change, or has been changed.
+ * @param aList List that is changed. Can be NULL if contact is changed.
+ * @param aContact Contact that is changed. Can be NULL if list is changed
+ * @param aEventType The type of event: EStorageEventPreChange before
+ * the change (contact still has the old information), or
+ * EStorageEventPostChange after the change took place
+ * (contact has new information)
+ */
+ void Cvimpststorage_test::HandleChangeL( MVIMPSTStorageContactList* /*aList*/, MVIMPSTStorageContact* /*aContact*/,
+ TVIMPSTEnums::TCAObserverEventType /*aEventType*/,
+ TBool /*aUserIdChanged*/ )
+ {
+ iObserverReceivedNotification = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// Cvimpststorage_test::InitialiseLibraryTestL
+// -----------------------------------------------------------------------------
+//
+
+TInt Cvimpststorage_test::InitialiseLibraryTestL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KState, "State" );
+ _LIT( KResult, "Initialisation successful" );
+/*
+ CVIMPSTStorageManagerFactory::InitialiseLibraryL();
+ CVIMPSTStorageManagerFactory::Release();
+*/
+ // Test case passed
+ TestModuleIf().Printf( 1, KState, KResult );
+
+ // Case was executed
+ return KErrNone;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// Cvimpststorage_test::InitialiseViewTestL
+// -----------------------------------------------------------------------------
+//
+TInt Cvimpststorage_test::InitialiseViewTestL( CStifItemParser& /*aItem*/ )
+ {
+ /*CVIMPSTStorageManagerFactory::InitialiseLibraryL();
+
+ CVIMPSTStorageManagerFactory::InitialiseViewL(serviceId,KStoreName, KServiceName);
+
+ CVIMPSTStorageManagerFactory::Release();
+ */
+ // Case was executed
+ return KErrNone;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase1L()
+ {
+
+
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ delete contact;
+ return KErrNone ;
+ }
+
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase2L()
+ {
+ //Ownership of contactLink is transferred to CVIMPSTStorageContact
+ //hence dont delete
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewL();
+ CVPbkContactManager* contactMgr = CVPbkContactManager::NewL(*uriArray);
+
+
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ contactMgr,
+ NULL);
+
+ if (contact)
+ {
+ if (contactLink == contact->ContactLink())
+ {
+ delete contact;
+ delete contactMgr;
+ delete uriArray;
+ return KErrNone ;
+ }
+ }
+
+ delete contactMgr;
+ delete uriArray;
+ delete contactLink;
+ return KErrGeneral;
+ }
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase3L()
+ {
+ //Ownership of contactLink is transferred to CVIMPSTStorageContact
+ //hence dont delete
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+
+
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ delete contact;
+ return KErrNone ;
+ }
+
+ delete contactLink;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase4L()
+ {
+ //TestCase for when there is no service field for a contact
+ gGiveFieldCount = 0;
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ CleanupStack::PushL( storedContact );
+
+ // Read all necessary data from contact and store to
+ // own type
+ CDesCArray* arrayForService = new (ELeave) CDesCArrayFlat(
+ KNumberGranularity );
+ CleanupStack::PushL( arrayForService );
+
+ TInt err = contact->GetServiceFieldsL(storedContact, *arrayForService);
+
+ contact->SetServiceFieldsL(*arrayForService);
+
+ RPointerArray<HBufC> serviceDetails = contact->ServiceDetails();
+
+ CleanupStack::PopAndDestroy(2); //storedContact, arrayForService
+
+ if ((err == KErrNotFound) && (0 == serviceDetails.Count()))
+ {
+ delete contact;
+ return KErrNone ;
+ }
+
+ }
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase6L()
+ {
+ //TestCase for when there are some service field for a contact
+ //but the BestMatchingFieldType() function returns NULL
+ //Our code should not crash as this returns a Ptr value
+ gGiveFieldCount = 4;
+ gBestMatchingFieldType = EFalse;
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ CleanupStack::PushL( storedContact );
+
+ // Read all necessary data from contact and store to
+ // own type
+ CDesCArray* arrayForService = new (ELeave) CDesCArrayFlat(
+ KNumberGranularity );
+ CleanupStack::PushL( arrayForService );
+
+ TInt err = contact->GetServiceFieldsL(storedContact, *arrayForService);
+ contact->SetServiceFieldsL(*arrayForService);
+
+ RPointerArray<HBufC> serviceDetails = contact->ServiceDetails();
+
+
+ if ((0 == arrayForService->MdcaCount()) && (arrayForService->MdcaCount() == serviceDetails.Count()))
+ {
+ delete contact;
+ CleanupStack::PopAndDestroy(2); //storedContact, arrayForService
+ return KErrNone ;
+ }
+
+ CleanupStack::PopAndDestroy(2); //storedContact, arrayForService
+ }
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase7L()
+ {
+ _LIT(KTestCaseUserId, "testUser");
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ contact->SetUserIdL(KTestCaseUserId());
+
+ if (0 == KTestCaseUserId().Compare(contact->UserId()))
+ {
+ delete contact;
+ return KErrNone;
+ }
+ }
+
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase8L()
+ {
+ _LIT(KTestCaseUserId, "testUser");
+
+ iObserverReceivedNotification = EFalse;
+
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ //Initial Presence
+ if (TVIMPSTEnums::EOffline != contact->OnlineStatus())
+ {
+ delete contact;
+ return KErrGeneral;
+ }
+
+ contact->SignalChanges();
+ //Set the presence
+ contact->SetOnlineStatus(TVIMPSTEnums::EOnline);
+ if (TVIMPSTEnums::EOnline != contact->OnlineStatus())
+ {
+ delete contact;
+ return KErrGeneral;
+ }
+ contact->SignalChanges();
+ contact->SetOnlineStatus(TVIMPSTEnums::EOnline);
+ if (TVIMPSTEnums::EOnline != contact->OnlineStatus())
+ {
+ delete contact;
+ return KErrGeneral;
+ }
+
+ contact->SignalChanges();
+ delete contact;
+
+ if (!iObserverReceivedNotification)
+ {
+ return KErrGeneral;
+ }
+
+ return KErrNone;
+ }
+
+ delete contact;
+ return KErrGeneral;
+ }
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase9L()
+ {
+ _LIT(KTestCaseStatusTestId, "status");
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ if (contact->StatusText().Length())
+ {
+ delete contact;
+ return KErrGeneral;
+ }
+
+ contact->SetStatusTextL(KTestCaseStatusTestId());
+
+ if (0 == KTestCaseStatusTestId().Compare(contact->StatusText()))
+ {
+ delete contact;
+ return KErrNone;
+ }
+ }
+
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase10L()
+ {
+ _LIT8(KTestCaseAvatarId, "avatar");
+ iObserverReceivedNotification = EFalse;
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+
+ if (contact)
+ {
+ if (!contact->AvatarContent().Length())
+ {
+
+ contact->SetAvatarIndex(3);
+
+ if (3 == contact->AvatarIndex())
+ {
+ contact->iAvatarContent = KTestCaseAvatarId().AllocL();
+ if (0 == KTestCaseAvatarId().Compare(contact->AvatarContent()))
+ {
+ contact->SignalAvatarChange();
+ if (iObserverReceivedNotification)
+ {
+ delete contact;
+ return KErrNone;
+ }
+ }
+ }
+ }
+ }
+
+ delete contact;
+ return KErrGeneral;
+ }
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase11L()
+ {
+ iObserverReceivedNotification = EFalse;
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ CleanupStack::PushL( storedContact );
+ CVPbkContactOperationBaseStub* operationBaseStub = NULL;
+ if (contact)
+ {
+ TRAPD(err,contact->VPbkSingleContactOperationComplete(*operationBaseStub, storedContact));
+
+ if ((KErrNone == err) && (storedContact==contact->VPbkStoreContact()))
+ {
+ CleanupStack::PopAndDestroy(); //storedContact
+ delete contact;
+ return KErrNone;
+ }
+ }
+ CleanupStack::PopAndDestroy(); //storedContact
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase12L()
+ {
+ iObserverReceivedNotification = EFalse;
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ NULL,
+ NULL,
+ NULL,
+ this);
+
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ CleanupStack::PushL( storedContact );
+
+ if (contact)
+ {
+ TRAPD(err,contact->DoHandleVPbkSingleContactOperationCompleteL(storedContact));
+
+ if (KErrNone == err)
+ {
+ CleanupStack::PopAndDestroy(); //storedContact
+ delete contact;
+ return KErrNone;
+ }
+ }
+
+ CleanupStack::PopAndDestroy(); //storedContact
+ delete contact;
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase13L()
+ {
+ iObserverReceivedNotification = EFalse;
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ NULL,
+ storedContact,
+ NULL,
+ this);
+ if (contact)
+ {
+ contact->Commit();
+
+ TContactOpResult opResult;
+ opResult.iOpCode = EContactCommit;
+ opResult.iStoreContact = storedContact;
+ opResult.iExtension = NULL;
+
+ contact->ContactOperationCompleted(opResult);
+
+ opResult.iOpCode = EContactLock;
+ contact->ContactOperationCompleted(opResult);
+ contact->ContactOperationFailed(
+ opResult.iOpCode, KErrArgument, EFalse );
+
+ contact->Commit(this, this);
+ contact->ContactOperationCompleted(opResult);
+ contact->ContactOperationFailed(
+ opResult.iOpCode, KErrArgument, EFalse );
+
+ }
+
+
+ delete contact;
+ return KErrNone;
+ }
+
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase14L()
+ {
+ iObserverReceivedNotification = EFalse;
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewL();
+ CVPbkContactManager* contactMgr = CVPbkContactManager::NewL(*uriArray);
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ contactLink,
+ storedContact,
+ contactMgr,
+ this);
+ if (contact)
+ {
+ contact->Commit();
+
+ TContactOpResult opResult;
+ opResult.iOpCode = EContactCommit;
+ opResult.iStoreContact = storedContact;
+ opResult.iExtension = NULL;
+
+ contact->ContactOperationCompleted(opResult);
+
+ opResult.iOpCode = EContactLock;
+ contact->ContactOperationCompleted(opResult);
+ contact->ContactOperationFailed(
+ opResult.iOpCode, KErrArgument, EFalse );
+
+ contact->Commit(this, this);
+ contact->ContactOperationCompleted(opResult);
+ contact->ContactOperationFailed(
+ opResult.iOpCode, KErrArgument, EFalse );
+
+ }
+ delete uriArray;
+ delete contactMgr;
+ delete contact;
+ return KErrNone;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactTestCase15L()
+ {
+
+ CVPbkStoreContactStub* storedContact = new (ELeave) CVPbkStoreContactStub();
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewL();
+ CVPbkContactManager* contactMgr = CVPbkContactManager::NewL(*uriArray);
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( this,
+ contactLink,
+ storedContact,
+ contactMgr,
+ this);
+
+ CVPbkContactOperationBaseStub* operationBaseStub = NULL;
+ if (contact)
+ {
+
+ contact->VPbkSingleContactOperationFailed(*operationBaseStub, KErrArgument);
+
+ contact->iContactOperationObserver = this;
+
+ contact->VPbkSingleContactOperationFailed(*gOperationStub, KErrArgument);
+
+ }
+ delete uriArray;
+ delete contactMgr;
+ delete contact;
+ return KErrNone;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase16L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KContactName, "contact");
+ _LIT(KContactName1, "contact1");
+ _LIT(KContactName2, "contact2");
+ _LIT(KContactName3, "contact3");
+ _LIT(KContactNotFound, "contactNotFound");
+
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ contact->SetUserIdL(KContactName());
+
+
+ CVIMPSTStorageContact* contact1 = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ contact1->SetUserIdL(KContactName1());
+
+ CVIMPSTStorageContact* contact2 = CVIMPSTStorageContact::NewL( NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ contact2->SetUserIdL(KContactName2());
+
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ sorter->SetSortAlgorithm(MVIMPSTStorageContact::ECompareAlphabetically);
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+ MVIMPSTStorageContact* cnt = NULL;
+ cnt = list->AddContactL(contact);
+ if (cnt)
+ {
+ //add same contact
+ cnt = list->AddContactL(contact) ;
+ if (cnt == contact)
+ {
+ cnt = list->AddContactL(contact1);
+ cnt = list->AddContactL(contact2);
+
+ //search for contacts based on Id
+ cnt = list->FindContact(KContactName());
+ MVIMPSTStorageContact* cnt1(list->FindContact(KContactName1()));
+ MVIMPSTStorageContact* cnt2(list->FindContact(KContactName2()));
+ MVIMPSTStorageContact* cnt3(list->FindContact(KContactNotFound()));
+
+ sorter->SetSortAlgorithm(MVIMPSTStorageContact::ECompareByPresence);
+
+ if ( (cnt == contact) &&
+ (cnt1 == contact1) &&
+ (cnt2 == contact2) &&
+ (NULL == cnt3) )
+ {
+ TInt err = list->RemoveContact(KContactNotFound());
+ TInt err1 = list->RemoveContact(KContactName2());
+ TInt err2 = list->RemoveContact(KContactName1());
+ TInt err3 = list->RemoveContact(KContactName());
+
+ if ( (KErrNotFound == err) &&
+ (KErrNone == err1) &&
+ (KErrNone == err2) &&
+ (KErrNone == err3)
+ )
+ {
+ delete list;
+ CleanupStack::PopAndDestroy(1);
+ return KErrNone;
+ }
+
+ }
+ }
+
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase17L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KContactName, "contact");
+ _LIT(KContactName1, "contact1");
+ _LIT(KContactName2, "contact2");
+ _LIT(KContactName3, "contact3");
+ _LIT(KContactNotFound, "contactNotFound");
+
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ NULL,
+ NULL);
+ contact->SetUserIdL(KContactName());
+
+ MVPbkContactLink* contactLink1 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact1 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink1,
+ NULL,
+ NULL,
+ NULL);
+ contact1->SetUserIdL(KContactName1());
+
+ MVPbkContactLink* contactLink2 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact2 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink2,
+ NULL,
+ NULL,
+ NULL);
+ contact2->SetUserIdL(KContactName2());
+
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ MVPbkContactLink* contactLinkNotFound = new (ELeave) CVPbkContactLinkStub();
+
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+ MVIMPSTStorageContact* cnt = NULL;
+ cnt = list->AddContactL(contact);
+ if (cnt)
+ {
+ //add same contact
+ cnt = list->AddContactL(contact) ;
+ if (cnt == contact)
+ {
+ cnt = list->AddContactL(contact1);
+ cnt = list->AddContactL(contact2);
+
+ //search for contacts based on Id
+ cnt = list->FindContact(*contactLink);
+ MVIMPSTStorageContact* cnt1(list->FindContact(*contactLink1));
+ MVIMPSTStorageContact* cnt2(list->FindContact(*contactLink2));
+ MVIMPSTStorageContact* cnt3(list->FindContact(*contactLinkNotFound));
+
+ if ( (cnt == contact) &&
+ (cnt1 == contact1) &&
+ (cnt2 == contact2) &&
+ (NULL == cnt3) )
+ {
+ TInt err = list->RemoveContact(*contactLinkNotFound);
+ TInt err1 = list->RemoveContact(*contactLink2);
+ TInt err2 = list->RemoveContact(*contactLink1);
+ TInt err3 = list->RemoveContact(*contactLink);
+
+ if ( (KErrNotFound == err) &&
+ (KErrNone == err1) &&
+ (KErrNone == err2) &&
+ (KErrNone == err3)
+ )
+ {
+ delete list;
+ CleanupStack::PopAndDestroy(1);
+ return KErrNone;
+ }
+
+ }
+ }
+
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase18L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KContactName, "contact");
+ _LIT(KContactName1, "contact1");
+ _LIT(KContactName2, "contact2");
+ _LIT(KContactName3, "contact3");
+ _LIT(KContactNotFound, "contactNotFound");
+
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ NULL,
+ NULL);
+
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ MVPbkContactLink* contactLinkNotFound = new (ELeave) CVPbkContactLinkStub();
+
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+ MVIMPSTStorageContact* cnt = NULL;
+ cnt = list->AddContactL(contact);
+ if (cnt)
+ {
+ //Pop the contact
+ cnt = list->PopContact(*contactLink) ;
+ if (cnt == contact)
+ {
+ MVIMPSTStorageContact* cnt3(list->PopContact(*contactLinkNotFound));
+
+ if ( (cnt == contact) &&
+ (NULL == cnt3) )
+ {
+ delete list;
+ delete contact;
+ CleanupStack::PopAndDestroy(1);
+ return KErrNone;
+ }
+ }
+
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase19L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KContactName, "contact");
+ _LIT(KContactName1, "contact1");
+ _LIT(KContactName2, "contact2");
+ _LIT(KContactName3, "contact3");
+ _LIT(KContactNotFound, "contactNotFound");
+
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ NULL,
+ NULL);
+ contact->SetUserIdL(KContactName());
+ contact->SetOnlineStatus(TVIMPSTEnums::EOnline);
+
+ MVPbkContactLink* contactLink1 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact1 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink1,
+ NULL,
+ NULL,
+ NULL);
+ contact1->SetUserIdL(KContactName1());
+ contact1->SetOnlineStatus(TVIMPSTEnums::EOffline);
+
+ MVPbkContactLink* contactLink2 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact2 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink2,
+ NULL,
+ NULL,
+ NULL);
+ contact2->SetUserIdL(KContactName2());
+ contact2->SetOnlineStatus(TVIMPSTEnums::EBusy);
+
+ MVPbkContactLink* contactLink3 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact3 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink3,
+ NULL,
+ NULL,
+ NULL);
+ contact3->SetUserIdL(KContactName3());
+ contact3->SetOnlineStatus(TVIMPSTEnums::EAway);
+
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ MVPbkContactLink* contactLinkNotFound = new (ELeave) CVPbkContactLinkStub();
+
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+
+ list->AddContactL(contact);
+ list->AddContactL(contact1);
+ list->AddContactL(contact2);
+ list->AddContactL(contact3);;
+
+ MVIMPSTStorageContact* test = &list->operator[](0);
+ if ( test && list->Count() == 4)
+ {
+ if (list->OnlineCount() == 3)
+ {
+ delete list;
+ CleanupStack::PopAndDestroy(1);
+ return KErrNone;
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase20L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KTestCase20ListId, "meco");
+ _LIT(KTestCase20ListName, "Meco display");
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+
+ if (0 == KContactListId().Compare(list->ListId()))
+ {
+ if (0 == KContactListName().Compare(list->DisplayName()))
+ {
+
+ list->SetDisplayNameL(KTestCase20ListName());
+ list->SetListIdL(KTestCase20ListId());
+
+ if ( (0 == KTestCase20ListId().Compare(list->ListId())) &&
+ (0 == KTestCase20ListName().Compare(list->DisplayName())) )
+ {
+ CleanupStack::PopAndDestroy(1);
+ delete list;
+ return KErrNone;
+ }
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageContactListTestCase21L()
+ {
+ _LIT(KContactListId, "listid");
+ _LIT(KContactListName, "listName");
+ _LIT(KContactName, "contact");
+ _LIT(KContactName1, "contact1");
+ _LIT(KContactName2, "contact2");
+ _LIT(KContactName3, "contact3");
+ _LIT(KContactNotFound, "contactNotFound");
+
+ MVPbkContactLink* contactLink = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact = CVIMPSTStorageContact::NewL( NULL,
+ contactLink,
+ NULL,
+ NULL,
+ NULL);
+ contact->SetUserIdL(KContactName());
+ contact->SetOnlineStatus(TVIMPSTEnums::EOnline);
+
+ MVPbkContactLink* contactLink1 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact1 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink1,
+ NULL,
+ NULL,
+ NULL);
+ contact1->SetUserIdL(KContactName1());
+ contact1->SetOnlineStatus(TVIMPSTEnums::EOffline);
+
+ MVPbkContactLink* contactLink2 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact2 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink2,
+ NULL,
+ NULL,
+ NULL);
+ contact2->SetUserIdL(KContactName2());
+ contact2->SetOnlineStatus(TVIMPSTEnums::EBusy);
+
+ MVPbkContactLink* contactLink3 = new (ELeave) CVPbkContactLinkStub();
+ CVIMPSTStorageContact* contact3 = CVIMPSTStorageContact::NewL( NULL,
+ contactLink3,
+ NULL,
+ NULL,
+ NULL);
+ contact3->SetUserIdL(KContactName3());
+ contact3->SetOnlineStatus(TVIMPSTEnums::EAway);
+
+ CVIMPSTStorageContactSorter* sorter = CVIMPSTStorageContactSorter::NewL() ;
+ CleanupStack::PushL(sorter);
+
+ MVPbkContactLink* contactLinkNotFound = new (ELeave) CVPbkContactLinkStub();
+
+ CVIMPSTStorageContactList* list = CVIMPSTStorageContactList::NewL( *this,
+ *sorter,
+ KContactListId(),
+ KContactListName() );
+ if (list)
+ {
+
+ list->AddContactL(contact);
+ list->AddContactL(contact1);
+ list->AddContactL(contact2);
+
+ list->Sort();
+ contact1->SetOnlineStatus(TVIMPSTEnums::EOnline);
+ list->ResortContact(contact1);
+ contact1->SetOnlineStatus(TVIMPSTEnums::EAway);
+ list->ResortUnKnownContact(contact1);
+
+ MVIMPSTStorageContact* cnt = &(list->OnlineContact( 1 ));
+ TInt index = list->FindIndexOfContact( cnt, TVIMPSTEnums::EFilterAll );
+
+ if (index == 1)
+ {
+ delete list;
+ CleanupStack::PopAndDestroy(1);
+ return KErrNone;
+ }
+ }
+ delete list;
+ CleanupStack::PopAndDestroy(1);
+ return KErrGeneral;
+ }
+
+
+
+TInt Cvimpststorage_test::CVIMPSTStorageXSPStoreHandlerTestCase01L()
+ {
+ _LIT(KStoreName, "MecoStore");
+ _LIT(KServiceName, "MecoService");
+
+ CVIMPSTStorageViewId* store = CVIMPSTStorageViewId::NewL(1,
+ KStoreName(),
+ KServiceName());
+ //Create XSP Store Handler
+ CVIMPSTStorageVPbkStoreHandler* contactStoreHandler =
+ CVIMPSTStorageVPbkStoreHandler::NewL(
+ KStoreName(), KIMContactListId, 1, KServiceName(),
+ *store);
+
+ if (contactStoreHandler)
+ {
+
+ delete contactStoreHandler;
+ delete store;
+ return KErrNone;
+ }
+ delete contactStoreHandler;
+ delete store;
+ return KErrGeneral;
+ }
+
+
+
+
+/**
+ * Called when all the contacts are fetched
+ */
+void Cvimpststorage_test::HandleContactAddedL(RPointerArray<HBufC>& /*aServiceDetails*/)
+ {
+
+ }
+
+/**
+ * Called when all the contacts are fetched
+ */
+void Cvimpststorage_test::HandleContactDeletedL(RPointerArray<HBufC>& /*aServiceDetails*/)
+ {
+
+ }
+
+
+
+void Cvimpststorage_test::HandleContactOperationCompleteL( MVIMPSTStorageContact& /*aContact*/, TInt /*aError = KErrNone*/ )
+ {
+
+ }
+
+/**
+ * From MVPbkContactObserver
+ */
+void Cvimpststorage_test::ContactOperationCompleted(TContactOpResult /*aResult*/)
+ {
+
+ }
+
+/**
+ * From MVPbkContactObserver
+ */
+void Cvimpststorage_test::ContactOperationFailed
+ (TContactOp /*aOpCode*/, TInt /*aErrorCode*/, TBool /*aErrorNotified*/)
+ {
+
+ }
+
+
+
+// [End of File] - Do not remove
+
+
+