diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/test/src/t_iapprefs.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/test/src/t_iapprefs.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,190 @@ +// Copyright (c) 1998-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: +// Name of test harness: T_IAPPREFS +// Component: IMCM +// Owner: KG +// Brief description of test harness: +// Tests IAP Preferences +// Detailed description of test harness: +// As above +// Input files required to run test harness: +// None +// Intermediate files produced while running test harness: +// None +// Output files produced by running test harness: +// :\msglogs\T_IAPPREFS...LOG.txt +// Description of how to build test harness: +// cd \msg\imcm\ +// bldmake bldfiles +// abld test build +// Description of how to run test harness: +// WINS running instructions: +// 1. \epoc32\release\wins\\T_IAPPREFS.exe can be used at the command prompt +// or executable can be run from Windows Explorer. +// All other platform running instructions: +// 1. Copy \epoc32\release\\\T_IAPPREFS.exe onto the other platform +// 2. Run T_IAPPREFS.exe on the other platform +// +// + +#include "emailtestutils.h" +#include "t_iapprefs.h" +#include +#include + +RTest test(_L("T_IAPP")); +LOCAL_D CTrapCleanup* theCleanup; +LOCAL_D CEmailTestUtils* testUtils; + + +CT_iapprefs* CT_iapprefs::NewLC() + { + CT_iapprefs* self = new (ELeave) CT_iapprefs(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CT_iapprefs::ConstructL() + { + iPref = CImIAPPreferences::NewLC(); + CleanupStack::Pop(); + } + +CT_iapprefs::CT_iapprefs() + { + } + +CT_iapprefs::~CT_iapprefs() + { + delete iPref; + } + +void CT_iapprefs::HeapTestL() + { +#ifdef _DEBUG // stop compiler complaining that i isn't used in release builds. + TInt i = 0; +#endif + TInt err = KErrNone; + do + { + __UHEAP_FAILNEXT(i++); + + TRAP(err, TestAllButStoreL()); + + __UHEAP_RESET; + } while (err == KErrNoMemory); + + User::LeaveIfError(err); + + } + +void CT_iapprefs::TestL() + { + TestAllButStoreL(); + } + +void CT_iapprefs::TestAllButStoreL() + { + TestVersionL(); + TestNoIAPsL(); + TestAddIAPL(); + TestRemoveIAPL(); + } + +void CT_iapprefs::TestVersionL() + { + TestL(iPref->Version()==2); // MLM 13/08/01. Changed to version 2 for Messaging 6.2. + } + + +void CT_iapprefs::TestNoIAPsL() + { + PopulateChoicesL(0); + TestL(iPref->NumberOfIAPs() == 0); + PopulateChoicesL(2); + TestL(iPref->NumberOfIAPs() == 2); + } + +void CT_iapprefs::TestAddIAPL() + { + PopulateChoicesL(4); + for(TUint i = 0; i < 4; ++i) + TestL(iPref->IAPPreference(i).iIAP==i); + } + +void CT_iapprefs::TestRemoveIAPL() + { + PopulateChoicesL(4); + iPref->RemoveIAPL(0); + TestL(iPref->NumberOfIAPs()==3); + TUint i; + for(i = 0; i < 3; ++i) + TestL(iPref->IAPPreference(i).iIAP==i+1); + + iPref->RemoveIAPL(2); // the last one + TestL(iPref->NumberOfIAPs()==2); + for(i = 0; i < 2; ++i) + TestL(iPref->IAPPreference(i).iIAP==i+1); + } + +void CT_iapprefs::PopulateChoicesL(TInt n) + { + for(;iPref->NumberOfIAPs() > 0; iPref->RemoveIAPL(0)) {}; + + TestL(iPref->NumberOfIAPs()==0); + for(TInt j = 0; j < n; ++j) + { + TImIAPChoice choice = {j,(TCommDbDialogPref)1}; + iPref->AddIAPL(choice, j); + } + } + +void CT_iapprefs::TestL(TBool aCondition) + { + if(!aCondition) + User::Leave(KErrTestFailed); + } + +void doMainL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CleanupStack::PushL(scheduler); + CActiveScheduler::Install( scheduler ); + testUtils = CEmailTestUtils::NewLC(test); + CT_iapprefs* iapp = CT_iapprefs::NewLC(); + + testUtils->TestStart(1); + iapp->TestL(); + testUtils->TestFinish(1); + testUtils->TestStart(2); + iapp->HeapTestL(); + testUtils->TestFinish(2); + testUtils->TestHarnessCompleted(); + CleanupStack::PopAndDestroy(3);//iapp, scheduler, testUtils + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Start(_L("T_IAPP Test CImIAPPreferences class\n")); + theCleanup=CTrapCleanup::New(); + TRAPD(ret,doMainL()); + test(ret==KErrNone); + delete theCleanup; + test.End(); + test.Close(); + __UHEAP_MARKEND; + return (KErrNone); + }