--- /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<MBaseTestState>(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);
+ }
+