email/pop3andsmtpmtm/imapservermtm/test/src/T_DUMP.cpp
changeset 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/imapservermtm/test/src/T_DUMP.cpp	Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,303 @@
+// 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:
+// Testing Recieving of messages
+// 
+//
+
+#include <e32test.h>
+#include <f32fsys.h>
+#include <s32file.h>
+#include <e32base.h>
+#include <txtetext.h>
+#include <txtrich.h>
+#include <bautils.h>
+#include <miuthdr.h>
+#include <miutmsg.h>
+#include <miutset.h>  //KUidMsgTypePOP3
+#include <imutdll.h>	
+#include <imcvtext.h>
+#include <imcvrecv.h>
+#include <imcvsend.h>
+
+#include <imapset.h>
+
+//Oyster includes
+#include <msvstd.h>
+#include <msvids.h>
+#include <msvuids.h>
+#include <msvruids.h>
+#include <msvreg.h>
+
+#include "msvindexadapter.h"
+
+#include "msvserv.h"
+#include <msventry.h> 
+#include <msvapi.h>
+#include <mtclbase.h>
+#include <offop.h>
+
+#include "t_log.h"
+
+//----------------------------------------------------------------------------------------
+
+_LIT(KFilePathMailTest, "c:\\mailtest\\");
+
+//----------------------------------------------------------------------------------------
+
+LOCAL_D RTest test(_L("T_DUMP test harness"));
+
+LOCAL_D CTrapCleanup* theCleanup;
+LOCAL_D RFs theFs;	
+LOCAL_C CActiveScheduler* theScheduler;
+
+class CTestTimer;
+LOCAL_D	CTestTimer* timer;
+
+class CDummyMsvSessionObserver;
+
+LOCAL_C CMsvServer* theServer;
+
+//----------------------------------------------------------------------------------------
+
+class CDummyMsvSessionObserver : public CBase, public MMsvSessionObserver
+	{
+public:
+	void HandleSessionEvent(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
+		{};
+	};
+class CTestTimer : public CTimer
+	{
+public:
+	static CTestTimer* NewL();
+private:
+	CTestTimer();
+	void RunL();	
+	};
+
+CTestTimer::CTestTimer() : CTimer(EPriorityLow) {}
+
+void CTestTimer::RunL()
+	{
+	CActiveScheduler::Stop();
+	}
+
+CTestTimer* CTestTimer::NewL()
+	{
+	CTestTimer* self = new(ELeave) CTestTimer();
+	CleanupStack::PushL(self);
+	self->ConstructL(); // CTimer
+	CActiveScheduler::Add(self);
+	CleanupStack::Pop();
+	return self;
+	}
+
+class CTestActive : public CActive
+	{
+public:
+	CTestActive();
+	void ConstructL();
+//	void ChangeEntryL(TMsvId aId);
+	~CTestActive();
+private:
+	void RunL();
+	void DoCancel();
+private:
+//	CImCalculateMsgSize* iMsgSize;
+	};
+
+LOCAL_C CTestActive* active;
+
+//ctestactive
+CTestActive::CTestActive()
+: CActive(EPriorityStandard)
+	
+	{
+	__DECLARE_NAME(_S("CTestActive"));
+	}
+
+CTestActive::~CTestActive()
+	{
+	Cancel();
+//	delete iMsgSize;
+	}
+
+void CTestActive::ConstructL()
+	{
+	CActiveScheduler::Add(this);	
+//	iMsgSize = CImCalculateMsgSize::NewL(theFs, *sEntry);
+	}
+
+#if 0
+void CTestActive::ChangeEntryL(TMsvId /*aId*/)
+	{
+//	TTime time;
+//	iMsgSize->StartL(iStatus, aId, ENoAlgorithm, time, domainName);
+	SetActive();
+	}
+#endif
+
+void CTestActive::RunL()
+	{
+//	TInt32 size=iMsgSize->MessageSize();
+//	test.Printf(TRefByValue<const TDesC>_L("message size is %d\n\n"), size);
+	CActiveScheduler::Stop();
+	}
+
+void CTestActive::DoCancel()
+	{
+//	iMsgSize->Cancel();
+	}
+
+//----------------------------------------------------------------------------------------
+LOCAL_C void CreateAllTestDirectories()
+//----------------------------------------------------------------------------------------	
+	{
+	// create c:\mailtest, c:\mailtest\imcv c:\mailtest\attach\ directories used by this test harness
+	RFs s;
+	TFileName buffer;
+	if(!s.Connect())
+		{
+		TBool stop=EFalse;
+		s.SetSessionPath(_L("c:\\"));
+		if(!s.MkDir(KFilePathMailTest))
+			{
+			buffer=KFilePathMailTest;
+			test.Printf(TRefByValue<const TDesC>_L("Created %S directory\n"),&buffer);
+			stop=ETrue;
+			}
+#if 0
+		if(!s.MkDirAll(KTestMessageDir))
+			{
+			buffer=KTestMessageDir;
+			test.Printf(TRefByValue<const TDesC>_L("Created %S directory\n"),&buffer);
+			stop=ETrue;
+			}
+		if(!s.MkDirAll(KLogsDir))
+			{
+			buffer=KLogsDir;
+			test.Printf(TRefByValue<const TDesC>_L("Created %S directory\n"),&buffer);
+			stop=ETrue;
+			}
+#endif
+		if(stop)
+			{
+			test.Printf(_L("[Press any key to continue...]\n\n"));
+			test.Getch();
+			}
+		s.Close();
+		}
+	}
+
+//----------------------------------------------------------------------------------------
+LOCAL_C void Up()
+//----------------------------------------------------------------------------------------
+	{
+	theScheduler = new (ELeave)CActiveScheduler;
+	CActiveScheduler::Install( theScheduler );
+	CleanupStack::PushL(theScheduler);
+
+	User::LeaveIfError(theFs.Connect());
+	theFs.SetSessionPath(_L("C:\\"));
+
+#if 0
+	theFs.SetSessionPath( KFilePathMailTest );
+
+	// Delete out the logs
+	CFileMan* fileMan=CFileMan::NewL(theFs);
+	fileMan->Delete(KLogsDir, CFileMan::ERecurse);
+	delete fileMan;
+#endif
+	
+	// create a CMsvServer
+	timer = CTestTimer::NewL();
+	theServer = CMsvServer::NewL();
+	CleanupStack::PushL(theServer);
+
+	timer->After(100000);
+	CActiveScheduler::Start();
+	delete timer;
+
+	active = new (ELeave) CTestActive();
+	CleanupStack::PushL(active);
+	active->ConstructL();	
+	}
+
+//----------------------------------------------------------------------------------------
+LOCAL_C void Down()
+//----------------------------------------------------------------------------------------
+	{
+	test.Printf(_L("---------------------\n"));
+	test.Printf(_L("      Going down     \n"));
+	test.Printf(_L("---------------------\n"));
+	CleanupStack::PopAndDestroy(3);  //active, msvserver, theScheduler
+	theFs.Close();
+	}
+
+//----------------------------------------------------------------------------------------
+LOCAL_C void doMainL()
+//----------------------------------------------------------------------------------------
+	{
+	CreateAllTestDirectories();
+	Up();
+
+	test.Console()->ClearScreen();
+	test.Console()->SetPos(0, 0);
+	test.Printf(_L("---------------------\n"));
+	test.Printf(_L("    Message dumper   \n"));
+	test.Printf(_L("---------------------\n"));
+		
+	__UHEAP_MARK;
+	COutputter* putter = COutputter::NewL( &test );
+	CleanupStack::PushL(putter);
+
+	putter->SetRFs( &theFs );
+	theFs.SetSessionPath( KFilePathMailTest );
+
+	CMsvServerEntry* entry = CMsvServerEntry::NewL( *theServer, KMsvNullIndexEntryId );
+	CleanupStack::PushL(entry);
+
+	// enable invisible entries
+	TMsvSelectionOrdering sort = entry->Sort();
+	sort.SetShowInvisibleEntries(ETrue);
+	entry->SetSort(sort);
+	
+	CMsgOutputter* dumper = CMsgOutputter::NewL( putter, entry );
+	CleanupStack::PushL(dumper);
+
+	dumper->DumpL( KMsvRootIndexEntryId, CMsgOutputter::EToOneFile,
+				   CMsgOutputter::EToOneFile, ETrue, ETrue);
+
+	CleanupStack::PopAndDestroy(3); // dumper, putter, entry
+	__UHEAP_MARKEND;
+
+	Down();
+	}
+
+//----------------------------------------------------------------------------------------
+GLDEF_C TInt E32Main()
+//----------------------------------------------------------------------------------------
+	{	
+	__UHEAP_MARK;
+	test.Start(_L("T_DUMP Test harness"));
+	theCleanup=CTrapCleanup::New();
+
+	TRAPD(ret,doMainL());
+
+	test(ret==KErrNone);
+	delete theCleanup;
+	test.End();
+	test.Close();
+	__UHEAP_MARKEND;
+	return(KErrNone);
+	}