--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/obexmtms/TObexMTM/testutils/msgth/src/harness.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,312 @@
+// Copyright (c) 2003-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 "testframeutils.h"
+#include "parsers.h"
+#include "commands.h"
+#include "msvtestutils.h"
+
+
+//
+//
+// DLL Entry
+//
+
+//
+//
+// CActiveTestState
+//
+
+EXPORT_C CActiveTestState::CActiveTestState(TInt aPriority) : CActive(aPriority)
+ {
+ }
+
+EXPORT_C TInt CActiveTestState::RunError(TInt aError)
+ {
+ User::RequestComplete(iReportStatus, aError);
+ return KErrNone;
+ }
+
+
+//
+//
+// CBaseTestHarness
+//
+
+EXPORT_C CBaseTestHarness::~CBaseTestHarness()
+ {
+ iStateList->ResetAndDestroy();
+ delete iStateList;
+ }
+
+EXPORT_C void CBaseTestHarness::StartL(TRequestStatus& aStatus)
+ {
+ TTestDebugInfo debugInfo = GetDebugInfo();
+ HBufC* startString = debugInfo.TestStartStringLC();
+ LogCommentL(*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();
+ }
+
+
+EXPORT_C 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
+EXPORT_C void CBaseTestHarness::RunL()
+ {
+ if (iStatus == KErrNone)
+ {
+ iCurrentState++;
+ 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();
+ LogCommentL(*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.TestFailedStringL(iStatus.Int());
+ CleanupStack::PushL(errorText);
+ LogCommentL(*errorText);
+ TestConsole().Printf(*errorText);
+ TestConsole().Printf(_L("\r"));
+
+ CleanupStack::PopAndDestroy(errorText);
+ User::RequestComplete(iReportStatus, iStatus.Int());
+ }
+ }
+
+EXPORT_C void CBaseTestHarness::DoCancel()
+ {
+ }
+
+EXPORT_C void CBaseTestHarness::LogCommentL(const TDesC& /* aError */)
+ {
+ }
+
+EXPORT_C 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);
+ aError = KErrNone;
+ HBufC* errorText = NULL;
+ TRAP(aError,
+ {
+ errorText=debugInfo.TestFailedStringL(aError);
+ LogCommentL(*errorText);
+ });
+
+ TestConsole().Printf(*errorText);
+ TestConsole().Printf(_L("\r"));
+
+ delete errorText;
+ User::RequestComplete(iReportStatus, aError);
+ return aError;
+ }
+
+EXPORT_C void CBaseTestHarness::ConstructL()
+ {
+ CActiveScheduler::Add(this);
+ iStateList = new (ELeave) CArrayPtrFlat<MBaseTestState>(10);
+ }
+
+EXPORT_C CBaseTestHarness::CBaseTestHarness(RTest& aTest) : CActive(EPriorityHigh), iTest(aTest)
+ {
+ }
+
+EXPORT_C RTest& CBaseTestHarness::TestConsole()
+ {
+ return iTest;
+ }
+
+EXPORT_C void CBaseTestHarness::SetHeapFailureTesting(TBool aTest)
+ {
+ iTestHeapFailure = aTest;
+ }
+
+//
+//
+// CMainTestHarness
+//
+
+EXPORT_C CMainTestHarness* CMainTestHarness::NewL(RTest& aTest)
+ {
+ CMainTestHarness* self = new (ELeave) CMainTestHarness(aTest);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C void CMainTestHarness::ConstructL()
+ {
+ CBaseTestHarness::ConstructL();
+ }
+
+EXPORT_C CMainTestHarness::CMainTestHarness(RTest& aTest) : CBaseTestHarness(aTest)
+ {
+ }
+
+EXPORT_C void CMainTestHarness::StartL(TRequestStatus& aStatus)
+ {
+ CBaseTestHarness::StartL(aStatus);
+ }
+
+
+//
+//
+// CMsvClientTest
+//
+
+
+EXPORT_C CMsvClientTest* CMsvClientTest::NewL(CMsvTestUtils& aTestUtils, RTest& aTest)
+ {
+ CMsvClientTest* self = new (ELeave) CMsvClientTest(aTestUtils, aTest);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CMsvClientTest* CMsvClientTest::NewL(CMsvTestUtils* aTestUtils, RTest& aTest)
+ {
+ CMsvClientTest* self = new (ELeave) CMsvClientTest(aTestUtils, aTest);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CMsvClientTest::~CMsvClientTest()
+ {
+ Cancel();
+ delete iCurrentSelection;
+ delete iOperation;
+ }
+
+EXPORT_C void CMsvClientTest::DoCancel()
+ {
+ if (iOperation)
+ {
+ iOperation->Cancel();
+ }
+ }
+
+EXPORT_C void CMsvClientTest::SetCurrentOperation(CMsvOperation* aOperation)
+ {
+ delete iOperation;
+ iOperation = aOperation;
+ }
+
+
+EXPORT_C CMsvOperation& CMsvClientTest::CurrentOperation()
+ {
+ return *iOperation;
+ }
+
+EXPORT_C void CMsvClientTest::ConstructL()
+ {
+ CBaseTestHarness::ConstructL();
+ iCurrentSelection = new (ELeave) CMsvEntrySelection;
+ }
+
+EXPORT_C CMsvClientTest::CMsvClientTest(CMsvTestUtils& aMsvTestUtils, RTest& aTest)
+: CBaseTestHarness(aTest),
+ iMsvTestUtils(aMsvTestUtils)
+ {
+ iOperation = NULL;
+ }
+
+EXPORT_C CMsvClientTest::CMsvClientTest(CMsvTestUtils* aMsvTestUtils, RTest& aTest)
+: CBaseTestHarness(aTest),
+ iMsvTestUtils(*aMsvTestUtils),
+ iOwnedMsvTestUtils(aMsvTestUtils)
+ {
+ iOperation = NULL;
+ }
+
+EXPORT_C CMsvTestUtils& CMsvClientTest::MsvTestUtils()
+ {
+ return iMsvTestUtils;
+ }
+
+// MMS Test Harness: added to enable derived classes to reset data
+EXPORT_C void CMsvClientTest::Reset()
+ {
+ iMsvTestUtils.Reset();
+ }
+
+EXPORT_C void MBaseTestState::SetDebugInfo(const TTestDebugInfo& aDebugInfo)
+{
+iDebugInfo = aDebugInfo;
+}
+
+EXPORT_C const TTestDebugInfo& MBaseTestState::GetDebugInfo() const
+{
+return iDebugInfo;
+}
+
+EXPORT_C MBaseTestState::~MBaseTestState()
+{
+}
\ No newline at end of file