diff -r 000000000000 -r 72b543305e3a messagingappbase/obexmtms/TObexMTM/testutils/msgth/src/harness.cpp --- /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(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