email/pop3andsmtpmtm/clientmtms/test/src/T_MIUT04.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/clientmtms/test/src/T_MIUT04.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,652 @@
+// 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_MIUT04
+// Component: IMCM
+// Owner: KP
+// Brief description of test harness:
+// Tests storing/retrieving data from TMsvEmailEntry - most of the 
+// functionality is tested - some new functions may not be tested!
+// Detailed description of test harness:
+// As above.
+// Input files required to run test harness:
+// None
+// Intermediate files produced while running test harness:
+// <DRIVE>:\msgtest\T_MIUT04\T_IMCM.log
+// Output files produced by running test harness:
+// <DRIVE>:\msglogs\T_MIUT04.<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:
+// The following instructions are the same for all platforms:
+// 1. Build T_DB test harness from COMMDB component:
+// cd \commdb\group
+// bldmake bldfiles
+// abld test build t_db
+// 2. Build the test utilities:
+// cd \msg\testutils\group\
+// bldmake bldfiles
+// abld build
+// WINS running instructions:
+// 1. \epoc32\release\wins\<VARIANT>\T_MIUT04.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_MIUT04.exe onto the other platform
+// 2. Copy \epoc32\release\<PLATFORM>\<VARIANT>\MSVTESTUTILS.DLL into 
+// <DRIVE>:\system\libs on the other platform
+// 3. Copy \epoc32\release\<PLATFORM>\<VARIANT>\EMAILTESTUTILS.DLL into 
+// <DRIVE>:\system\libs on the other platform
+// 4. Run T_MIUT04.exe on the other platform
+// 
+//
+
+#include "emailtestutils.h"
+#include "MIUTHDR.H"    // CImHeader
+#include <miutlog.h>
+#include <imapset.h>
+#include <msvids.h>
+
+// local variables etc //
+
+RTest test(_L("MIUT04 - Test TMsvEmailEntry class"));
+LOCAL_D CTrapCleanup* theCleanup;
+LOCAL_D CImLog* log;
+LOCAL_D CEmailTestUtils* testUtils;
+
+_LIT8(KNoDisconnectedOperations, "NoDisconnectedOperations");
+_LIT8(KDisconnectedCreateOperation, "DisconnectedCreateOperation");
+_LIT8(KDisconnectedDeleteOperation, "DisconnectedDeleteOperation");
+_LIT8(KDisconnectedChangeOperation, "DisconnectedChangeOperation");
+_LIT8(KDisconnectedCopyToOperation, "DisconnectedCopyToOperation");
+_LIT8(KDisconnectedCopyFromOperation, "DisconnectedCopyFromOperation");
+_LIT8(KDisconnectedCopyWithinServiceOperation, "DisconnectedCopyWithinServiceOp");
+_LIT8(KDisconnectedMoveToOperation, "DisconnectedMoveToOperation");
+_LIT8(KDisconnectedMoveFromOperation, "DisconnectedMoveFromOperation");
+_LIT8(KDisconnectedMoveWithinServiceOperation, "DisconnectedMoveWithinServiceOp");
+_LIT8(KDisconnectedSpecialOperation, "DisconnectedSpecialOperation");
+_LIT8(KDisconnectedUnknownOperation, "DisconnectedUnknownOperation");
+_LIT8(KDisconnectedMultipleOperation, "DisconnectedMultipleOperation");
+
+//
+
+LOCAL_C void ResultOfTest(TBool aResult,TInt aTestNo)
+	{
+	if (aResult)
+		{
+		test.Printf(_L("Passed test %d\n"),aTestNo);
+		}
+	else
+		{
+		test.Printf(_L("Failed test %d\n"),aTestNo);
+		}
+	}
+
+/*LOCAL_C TBool CompareBooleans(TBool aBoolean1, TBool aBoolean2, TDesC8 aTestDescription)
+	{
+	_LIT8(KErrorReason, "\t\tSettings not set correctly for %S");
+	TBuf8<80> buf;
+	TBool result = (aBoolean1 == aBoolean2);
+	if (!result)
+		{
+		buf.AppendFormat(KErrorReason, &aTestDescription);
+		log->AppendError(buf ,-1);
+		}
+	return result;
+	}
+
+LOCAL_C TBool CompareDescriptors(TDesC16& aDesC1, TDesC16& aDesC2, TDesC8 aTestDescription)
+	{
+	_LIT8(KErrorReason, "\t\tSettings not set correctly for %S");
+	TBuf8<80> buf;
+	TBool result = (aDesC1 == aDesC2);
+	if (!result)
+		{
+		buf.AppendFormat(KErrorReason, &aTestDescription);
+		log->AppendError(buf ,-1);
+		}
+	return result;
+	}
+
+LOCAL_C TBool CompareDescriptors(TDesC8& aDesC1, TDesC8& aDesC2, TDesC8 aTestDescription)
+	{
+	_LIT8(KErrorReason, "\t\tSettings not set correctly for %S");
+	TBuf8<80> buf;
+	TBool result = (aDesC1 == aDesC2);
+	if (!result)
+		{
+		buf.AppendFormat(KErrorReason, &aTestDescription);
+		log->AppendError(buf ,-1);
+		}
+	return result;
+	}
+*/
+
+LOCAL_C TBool CompareDisconnectedOptions(TImDisconnectedOperationType type1, TImDisconnectedOperationType type2, const TDesC8* aTestDescription)
+	{
+	_LIT8(KErrorReason, "\t\tDisconnected Options not set correctly for %S");
+	TBuf8<80> buf;
+	TBool result = (type1 == type2);
+	if (!result)
+		{
+		buf.AppendFormat(KErrorReason, &aTestDescription);
+		log->AppendError(buf ,-1);
+		}
+	return result;
+	}
+
+//
+
+LOCAL_C TBool TMsvEmailEntrySelectionL(TInt aTestNo)
+	{
+	log->AppendComment(_L8("\tEmail Entry Selection Test"));
+	TMsvEntry* genericEntry = new (ELeave) TMsvEntry;
+	genericEntry->iType = KUidMsvMessageEntry;
+	genericEntry->iMtm = KUidMsgTypeIMAP4;
+	genericEntry->iServiceId = 0x1087643;
+	genericEntry->SetPriority(EMsvHighPriority);
+	genericEntry->SetComplete(ETrue);
+	genericEntry->SetVisible(ETrue);
+
+	TBool result=ETrue;
+
+	// test that iMtmDatax member variables have been reset
+	TMsvEmailEntry* newEmailEntry = new (ELeave) TMsvEmailEntry();
+	result &= !(newEmailEntry->MtmData1() && newEmailEntry->MtmData2() && newEmailEntry->MtmData3());
+	if (!result)
+		log->AppendError(_L8("\t\tTMsvEmailEntry Constructor hasn't reset iMtmData members"),-1);
+
+	delete newEmailEntry;
+
+	// test copy constructor...
+	TMsvEmailEntry* EmailEntry = new (ELeave) TMsvEmailEntry(*genericEntry);
+
+
+	EmailEntry->SetEncrypted(ETrue);
+	TBool result1=(EmailEntry->Encrypted()!=EFalse);
+	EmailEntry->SetEncrypted(EFalse);
+	result1&=(EmailEntry->Encrypted()==EFalse);
+	if (!result1)
+		log->AppendError(_L8("\t\tSetEncrypted() not setting correct values"),-1);
+	result&=result1;
+
+	EmailEntry->SetSigned(ETrue);
+	TBool result2=(EmailEntry->Signed()!=EFalse);
+	EmailEntry->SetSigned(EFalse);
+	result2&=(EmailEntry->Signed()==EFalse);
+	if (!result2)
+		log->AppendError(_L8("\t\tSetSigned() not setting correct values"),-1);
+	result&=result2;
+
+	EmailEntry->SetReceipt(ETrue);
+	TBool result3=(EmailEntry->Receipt()!=EFalse);
+	EmailEntry->SetReceipt(EFalse);
+	result3&=(EmailEntry->Receipt()==EFalse);
+	if (!result3)
+		log->AppendError(_L8("\t\tSetReceipt() not setting correct values"),-1);
+	result&=result3;
+
+	
+	// check MHTML flag
+	EmailEntry->SetMHTMLEmail(ETrue);
+	TBool resultp=(EmailEntry->MHTMLEmail()!=EFalse);
+	EmailEntry->SetMHTMLEmail(EFalse);
+	resultp&=(EmailEntry->MHTMLEmail()==EFalse);
+	if (!resultp)
+		log->AppendError(_L8("\t\tSetMHTMLEmail() not setting correct values"),-1);
+	result&=resultp;
+
+	EmailEntry->SetOrphan(ETrue);
+	TBool result4=(EmailEntry->Orphan()!=EFalse);
+	EmailEntry->SetOrphan(EFalse);
+	result4&=(EmailEntry->Orphan()==EFalse);
+	if (!result4)
+		log->AppendError(_L8("\t\tSetOrphan() not setting correct values"),-1);
+	result&=result4;
+
+	EmailEntry->SetVCard(ETrue);
+	TBool result5=(EmailEntry->VCard()!=EFalse);
+	EmailEntry->SetVCard(EFalse);
+	result5&=(EmailEntry->VCard()==EFalse);
+	if (!result5)
+		log->AppendError(_L8("\t\tSetVCard() not setting correct values"),-1);
+	result&=result5;
+
+	EmailEntry->SetVCalendar(ETrue);
+	TBool result6=(EmailEntry->VCalendar()!=EFalse);
+	EmailEntry->SetVCalendar(EFalse);
+	result6&=(EmailEntry->VCalendar()==EFalse);
+	if (!result6)
+		log->AppendError(_L8("\t\tSetVCalendar() not setting correct values"),-1);
+	result&=result6;
+
+	EmailEntry->SetSubscribed(ETrue);
+	TBool result7=(EmailEntry->Subscribed()!=EFalse);
+	EmailEntry->SetSubscribed(EFalse);
+	result7&=(EmailEntry->Subscribed()==EFalse);
+	if (!result7)
+		log->AppendError(_L8("\t\tSetSubscribed() not setting correct values"),-1);
+	result&=result7;
+
+	EmailEntry->SetUnreadIMAP4Flag(ETrue);
+	TBool result8=(EmailEntry->UnreadIMAP4Flag()!=EFalse);
+	EmailEntry->SetUnreadIMAP4Flag(EFalse);
+	result8&=(EmailEntry->UnreadIMAP4Flag()==EFalse);
+	if (!result8)
+		log->AppendError(_L8("\t\tSetUnreadIMAP4Flag() not setting correct values"),-1);
+	result&=result8;
+
+	EmailEntry->SetSeenIMAP4Flag(ETrue);
+	TBool result9=(EmailEntry->SeenIMAP4Flag()!=EFalse);
+	EmailEntry->SetSeenIMAP4Flag(EFalse);
+	result9&=(EmailEntry->SeenIMAP4Flag()==EFalse);
+	if (!result9)
+		log->AppendError(_L8("\t\tSetSeenIMAP4Flag() not setting correct values"),-1);
+	result&=result9;
+
+	EmailEntry->SetAnsweredIMAP4Flag(ETrue);
+	TBool result10=(EmailEntry->AnsweredIMAP4Flag()!=EFalse);
+	EmailEntry->SetAnsweredIMAP4Flag(EFalse);
+	result10&=(EmailEntry->AnsweredIMAP4Flag()==EFalse);
+	if (!result10)
+		log->AppendError(_L8("\t\tSetAnsweredIMAP4Flag() not setting correct values"),-1);
+	result&=result10;
+
+	EmailEntry->SetFlaggedIMAP4Flag(ETrue);
+	TBool result11=(EmailEntry->FlaggedIMAP4Flag()!=EFalse);
+	EmailEntry->SetFlaggedIMAP4Flag(EFalse);
+	result11&=(EmailEntry->FlaggedIMAP4Flag()==EFalse);
+	if (!result11)
+		log->AppendError(_L8("\t\tSetFlaggedIMAP4Flag() not setting correct values"),-1);
+	result&=result11;
+
+	EmailEntry->SetDeletedIMAP4Flag(ETrue);
+	TBool result12=(EmailEntry->DeletedIMAP4Flag()!=EFalse);
+	EmailEntry->SetDeletedIMAP4Flag(EFalse);
+	result12&=(EmailEntry->DeletedIMAP4Flag()==EFalse);
+	if (!result12)
+		log->AppendError(_L8("\t\tSetDeletedIMAP4Flag() not setting correct values"),-1);
+	result&=result12;
+
+	EmailEntry->SetDraftIMAP4Flag(ETrue);
+	TBool result13=(EmailEntry->DraftIMAP4Flag()!=EFalse);
+	EmailEntry->SetDraftIMAP4Flag(EFalse);
+	result13&=(EmailEntry->DraftIMAP4Flag()==EFalse);
+	if (!result13)
+		log->AppendError(_L8("\t\tSetDraftIMAP4Flag() not setting correct values"),-1);
+	result&=result13;
+
+	EmailEntry->SetRecentIMAP4Flag(ETrue);
+	TBool result14=(EmailEntry->RecentIMAP4Flag()!=EFalse);
+	EmailEntry->SetRecentIMAP4Flag(EFalse);
+	result14&=(EmailEntry->RecentIMAP4Flag()==EFalse);
+	if (!result14)
+		log->AppendError(_L8("\t\tSetRecentIMAP4Flag() not setting correct values"),-1);
+	result&=result14;
+
+	EmailEntry->SetValidUID(ETrue);
+	TBool result15=(EmailEntry->ValidUID()!=EFalse);
+	EmailEntry->SetValidUID(EFalse);
+	result15&=(EmailEntry->ValidUID()==EFalse);
+	if (!result15)
+		log->AppendError(_L8("\t\tSetValidUID() not setting correct values"),-1);
+	result&=result15;
+
+	EmailEntry->SetMailbox(ETrue);
+	TBool result16=(EmailEntry->Mailbox()!=EFalse);
+	EmailEntry->SetMailbox(EFalse);
+	result16&=(EmailEntry->Mailbox()==EFalse);
+	if (!result16)
+		log->AppendError(_L8("\t\tSetMailbox() not setting correct values"),-1);
+	result&=result16;
+
+	EmailEntry->SetLocalSubscription(ETrue);
+	TBool result17=(EmailEntry->LocalSubscription()!=EFalse);
+	EmailEntry->SetLocalSubscription(EFalse);
+	result17&=(EmailEntry->LocalSubscription()==EFalse);
+	if (!result17)
+		log->AppendError(_L8("\t\tSetLocalSubscription() not setting correct values"),-1);
+	result&=result17;
+
+	EmailEntry->SetIMAP4Flags(ETrue,EFalse,EFalse,EFalse,EFalse,EFalse,EFalse);
+	TBool result18=(EmailEntry->UnreadIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,ETrue,EFalse,EFalse,EFalse,EFalse,EFalse);
+	result18&=(EmailEntry->SeenIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,EFalse,ETrue,EFalse,EFalse,EFalse,EFalse);
+	result18&=(EmailEntry->AnsweredIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,EFalse,EFalse,ETrue,EFalse,EFalse,EFalse);
+	result18&=(EmailEntry->FlaggedIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,EFalse,EFalse,EFalse,ETrue,EFalse,EFalse);
+	result18&=(EmailEntry->DeletedIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,EFalse,EFalse,EFalse,EFalse,ETrue,EFalse);
+	result18&=(EmailEntry->DraftIMAP4Flag()!=EFalse);
+	EmailEntry->SetIMAP4Flags(EFalse,EFalse,EFalse,EFalse,EFalse,EFalse,ETrue);
+	result18&=(EmailEntry->RecentIMAP4Flag()!=EFalse);
+	if (!result18)
+		log->AppendError(_L8("\t\tSetIMAP4Flags() not setting correct values"),-1);
+	result&=result18;
+
+	// check folder Set/Get functions
+	EmailEntry->SetMessageFolderType(EFolderTypeRelated);
+	TBool result19=(EmailEntry->MessageFolderType()==EFolderTypeRelated);
+	if (!result19)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeRelated) not setting correct values"),-1);
+	result&=result19;
+
+	EmailEntry->SetMessageFolderType(EFolderTypeAlternative);
+	TBool result20=(EmailEntry->MessageFolderType()==EFolderTypeAlternative);
+	if (!result20)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeAlternative) not setting correct values"),-1);
+	result&=result20;
+
+	EmailEntry->SetMessageFolderType(EFolderTypeMixed);
+	TBool result21=(EmailEntry->MessageFolderType()==EFolderTypeMixed);
+	if (!result21)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeMixed) not setting correct values"),-1);
+	result&=result21;
+	
+	EmailEntry->SetMessageFolderType(EFolderTypeParallel);
+	TBool result22=(EmailEntry->MessageFolderType()==EFolderTypeParallel);
+	if (!result22)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeParallel) not setting correct values"),-1);
+	result&=result22;
+	
+	EmailEntry->SetMessageFolderType(EFolderTypeDigest);
+	TBool result23=(EmailEntry->MessageFolderType()==EFolderTypeDigest);
+	if (!result23)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeDigest) not setting correct values"),-1);
+	result&=result23;
+
+	EmailEntry->SetMessageFolderType(EFolderTypePartial);
+	TBool result24=(EmailEntry->MessageFolderType()==EFolderTypePartial);
+	if (!result24)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypePartial) not setting correct values"),-1);
+	result&=result24;
+
+	EmailEntry->SetMessageFolderType(EFolderTypeExternal);
+	TBool result25=(EmailEntry->MessageFolderType()==EFolderTypeExternal);
+	if (!result25)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeExternal) not setting correct values"),-1);
+	result&=result25;
+
+	EmailEntry->SetMessageFolderType(EFolderTypeUnknown);
+	TBool result26=(EmailEntry->MessageFolderType()==EFolderTypeUnknown);
+	if (!result26)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeUnknown) not setting correct values"),-1);
+	result&=result26;
+
+	EmailEntry->SetMessageFolderType(EFolderTypeDirectory);
+	TBool result27=(EmailEntry->MessageFolderType()==EFolderTypeDirectory);
+	if (!result27)
+		log->AppendError(_L8("\t\tSetMessageFolderType(EFolderTypeDirectory) not setting correct values"),-1);
+	result&=result27;
+
+	TBool result28 = ETrue;
+	// Huge test for all combinations of flag settings using the Get/Set inlines...
+	for (TInt a=0;a<2;++a)
+		{
+		for (TInt b=0;b<2;++b)
+			{
+			for(TInt c=0;c<2;++c)
+				{
+				for (TInt d=0 ; d<2 ;++d)
+					{
+					for (TInt e=0;e<2 ;++e)
+						{
+						for (TInt f=0; f<2 ; ++f)
+							{
+							for (TInt g=0; g<2 ; ++g)
+								{
+								TBool ia=a==1;
+								TBool ib=a==1;
+								TBool ic=c==1;
+								TBool id=d==1;
+								TBool ie=e==1;
+								TBool iff=f==1;
+								TBool ig=g==1;
+								EmailEntry->SetIMAP4Flags (ia,ib,ic,id,ie,iff,ig);
+								TBool ra,rb,rc,rd,re,rf,rg;
+								EmailEntry->GetIMAP4Flags (ra,rb,rc,rd,re,rf,rg);
+								result28 &= (ia==(ra>0)) && ((rb>0)==ib) && (ic==(rc>0)) && (id==(rd>0)) && (ie==(re>0)) && (iff==(rf>0)) && ((rg>0)==ig);
+								}	// g
+							}	//f 
+						}	// e
+					}	// d
+				}	// c
+			}	// b
+		}	// a
+	if (!result28)
+		log->AppendError(_L8("\t\tError in test for all combinations of flag settings using Get/Set inlines"),-1);
+	result&=result28;
+
+	const TUint32 KMyUID=8723640;
+
+	TUint32 myUID=KMyUID;
+	EmailEntry->SetUID(myUID);
+	myUID=99;
+	TBool result29=(EmailEntry->UID()==KMyUID);
+
+	EmailEntry->SetIMAP4Flags(ETrue,EFalse,EFalse,ETrue,EFalse,ETrue,EFalse);
+	TInt32 myInt = EmailEntry->MtmData1();
+	delete genericEntry;
+	TMsvEntry msvEntry=*EmailEntry;
+	genericEntry=&msvEntry;
+	result29&=(genericEntry->MtmData1()==myInt);
+
+	msvEntry.SetMtmData2(KMyUID);
+	TMsvEmailEntry msvEmailEntry1(msvEntry);
+	TMsvEmailEntry msvEmailEntry2(msvEmailEntry1);
+
+	result29 &= (msvEmailEntry2.UID()==KMyUID);	// test whether the copy constructors work ok...
+	if (!result29)
+		log->AppendError(_L8("\t\tCopy constructors do not work"),-1);
+	result&=result29;
+
+	TMsvEmailEntry msvEmailEntry3=msvEmailEntry1;	// test assignment operator
+	TBool result30=(msvEmailEntry3.UID()==KMyUID);
+	if (!result30)
+		log->AppendError(_L8("\t\tTest Assignment Operator does not work"),-1);
+	result&=result30;
+
+	//test equality operator
+	TBool result31=msvEmailEntry2==msvEmailEntry3;
+	if (!result31)
+		log->AppendError(_L8("\t\tTest Equality Operator does not work"),-1);
+	result&=result31;
+
+	TMsvEntry a2=msvEntry;
+
+	// assignment TMsvEmailEntry->TMsvEntry
+	a2 = msvEmailEntry1;
+
+	TBool result32=(TUint32(a2.MtmData2())==KMyUID);
+	result&=result32;
+	
+	// check ICalendar flag
+	EmailEntry->SetICalendar(ETrue);
+	TBool result33=(EmailEntry->ICalendar()!=EFalse);
+	EmailEntry->SetICalendar(EFalse);
+	result33&=(EmailEntry->ICalendar()==EFalse);
+	if (!result33)
+		log->AppendError(_L8("\t\tSetICalendar() not setting correct values"),-1);
+	result&=result33;
+
+	delete EmailEntry;
+
+	ResultOfTest(result, aTestNo);
+	return result;
+	}
+
+LOCAL_C TBool DisconnectedOperationTests(TInt aTestNo)
+	{
+	log->AppendComment(_L8("\tDisconnected Operation Tests"));
+
+	TMsvEntry* genericEntry = new (ELeave) TMsvEntry;
+	genericEntry->iType = KUidMsvMessageEntry;
+	genericEntry->iMtm = KUidMsgTypePOP3;
+	genericEntry->iServiceId = 0x1087643;
+	genericEntry->SetPriority(EMsvHighPriority);
+	genericEntry->SetComplete(ETrue);
+	genericEntry->SetVisible(ETrue);
+
+	TBool result=ETrue;
+
+	TMsvEmailEntry* EmailEntry = new (ELeave) TMsvEmailEntry(*genericEntry);
+
+	// check folder Set/Get functions
+	EmailEntry->SetDisconnectedOperation(ENoDisconnectedOperations);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), ENoDisconnectedOperations, &KNoDisconnectedOperations);
+	
+	EmailEntry->SetDisconnectedOperation(EDisconnectedCreateOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedCreateOperation, &KDisconnectedCreateOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedDeleteOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedDeleteOperation, &KDisconnectedDeleteOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedChangeOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedChangeOperation, &KDisconnectedChangeOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedCopyToOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedCopyToOperation, &KDisconnectedCopyToOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedCopyFromOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedCopyFromOperation, &KDisconnectedCopyFromOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedCopyWithinServiceOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedCopyWithinServiceOperation, &KDisconnectedCopyWithinServiceOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedMoveToOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedMoveToOperation, &KDisconnectedMoveToOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedMoveFromOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedMoveFromOperation, &KDisconnectedMoveFromOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedMoveWithinServiceOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedMoveWithinServiceOperation, &KDisconnectedMoveWithinServiceOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedSpecialOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedSpecialOperation, &KDisconnectedSpecialOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedUnknownOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedUnknownOperation, &KDisconnectedUnknownOperation);
+
+	EmailEntry->SetDisconnectedOperation(EDisconnectedMultipleOperation);
+	result &= CompareDisconnectedOptions(EmailEntry->DisconnectedOperation(), EDisconnectedMultipleOperation, &KDisconnectedMultipleOperation);
+
+	delete genericEntry;
+	delete EmailEntry;
+
+	ResultOfTest(result, aTestNo);
+	return result;
+	}
+
+
+//
+
+LOCAL_C void InitL()
+	{
+	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+	CActiveScheduler::Install(scheduler);
+	CleanupStack::PushL(scheduler);
+
+	testUtils = CEmailTestUtils::NewLC(test);
+	testUtils->CreateAllTestDirectories();
+	testUtils->FileSession().SetSessionPath(_L("C:\\"));
+	testUtils->CleanMessageFolderL();
+
+	log = CImLog::NewL(_L("c:\\logs\\email\\T_IMCM.log"), EAppend);
+	CleanupStack::PushL(log);
+	log->AppendComment(_L8("********** T_MIUT04 Test TMsvEmailEntry class **********"));
+	TBuf8<80> buf;
+
+#if defined(__WINS__)	
+	buf.Append(_L8("WINS "));
+#else
+	buf.Append(_L8("MARM "));
+#endif
+#if defined(_UNICODE)
+	buf.Append(_L8("U"));
+#endif
+#if defined(_DEBUG)
+	buf.Append(_L8("DEB"));
+#else
+	buf.Append(_L8("REL"));
+#endif
+	log->AppendComment(buf);
+	}
+
+LOCAL_C void Closedown()
+	{
+	log->AppendComment(_L8("************    T_MIUT04 Tests Complete    *************"));
+	log->AppendComment(_L8(""));
+
+	CleanupStack::PopAndDestroy(3);  //testUtils, log, scheduler
+	}
+
+//
+
+LOCAL_C void doMainL()
+	{
+	InitL();
+	testUtils->GoClientSideL();
+	test.Printf(_L("Performing Header Tests"));
+
+	TBool result = ETrue;
+	testUtils->TestStart(1);
+	TBool result1 = TMsvEmailEntrySelectionL(1);
+	result &= result1;
+	if (result1)
+		log->AppendComment(_L8("PASSED Test 1"));
+	else
+		log->AppendError(_L8("FAILED Test 1"),-1);
+	testUtils->TestFinish(1);
+
+	testUtils->TestStart(2);
+	TBool result2 = DisconnectedOperationTests(2);
+	result &= result2;
+	if (result2)
+		log->AppendComment(_L8("PASSED Test 2"));
+	else
+		log->AppendError(_L8("FAILED Test 2"),-1);
+	testUtils->TestFinish(2);
+
+	if (result)
+		{
+		log->AppendComment(_L8("PASSED All tests"));
+		test.Printf(_L("PASSED all Tests"));
+		testUtils->TestHarnessCompleted();
+		}
+	else
+		{
+		test.Printf(_L("FAILED Tests"));
+		log->AppendError(_L8("FAILED At Least one test"),-1);
+		testUtils->TestHarnessFailed(KErrGeneral);
+		}
+
+	Closedown();
+	}
+
+GLDEF_C TInt E32Main()
+	{	
+	__UHEAP_MARK;
+	test.Start(_L("MIUT04 - Test TMsvEmailEntry class"));
+	theCleanup=CTrapCleanup::New();
+	TRAPD(ret,doMainL());		
+	test(ret==KErrNone);
+	delete theCleanup;	
+	test.End();
+	test.Close();
+	__UHEAP_MARKEND;
+	return(KErrNone);
+	}