diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/clientmtms/test/src/T_imcm04.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/clientmtms/test/src/T_imcm04.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,293 @@ +// 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: +// + +#include "EmailTestUtils.h" +#include "miutlog.h" +#include +#include + +// local variables etc // + +_LIT(KImcmTest, "T_IMCM04 - Testing MTM::InvokeAsyncFunctionL()"); +RTest test(KImcmTest); + +LOCAL_D TMsvId imap4Service; +LOCAL_D TMsvId smtpService; +LOCAL_D TMsvId pop3Service; + +LOCAL_D CTrapCleanup* theCleanup; +LOCAL_D CImLog* log; +LOCAL_D CEmailTestUtils* testUtils; + +LOCAL_D CMsvOperation* msvOperation; +LOCAL_D CMsvEntrySelection* msvSelection; +LOCAL_D CConsoleBase* console; + +class COperationActive; +LOCAL_D COperationActive* opActive; + +// +class TestUiTimer : public CTimer + { +public: + static TestUiTimer* NewLC(CConsoleBase* aConsole); + ~TestUiTimer(); + + void RunL(); + void DoCancel(); + void ConstructL(); + void IssueRequest(); + void SetOperation(CMsvOperation* aOperation); + TTimeIntervalMicroSeconds32 period; +protected: + TestUiTimer(CConsoleBase* aConsole); + + CConsoleBase* iConsole; + CMsvOperation* iOperation; + }; + +// +TestUiTimer* TestUiTimer::NewLC(CConsoleBase* aConsole) + { + TestUiTimer* self = new(ELeave) TestUiTimer(aConsole); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +TestUiTimer::TestUiTimer(CConsoleBase* aConsole) + : CTimer(1) + { + iConsole = aConsole; + period = 10000; + } + +TestUiTimer::~TestUiTimer() + { + delete iOperation; + } + +void TestUiTimer::ConstructL() + { + CTimer::ConstructL(); + CActiveScheduler::Add(this); + } + +void TestUiTimer::IssueRequest() + { + After(period); + } + +void TestUiTimer::SetOperation(CMsvOperation* aOperation) + { + if(iOperation) + { + delete iOperation; + iOperation=NULL; + } + iOperation = aOperation; + } + +void TestUiTimer::DoCancel() + { + CTimer::DoCancel(); + } + +void TestUiTimer::RunL() + { + IssueRequest(); + }; + +// + +class COperationActive : public CActive + { +public: + COperationActive(); + ~COperationActive(); + static COperationActive* NewL(); + void StartL(); + void SetOperation(CMsvOperation*); + +protected: + void DoCancel(); + void RunL(); + + TestUiTimer* iTimer; + }; + +// +COperationActive::COperationActive() +: CActive(0) + { + } + +COperationActive::~COperationActive() + { + Cancel(); + delete iTimer; + } + +COperationActive* COperationActive::NewL() + { + COperationActive* self = new (ELeave) COperationActive; + CActiveScheduler::Add(self); + + self->iSetActive = ETrue; + self->iTimer = TestUiTimer::NewLC(test.Console()); + CleanupStack::Pop(); + return self; + } + +void COperationActive::DoCancel() + { + } + +void COperationActive::StartL() + { + iTimer->IssueRequest(); // Start the connect observation timer + + SetActive(); + test.Console()->SetPos(0, 17); + test.Printf(TRefByValue_L("Operation TRequestStatus %d"), iStatus); + } + +void COperationActive::SetOperation(CMsvOperation *aOperation) + { + iTimer->SetOperation(aOperation); + } + +void COperationActive::RunL() + { + iTimer->Cancel(); + test.Console()->SetPos(25, 17); + test.Printf(_L(" ")); + test.Console()->SetPos(0, 17); + test.Printf(TRefByValue_L("Operation TRequestStatus %d"), iStatus); + CActiveScheduler::Stop(); + } + +// + +LOCAL_C void CreateNewPlaintextMessageViaPop3MtmL() + { + log->AppendComment(_L8("Create new plaintext msg via POP3 MTM")); + + TMsvPartList partList = (KMsvMessagePartBody | KMsvMessagePartAttachments); + TMsvEmailTypeList msvEmailTypeList = 0; + + TImCreateMessageOptions msgOptions; + msgOptions.iMessageType = KUidMsgTypeSMTP; + msgOptions.iMsvPartList = partList; + msgOptions.iMsvEmailTypeList = msvEmailTypeList; + TPckgBuf options(msgOptions); + + msvSelection->ResizeL(0); + msvSelection->AppendL(KMsvGlobalOutBoxIndexEntryId); // destination folder is Global Outbox + + opActive->iStatus = KRequestPending; + msvOperation = testUtils->iPopClientMtm->InvokeAsyncFunctionL(KPOP3MTMCreateNewEmailMessage, *msvSelection, options, opActive->iStatus); + opActive->SetOperation(msvOperation); + opActive->StartL(); // Start the active object + } + +// + +LOCAL_C void InitL() + { + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(scheduler); + CleanupStack::PushL(scheduler); + + testUtils = CEmailTestUtils::NewLC(test); + console = test.Console(); + testUtils->FileSession().SetSessionPath(_L("C:\\")); + testUtils->CleanMessageFolderL(); + testUtils->GoServerSideL(); + + // Create Services + smtpService = testUtils->CreateSmtpServiceL(); + pop3Service = testUtils->CreatePopServiceL(); + imap4Service = testUtils->CreateImapServiceL(); + + log = CImLog::NewL(_L("c:\\logs\\email\\T_IMCM.log"), EAppend); + CleanupStack::PushL(log); + log->AppendComment(_L8("**** T_IMCM04 - Testing MTM::InvokeAsyncFunctionL() ****")); + 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_IMCM04 Tests Complete **********")); + log->AppendComment(_L8("")); + + CleanupStack::PopAndDestroy(3); //testUtils, log, scheduler + } + +// + +LOCAL_C void doMainL() + { + InitL(); + testUtils->FileSession().SetSessionPath(_L("c:\\")); + + // Instantiate the POP3 Client MTM + testUtils->GoClientSideL(); + testUtils->InstantiatePopClientMtmL(); + msvSelection = new (ELeave) CMsvEntrySelection; + CleanupStack::PushL(msvSelection); + + opActive = COperationActive::NewL(); + CleanupStack::PushL(opActive); + console->SetPos(0, 7); + test.Printf(_L("Creating new plaintext message via POP3 MTM \n")); + CreateNewPlaintextMessageViaPop3MtmL(); + CActiveScheduler::Start(); + testUtils->FindChildrenL(KMsvRootIndexEntryId, EFalse); + + CleanupStack::PopAndDestroy(); //opActive + CleanupStack::PopAndDestroy(); //msvSelection + testUtils->Reset(); + Closedown(); + } + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + test.Start(_L("T_IMCM04 - Testing MTM::InvokeAsyncFunctionL()")); + theCleanup=CTrapCleanup::New(); + TRAPD(ret,doMainL()); + test(ret==KErrNone); + delete theCleanup; + test.End(); + test.Close(); + __UHEAP_MARKEND; + User::Heap().Check(); + return(KErrNone); + }