cryptomgmtlibs/securitytestfw/test/testhandler2/t_testactionspec.cpp
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 108 ca9a0fc2f082
--- a/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testactionspec.cpp	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testactionspec.cpp	Thu Sep 10 14:01:51 2009 +0300
@@ -1,167 +1,362 @@
-/*
-* 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_testactionspec.h"
-#include "t_testsetup.h"
-#include "tScriptSetup.h"
-#include "t_input.h"
-#include "tScriptTests.h"
-
-_LIT8(KTrue, "true");
-_LIT8(KFalse, "false");
-
-_LIT8(KExOOMStart, "<exoom>");
-_LIT8(KExOOMEnd, "</exoom>");
-_LIT8(KInOOMStart, "<inoom>");
-_LIT8(KInOOMEnd, "</inoom>");
-_LIT8(KExCancelStart, "<excancel>");
-_LIT8(KExCancelEnd, "</excancel>");
-_LIT8(KInCancelStart, "<incancel>");
-_LIT8(KInCancelEnd, "</incancel>");
-_LIT8(KSkippedStart, "<skipped>");
-_LIT8(KSkippedEnd, "</skipped>");
-_LIT8(KSmokeStart, "<smoke>");
-_LIT8(KSmokeEnd, "</smoke>");
-_LIT8(KInteractiveStart, "<interactive>");
-_LIT8(KInteractiveEnd, "</interactive>");
-
-TTestActionSpec::TTestActionSpec()
-	{
-	}
-
-TInt TTestActionSpec::Init(const TDesC8& aInput, 
-						   TInt& aPos, 
-						   CConsoleBase& /*aConsole*/,
-						   Output& aOut,
-						   TInt& aBitFlag)
-	{
-	TInt err = KErrNone;
-	iActionName.Set(Input::ParseElement(aInput, KActionNameStart, KActionNameEnd, 
-		aPos, err));
-	if (err != KErrNone)
-		{
-		aOut.writeString(_L("Error couldn't find actionname in test case spec"));
-		aOut.writeNewLine();
-		return err;
-		}
-	
-	iActionType.Set(Input::ParseElement(aInput, KActionTypeStart, KActionTypeEnd, aPos, err));
-	if (err != KErrNone)
-		{
-		aOut.writeString(_L("Error couldn't find actiontype in test case spec"));
-		aOut.writeNewLine();
-		return err;
-		}
-	
-	iActionGroup.Set(Input::ParseElement(aInput, KActionGroupingStart, KActionGroupingEnd, aPos, err));
-	if (err == KErrNone)
-		{
-		//Do parsing of the returned groupings string
-		TInt relativePos=0;
-		TPtrC8 excludeOOM = Input::ParseElement(iActionGroup, KExOOMStart, KExOOMEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 includeOOM = Input::ParseElement(iActionGroup, KInOOMStart, KInOOMEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 excludeCancel = Input::ParseElement(iActionGroup, KExCancelStart, KExCancelEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 includeCancel = Input::ParseElement(iActionGroup, KInCancelStart, KInCancelEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 skipped = Input::ParseElement(iActionGroup, KSkippedStart, KSkippedEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 smoketest = Input::ParseElement(iActionGroup, KSmokeStart, KSmokeEnd, relativePos, err);
-		relativePos=0;
-		TPtrC8 interactive = Input::ParseElement(iActionGroup, KInteractiveStart, KInteractiveEnd, relativePos, err);
-
-		if (excludeOOM==KTrue)
-			{
-			aBitFlag|=EXOOM;
-			}
-		else if (excludeOOM==KFalse)
-			{
-			aBitFlag&= (~EXOOM);
-			}
-		
-		if (includeOOM==KTrue)
-			{
-			aBitFlag|=INOOM;
-			}
-		else if (includeOOM==KFalse)
-			{
-			aBitFlag&= (~INOOM);
-			}
-
-		if (excludeCancel==KTrue)
-			{
-			aBitFlag|=EXCANCEL;
-			}
-		else if (excludeCancel==KFalse)
-			{
-			aBitFlag&= (~EXCANCEL);
-			}
-
-		if (includeCancel==KTrue)
-			{
-			aBitFlag|=INCANCEL;
-			}
-		else if (includeCancel==KFalse)
-			{
-			aBitFlag&= (~INCANCEL);
-			}
-
-		if (skipped==KTrue)
-			{
-			aBitFlag|=SKIP;
-			}
-		else if (skipped==KFalse)
-			{
-			aBitFlag&= (~SKIP);
-			}
-	
-		if (smoketest==KTrue)
-			{
-			aBitFlag|=SMOKE;
-			}
-		else if (smoketest==KFalse)
-			{
-			aBitFlag&= (~SMOKE);
-			}
-
-		if (interactive==KTrue)
-			{
-			aBitFlag|=INTER;
-			}
-		else if (interactive==KFalse)
-			{
-			aBitFlag&= (~INTER);
-			}
-		}
-	
-	iActionBody.Set(Input::ParseElement(aInput, KActionBodyStart, KActionBodyEnd, aPos, err));
-	iActionResult.Set(Input::ParseElement(aInput, KActionResultStart, KActionResultEnd, aPos, err));
-	
-	return KErrNone; 
-	}
-
-void TTestActionSpec::HardcodedInit(const TDesC8& aInput)
-	{
-	iActionName.Set(aInput);
-	iActionType.Set(KNullDesC8);
-	iActionGroup.Set(KNullDesC8);
-	iActionBody.Set(KNullDesC8);
-	iActionResult.Set(KNullDesC8);
-	}
+/*
+* 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_testactionspec.h"
+#include "t_testsetup.h"
+#include "tScriptSetup.h"
+#include "t_input.h"
+#include "tScriptTests.h"
+#include "t_tefinput.h"
+
+_LIT8(KTrue, "true");
+_LIT8(KFalse, "false");
+
+_LIT8(KExOOMStart, "<exoom>");
+_LIT8(KExOOMEnd, "</exoom>");
+_LIT8(KInOOMStart, "<inoom>");
+_LIT8(KInOOMEnd, "</inoom>");
+_LIT8(KExCancelStart, "<excancel>");
+_LIT8(KExCancelEnd, "</excancel>");
+_LIT8(KInCancelStart, "<incancel>");
+_LIT8(KInCancelEnd, "</incancel>");
+_LIT8(KSkippedStart, "<skipped>");
+_LIT8(KSkippedEnd, "</skipped>");
+_LIT8(KSmokeStart, "<smoke>");
+_LIT8(KSmokeEnd, "</smoke>");
+_LIT8(KInteractiveStart, "<interactive>");
+_LIT8(KInteractiveEnd, "</interactive>");
+
+
+TTestActionSpec::TTestActionSpec()
+	{
+	}
+
+TTestActionSpec::~TTestActionSpec()
+	{
+	iniSectionResultBody.Close();
+	}
+
+TInt TTestActionSpec::Init(const TDesC8& aInput, 
+						   TInt& aPos,
+						   CConsoleBase& /*aConsole*/,
+						   Output& aOut,
+						   TInt& aBitFlag)
+	{
+	TInt err = KErrNone;
+	iActionName.Set(Input::ParseElement(aInput, KActionNameStart, KActionNameEnd, aPos, err));
+	if (err != KErrNone)
+		{
+		aOut.writeString(_L("Error couldn't find actionname in test case spec"));
+		aOut.writeNewLine();
+		return err;
+		}
+	
+	iActionType.Set(Input::ParseElement(aInput, KActionTypeStart, KActionTypeEnd, aPos, err));
+	if (err != KErrNone)
+		{
+		aOut.writeString(_L("Error couldn't find actiontype in test case spec"));
+		aOut.writeNewLine();
+		return err;
+		}
+	
+	iActionGroup.Set(Input::ParseElement(aInput, KActionGroupingStart, KActionGroupingEnd, aPos, err));
+	if (err == KErrNone)
+		{
+		//Do parsing of the returned groupings string
+		TInt relativePos=0;
+		TPtrC8 excludeOOM = Input::ParseElement(iActionGroup, KExOOMStart, KExOOMEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 includeOOM = Input::ParseElement(iActionGroup, KInOOMStart, KInOOMEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 excludeCancel = Input::ParseElement(iActionGroup, KExCancelStart, KExCancelEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 includeCancel = Input::ParseElement(iActionGroup, KInCancelStart, KInCancelEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 skipped = Input::ParseElement(iActionGroup, KSkippedStart, KSkippedEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 smoketest = Input::ParseElement(iActionGroup, KSmokeStart, KSmokeEnd, relativePos, err);
+		relativePos=0;
+		TPtrC8 interactive = Input::ParseElement(iActionGroup, KInteractiveStart, KInteractiveEnd, relativePos, err);
+
+		if (excludeOOM==KTrue)
+			{
+			aBitFlag|=EXOOM;
+			}
+		else if (excludeOOM==KFalse)
+			{
+			aBitFlag&= (~EXOOM);
+			}
+		
+		if (includeOOM==KTrue)
+			{
+			aBitFlag|=INOOM;
+			}
+		else if (includeOOM==KFalse)
+			{
+			aBitFlag&= (~INOOM);
+			}
+
+		if (excludeCancel==KTrue)
+			{
+			aBitFlag|=EXCANCEL;
+			}
+		else if (excludeCancel==KFalse)
+			{
+			aBitFlag&= (~EXCANCEL);
+			}
+
+		if (includeCancel==KTrue)
+			{
+			aBitFlag|=INCANCEL;
+			}
+		else if (includeCancel==KFalse)
+			{
+			aBitFlag&= (~INCANCEL);
+			}
+
+		if (skipped==KTrue)
+			{
+			aBitFlag|=SKIP;
+			}
+		else if (skipped==KFalse)
+			{
+			aBitFlag&= (~SKIP);
+			}
+	
+		if (smoketest==KTrue)
+			{
+			aBitFlag|=SMOKE;
+			}
+		else if (smoketest==KFalse)
+			{
+			aBitFlag&= (~SMOKE);
+			}
+
+		if (interactive==KTrue)
+			{
+			aBitFlag|=INTER;
+			}
+		else if (interactive==KFalse)
+			{
+			aBitFlag&= (~INTER);
+			}
+		}
+	
+	iActionBody.Set(Input::ParseElement(aInput, KActionBodyStart, KActionBodyEnd, aPos, err));
+	iActionResult.Set(Input::ParseElement(aInput, KActionResultStart, KActionResultEnd, aPos, err));
+	iTefScript = EFalse;
+	
+	return KErrNone; 
+	}
+
+
+// Extracts information from *.script and *.ini files to the appropriate member variables.
+
+TInt TTestActionSpec::TEFInit(RFs& aFs, 
+						   const TDesC8& aInput,
+						   const TDesC8& aTestCaseID,
+						   TDesC8& aPrevTestCaseID,
+						   TBool& tefFile,
+						   TBool& runtest,
+						   TBool& inifile,
+						   TDes8& aScriptResult,
+						   TDes8& aActionType,
+						   const TDesC& aScriptPath,
+						   CConsoleBase& /*aConsole*/,
+						   Output& aOut)
+	{
+	
+	TInt 		err = KErrNone;
+	TInt 		actionTypePos=3;
+	TBool 		scriptactionResultSet = EFalse;
+//	TBool 		iniactionResultSet = EFalse;
+	TBuf8<512> 	prevTestCaseID;
+	TBuf8<512> 	prevTestDescription;
+
+
+	
+// Checks if the first word from the script file is an error code
+// if(error code)
+//		sets 'actionResult' to the relevent error code with the <return></return> tags
+
+	TPtrC8 firstWord = Tefinput::ParseNthElement(aInput,1, err);
+	if(err == KErrNone)
+		{
+		TInt tmpno;
+		TLex8 lex8(firstWord); 
+		err = lex8.Val(tmpno);			
+		if(err != KErrNone)
+			{
+			actionTypePos = 4;
+			err = Tefinput::ParseActionResult(firstWord, aScriptResult);
+			scriptactionResultSet = ETrue;
+			}
+		}
+	
+//1. Extracts the .ini file name from the .script file
+//2. Reads in the [section] name from the .script file
+//3. Generates  .ini path from .script file path and .ini file name
+//4. Sets iActionBody with the info from .ini file
+	
+	TBuf<KMaxPath + KMaxFileName> 	iniFilePath;
+	TBuf<512> 						iniFileData;
+	TPtrC8 							iniSectionData;
+	
+	
+	TPtrC8 iniFileName = Tefinput::ParseNthElement(aInput,actionTypePos+1,err);
+	if(err == KErrNone)
+		{
+		TPtrC8 iniSectionName = Tefinput::ParseNthElement(aInput,actionTypePos+2,err);
+		if(err == KErrNone)
+			{
+			err = Tefinput::ParseiniPath(iniFileName, aScriptPath, iniFilePath);
+			if(err == KErrNone)
+				{
+				aTestIniFilePtr.Assign(Tefinput::GetiniFile(aFs, iniFilePath, err)); // Load up our local RBuf ptr to takeover the management of the inifile data in Heap
+				
+				if(err == KErrNone)
+					{
+					TPtrC8 iniFile = aTestIniFilePtr.Ptr();
+					inifile = ETrue;
+					err = Tefinput::ParseActionbody(iniFile, iniSectionName, iniSectionData);
+					if(err == KErrNone)
+						{
+						TInt pos = 0;
+						iActionBody.Set(Input::ParseElement(iniSectionData, KActionBodyStart, KActionBodyEnd, pos, err));
+						if (err == KErrNotFound)
+							{
+							aOut.writeString(_L("Error couldn't find actionbody in test case spec"));
+							aOut.writeNewLine();
+							return err;
+							}
+						}
+					}
+				else
+					{
+					inifile = EFalse;
+					}
+				}
+			}
+		}
+	else
+		{
+		inifile = EFalse;
+		}
+		
+	TInt pos = 0;
+
+// Extracts info b/w <actionresult> </actionresult> tags
+// 	Sets iActionResult with info both from .script and .ini file
+	TPtrC8 tempResult;
+	TPtrC8 scriptResult;
+	TInt resultlen ;
+	
+	if(scriptactionResultSet)
+		{
+		scriptResult.Set(aScriptResult);
+		tempResult.Set(Input::ParseElement(iniSectionData, KActionResultStart, KActionResultEnd, pos, err));
+		if (err == KErrNone)
+			{
+			resultlen = scriptResult.Length() + tempResult.Length();
+			iniSectionResultBody.Create(tempResult,resultlen);
+			iniSectionResultBody.Insert(0,scriptResult);			
+			iActionResult.Set(iniSectionResultBody);
+//			iniactionResultSet = ETrue;
+			}
+		else
+			{
+			iniSectionResultBody.Create(scriptResult);
+			iActionResult.Set(iniSectionResultBody);
+			}
+		}
+	else
+		{
+		tempResult.Set(Input::ParseElement(iniSectionData, KActionResultStart, KActionResultEnd, pos, err));
+		err = Tefinput::GetActionResult(KErrNone, aScriptResult);
+		if(err == KErrNone)
+			{
+			scriptResult.Set(aScriptResult);
+			resultlen = tempResult.Length() + scriptResult.Length();
+			iniSectionResultBody.Create(tempResult, resultlen);
+			iniSectionResultBody.Insert(0,aScriptResult);
+			iActionResult.Set(iniSectionResultBody);
+			}
+		else
+			{
+			iniSectionResultBody.Create(tempResult);
+			iActionResult.Set(iniSectionResultBody);
+			}
+		}
+	
+		
+//	aPrevTestCaseID = aTestCaseID;
+//Sets iActionName with the @SYMTestCaseID
+	if(!runtest)
+		{
+		iActionName.Set(aPrevTestCaseID);
+		}
+	else
+		{
+		iActionName.Set(aTestCaseID);
+		}
+
+	
+
+//Sets iActionType from .script file
+	
+	TBuf8<512> modifiedType;
+	TBuf8<512> modifiedTypeTemp;
+	TPtrC8 actionTypeTemp;
+	TPtrC8 actionType;
+	TPtrC8 TempType;
+	
+	
+	iActionType.Set(Tefinput::ParseNthElement(aInput,actionTypePos,err));
+	if (err == KErrNone)
+		{
+		modifiedType.Copy(iActionType);
+		modifiedType.Copy(Tefinput::TrimActionType(modifiedType, aActionType));
+
+		iActionType.Set(aActionType);
+		}
+	else
+		{
+		aOut.writeString(_L("Error couldn't find actiontype in test case spec"));
+		aOut.writeNewLine();
+		return err;
+		}
+
+	
+
+	iTefScript = tefFile;
+
+
+	
+	
+	return KErrNone; 
+	}
+
+
+void TTestActionSpec::HardcodedInit(const TDesC8& aInput)
+	{
+	iActionName.Set(aInput);
+	iActionType.Set(KNullDesC8);
+	iActionGroup.Set(KNullDesC8);
+	iActionBody.Set(KNullDesC8);
+	iActionResult.Set(KNullDesC8);
+	}