cryptomgmtlibs/securitytestfw/test/testhandler2/t_testaction.cpp
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testaction.cpp	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 "t_testaction.h"
+
+#include "t_output.h"
+#include "t_input.h"
+#include "t_testactionspec.h"
+#include "tScriptSetup.h"
+#include "t_testhandler.h"
+
+EXPORT_C CTestAction::~CTestAction()
+	{
+	delete iNameInfo;
+	}
+
+EXPORT_C void CTestAction::PerformPrerequisite(TRequestStatus& aStatus)
+	{
+	DoPerformPrerequisite(aStatus);
+	}
+
+EXPORT_C void CTestAction::PerformPostrequisite(TRequestStatus& aStatus)
+	{
+	DoPerformPostrequisite(aStatus);
+	}
+
+EXPORT_C void CTestAction::AfterOOMFailure()
+	{
+	}
+
+TBool CTestAction::Finished()
+	{
+	return iFinished;
+	}
+
+EXPORT_C void CTestAction::ReportAction()
+	{
+	iOut.writeString(*iNameInfo);
+	iOut.writeNewLine();
+	DoReportAction();
+	}
+
+EXPORT_C void CTestAction::CheckResult(TInt aError)
+{
+
+	// DoCheckResult must update iResult 
+	//iResult = (iResult && iExpectedResult) || (!iResult && !iExpectedResult);
+	DoCheckResult(aError);
+	
+	if (iKnownFailure)		//	Expecting an error because of known
+		iResult = ETrue;	//	defect current deferred etc
+	
+	iOut.writeString(_L("\tStatus : "));
+	iOut.writeError(aError);
+	iOut.writeString(_L(" ("));
+	iOut.writeNum(aError);
+	iOut.writeString(_L(")"));
+	iOut.writeNewLine();
+	iOut.writeString(_L("\tTest outcome : "));
+	if (iResult)
+		{
+		iOut.writeString(_L("PASSED"));
+		}
+	else
+		{
+		iOut.writeString(_L("FAILED"));
+		}
+	iOut.writeNewLine();
+	iOut.writeNewLine();
+	}
+
+EXPORT_C void CTestAction::PerformCancel()
+	{
+	}
+
+EXPORT_C void CTestAction::Reset()
+	{
+	}
+
+EXPORT_C CTestAction::CTestAction(CConsoleBase& aConsole,
+								  Output& aOut)
+: iFinished(EFalse), iKnownFailure(EFalse), iConsole(aConsole), iOut(aOut)
+	{
+	}
+
+EXPORT_C void CTestAction::ConstructL(const TTestActionSpec& aTestActionSpec)
+{
+	iNameInfo = aTestActionSpec.iActionName.AllocL();
+	
+	TRAPD(err, iExpectedResult = Input::ParseElementBoolL(
+		aTestActionSpec.iActionResult, _L8("<result>")) );
+	if(err == KErrArgument)
+		{
+		//if there is no <result> field or it has invalid text then we assume
+		//it's a "normal" test.  ie it must be true to pass.
+		iExpectedResult = ETrue; 
+		}
+	else if(err != KErrNone)
+		{
+		User::Leave(err);
+		}
+	
+//	If there's a known defect because of deferred defects etc, the script
+//	will flag it.  We record as much here and, when result is returned, check
+//	against known failure and adjust result accordingly.  This should only be
+//	used for reported defects that have been deferred etc rather than as a 
+//	workaround for test failures.  The failure will be reported in a separate
+//	part of the log file so it's not overlooked entirely.
+	
+	_LIT8(KTrue, "ETrue");
+	// _LIT8(KFalse, "EFalse");
+
+	TInt pos = 0; 
+	err = KErrNone;
+	
+	TPtrC8 knownFailure = Input::ParseElement(aTestActionSpec.iActionBody, KKnownDefectStart, KKnownDefectEnd, pos, err);	
+	if (knownFailure.Compare(KTrue)==0)
+		iKnownFailure = ETrue;
+	else	//	Assume if it's not true it's false or not there which == false
+		iKnownFailure = EFalse;
+}
+
+
+EXPORT_C void CTestAction::DoPerformPrerequisite(TRequestStatus& aStatus)
+	{
+	iActionState = EAction;
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNone);
+	}
+
+EXPORT_C void CTestAction::DoPerformPostrequisite(TRequestStatus& aStatus)
+	{
+	TRequestStatus* status = &aStatus;
+	// pass on any error from peform action
+	User::RequestComplete(status, aStatus.Int()); 
+	iFinished = ETrue;
+	}
+
+EXPORT_C void CTestAction::FailTestNow(TRequestStatus& aStatus)
+	{
+	iActionState=EPostrequisite;
+	iResult=EFalse;
+	TRequestStatus* status = &aStatus;
+	User::RequestComplete(status, KErrNone);
+	}
+
+
+EXPORT_C CTestAction::TScriptError CTestAction::ScriptError(void)
+	{
+	return(iScriptError);
+	}
+
+EXPORT_C void CTestAction::SetScriptError(const TScriptError &aScriptError, const TDesC& aError)
+	{
+	iScriptError = aScriptError;
+	aScriptErrorDescription.Copy(aError); 
+	};
+
+EXPORT_C void CTestAction::ScriptError(TDes& aError)
+	{
+	aError.Copy(aScriptErrorDescription);
+	};
+
+void CTestAction::SetTestHandler(CTestHandler& aTestHandler)
+	{
+	iTestHandler = &aTestHandler;
+	}
+
+EXPORT_C CBase* CTestAction::SharedData() const
+	{
+	ASSERT(iTestHandler);
+	return iTestHandler->SharedData();
+	}
+
+EXPORT_C void CTestAction::SetSharedData(CBase* aData)
+	{
+	ASSERT(iTestHandler);
+	iTestHandler->SetSharedData(aData);
+	}
+
+EXPORT_C void CTestAction::ResetState()
+	{
+	}