messagingfw/msgtest/integration/email/src/Emailsmoke.cpp
changeset 0 8e480a14352b
child 58 6c34d0baa0b1
--- /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);
+	}
+