email/pop3andsmtpmtm/clientmtms/test/src/t_iapprefs.cpp
changeset 0 72b543305e3a
--- /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:
+// <DRIVE>:\msglogs\T_IAPPREFS.<PLATFORM>.<VARIANT>.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\<VARIANT>\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\<PLATFORM>\<VARIANT>\T_IAPPREFS.exe onto the other platform
+// 2. Run T_IAPPREFS.exe on the other platform
+// 
+//
+
+#include "emailtestutils.h"
+#include "t_iapprefs.h"
+#include <e32test.h>
+#include <msvids.h>
+
+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);
+	}