diff -r d4f567ce2e7c -r 5b6f26637ad3 phonebookengines_old/contactsmodel/tsrc/t_iccStartup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines_old/contactsmodel/tsrc/t_iccStartup.cpp Tue Aug 31 15:05:21 2010 +0300 @@ -0,0 +1,127 @@ +// Copyright (c) 2006-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: +// This test harness simulates aspects of the phbksync test plugin behaviour which +// starts up the phbksync server if it is not running. The phbksync server configures itself +// and needs to access the contacts DB. Accessing the contacts DB from within the contacts +// server can cause deadlocks. The contacts client will load the test plugin and try to access +// the contacts DB on first use only, this will avoid the problem of the server being deadlocked. +// **This test only works with Contacts the test plugin and not the original phonebooksync plugin.** +// winscw - DELETE phbksyncplugin.dll from %epocroot%/epoc32/release/winscw/udeb or similarly named directory +// hardware - delete the line \"ECOM_PLUGIN(phbksyncplugin.dll,1020428C.rsc)\" from phbksync.iby +// +// + +#include +#include "T_UTILS.H" +#include "./TestSyncPlugIn/cnttestsynchroniser.h" + +_LIT(KICCStartupTest, "ICC Test plugin startup test"); +_LIT(KPhoneGroupId, "PhoneGroupId test"); +_LIT(KICCTemplateId, "ICCTemplateId test"); +_LIT(KIccStartupDB, "c:IccStartupDB"); + +RTest test(KICCStartupTest); +CCntTest* CntTestPtr; +CContactSyncChecker* syncChecker; + +void DoPhoneGroupIdTest() + { + /* + get contacts database and get the contacts phone group id. + This should load the test plugin, which should make a call back + into the contacts DB + */ + CntTestPtr->CreateDatabaseL(); + CntTestPtr->OpenDatabaseL(); + + + CContactDatabase& Db = *CntTestPtr->Db(); + + Db.PhonebookGroupIdL(); + + test (syncChecker->PluginLoadedCountL() == 2); //one for the client & one for server + + CntTestPtr->CloseDatabase(); + CntTestPtr->DeleteDatabaseL(); //close & delete database at end of test + } + +void DoICCTemplateIdTest() + { + /* + get contacts database and get the contacts ICCTemplate id. + This should load the test plugin, which should make a call back + into the contacts DB + */ + CntTestPtr->CreateDatabaseL(); + CntTestPtr->OpenDatabaseL(); + + + CContactDatabase& Db = *CntTestPtr->Db(); + + Db.ICCTemplateIdL(); + + test (syncChecker->PluginLoadedCountL() == 2); //one for the client & one for server + + CntTestPtr->CloseDatabase(); + CntTestPtr->DeleteDatabaseL(); //close & delete database at end of test + + } + +/** + +@SYMTestCaseID PIM-T-ICCSTARTUP-0001 + +*/ + +void DoTestsL() + { + test.Start(_L("@SYMTESTCaseID:PIM-T-ICCSTARTUP-0001 ICC Test plugin startup test")); + + syncChecker = new (ELeave) CContactSyncChecker; + syncChecker->ResetEverythingL(); //set the counters to zero + + test.Next(KPhoneGroupId); + + DoPhoneGroupIdTest(); + + + syncChecker->ResetEverythingL(); //set the counters to zero + test.Next(KICCTemplateId); + + DoICCTemplateIdTest(); + + + delete syncChecker; + syncChecker = NULL; + + } + + +/** Standard E32Main method */ + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + + CntTestPtr=new(ELeave) CCntTest; + + CntTestPtr->ConstructL(test,KIccStartupDB); //KIccStartupDB defined in cnttestsynchroniser.h + + TRAPD(err,DoTestsL()); + + CntTestPtr->EndTestLib(err); // is responsible for deleting the memory for itself + + __UHEAP_MARKEND; + return KErrNone; + }