diff -r 000000000000 -r 8e480a14352b messagingfw/msgtest/integration/email/src/Emailsmoke.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtest/integration/email/src/Emailsmoke.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,321 @@ +// Copyright (c) 1999-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 "emailsmoke.h" +#include "testframeutils.h" +#include "emailsmokeparse.h" +#include "emailsmokecommands.h" +#include "emailtestutils.h" + + +// +// +// CBaseTestHarness +// + +CBaseTestHarness::~CBaseTestHarness() + { + iStateList->ResetAndDestroy(); + delete iStateList; + } + +void CBaseTestHarness::StartL(TRequestStatus& aStatus) + { + TTestDebugInfo debugInfo = GetDebugInfo(); + HBufC* startString = debugInfo.TestStartStringLC(); + LogComment(*startString); + TestConsole().Printf(*startString); + TestConsole().Printf(_L("\n")); + + CleanupStack::PopAndDestroy(startString); + iCurrentState = 0; + iReportStatus = &aStatus; + + if (iCurrentState < iStateList->Count()) + { + TTestDebugInfo moreInfo=(*iStateList)[iCurrentState]->GetDebugInfo(); + HBufC* debugString=moreInfo.TestStartStringLC(); + TestConsole().Printf(*debugString); + TestConsole().Printf(_L("\r")); + CleanupStack::PopAndDestroy(debugString); + + (*iStateList)[iCurrentState]->StartL(iStatus); + } + + aStatus = KRequestPending; + SetActive(); + } + + +void CBaseTestHarness::AddStateL(MBaseTestState* aTestState, TTestDebugInfo aDebugInfo) + { + aTestState->SetDebugInfo(aDebugInfo); + TRAPD(err, iStateList->AppendL(aTestState)); + if (err != KErrNone) + // If the state can't be added then delete it. + // We do this because we have taken ownership of the state. + { + delete aTestState; + User::Leave(err); + } + } + + +// From CActive +void CBaseTestHarness::RunL() + { + if (iStatus == KErrNone) + { + if (++iCurrentState < iStateList->Count()) + { + TTestDebugInfo moreInfo=(*iStateList)[iCurrentState]->GetDebugInfo(); + HBufC* debugString=moreInfo.TestCompleteStringLC(); + TestConsole().Printf(*debugString); + TestConsole().Printf(_L("\r")); + CleanupStack::PopAndDestroy(debugString); + + (*iStateList)[iCurrentState]->StartL(iStatus); + SetActive(); + } + else + { + TTestDebugInfo debugInfo = GetDebugInfo(); + HBufC* testCompleted = debugInfo.TestCompleteStringLC(); + LogComment(*testCompleted); + + CleanupStack::PopAndDestroy(testCompleted); + User::RequestComplete(iReportStatus, iStatus.Int()); + } + } + else + { + // Pass the debug info back from the child state and log the error + TTestDebugInfo debugInfo = (*iStateList)[iCurrentState]->GetDebugInfo(); + SetDebugInfo(debugInfo); + HBufC* errorText = debugInfo.TestFailedStringLC(iStatus.Int()); + LogComment(*errorText); + TestConsole().Printf(*errorText); + TestConsole().Printf(_L("\r")); + + CleanupStack::PopAndDestroy(errorText); + User::RequestComplete(iReportStatus, iStatus.Int()); + } + } + +void CBaseTestHarness::DoCancel() + { + } + +void CBaseTestHarness::LogComment(const TDesC& /* aError */) + { + } + + +TInt CBaseTestHarness::RunError(TInt aError) + { + // Pass the debug info back from the child state and log the error + TTestDebugInfo debugInfo = (*iStateList)[iCurrentState]->GetDebugInfo(); + SetDebugInfo(debugInfo); + HBufC* errorText=NULL; + TRAPD(ret,errorText= debugInfo.TestFailedStringLC(aError)); + if (ret!=KErrNone) + return ret; + TRAP(ret,LogComment(*errorText)); //LogComentL doesn't leave although it has L. + TestConsole().Printf(*errorText); + TestConsole().Printf(_L("\r")); + + CleanupStack::PopAndDestroy(errorText); + User::RequestComplete(iReportStatus, aError); + return KErrNone; + } + +void CBaseTestHarness::ConstructL() + { + CActiveScheduler::Add(this); + iStateList = new (ELeave) CArrayPtrFlat(10); + } + +CBaseTestHarness::CBaseTestHarness(RTest& aTest) : CActive(EPriorityHigh), iTest(aTest) + { + } + +RTest& CBaseTestHarness::TestConsole() + { + return iTest; + } + +// +// +// CMainTestHarness +// + +CMainTestHarness* CMainTestHarness::NewL(RTest& aTest) + { + CMainTestHarness* self = new (ELeave) CMainTestHarness(aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +void CMainTestHarness::ConstructL() + { + CBaseTestHarness::ConstructL(); + } + +CMainTestHarness::CMainTestHarness(RTest& aTest) : CBaseTestHarness(aTest) + { + } + +void CMainTestHarness::StartL(TRequestStatus& aStatus) + { + CBaseTestHarness::StartL(aStatus); + } + + +// +// +// CMsvClientTest +// + + +CMsvClientTest* CMsvClientTest::NewL(CEmailTestUtils& aTestUtils, RTest& aTest) + { + CMsvClientTest* self = new (ELeave) CMsvClientTest(aTestUtils, aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CMsvClientTest* CMsvClientTest::NewL(CEmailTestUtils* aTestUtils, RTest& aTest) + { + CMsvClientTest* self = new (ELeave) CMsvClientTest(aTestUtils, aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CMsvClientTest::~CMsvClientTest() + { + Cancel(); + delete iCurrentSelection; + delete iOperation; + } + +void CMsvClientTest::DoCancel() + { + if (iOperation) + { + iOperation->Cancel(); + } + } + +void CMsvClientTest::SetCurrentOperation(CMsvOperation* aOperation) + { + delete iOperation; + iOperation = aOperation; + } + + +CMsvOperation& CMsvClientTest::CurrentOperation() + { + return *iOperation; + } + +void CMsvClientTest::ConstructL() + { + CBaseTestHarness::ConstructL(); + iCurrentSelection = new (ELeave) CMsvEntrySelection; + } + +CMsvClientTest::CMsvClientTest(CEmailTestUtils& aMsvTestUtils, RTest& aTest) +: CBaseTestHarness(aTest), + iMsvTestUtils(aMsvTestUtils) + { + iOperation = NULL; + } + +CMsvClientTest::CMsvClientTest(CEmailTestUtils* aMsvTestUtils, RTest& aTest) +: CBaseTestHarness(aTest), + iMsvTestUtils(*aMsvTestUtils), + iOwnedMsvTestUtils(aMsvTestUtils) + { + iOperation = NULL; + } + +CEmailTestUtils& CMsvClientTest::MsvTestUtils() + { + return iMsvTestUtils; + } + + +// +// +// CEmailClientTest +// + +CEmailClientTest* CEmailClientTest::NewL(CEmailTestUtils* aTestUtils, RTest& aTest) + { + CEmailClientTest* self = new (ELeave) CEmailClientTest(aTestUtils, aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CEmailClientTest* CEmailClientTest::NewL(CEmailTestUtils& aTestUtils, RTest& aTest) + { + CEmailClientTest* self = new (ELeave) CEmailClientTest(aTestUtils, aTest); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CEmailClientTest::~CEmailClientTest() + { + delete iOwnedEmailTestUtils; + } + +void CEmailClientTest::ConstructL() + { + CMsvClientTest::ConstructL(); + } + +CEmailTestUtils& CEmailClientTest::EmailTestUtils() + { + return iEmailTestUtils; + } + +CEmailClientTest::CEmailClientTest(CEmailTestUtils& aTestUtils, RTest& aTest) +: CMsvClientTest(aTestUtils, aTest), + iEmailTestUtils(aTestUtils) + { + } + +CEmailClientTest::CEmailClientTest(CEmailTestUtils* aTestUtils, RTest& aTest) +: CMsvClientTest(*aTestUtils, aTest), + iEmailTestUtils(*aTestUtils), + iOwnedEmailTestUtils(aTestUtils) + { + } + +void CEmailClientTest::LogComment(const TDesC& aError) + { + iEmailTestUtils.WriteComment(aError); + } +