testexecfw/tef/utils/inc/testexecutestepbase.h
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/tef/utils/inc/testexecutestepbase.h	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2005-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:  
+* This contains CTestStep which is the base class for all test steps.
+*
+*/
+
+
+
+/**
+ @file TestExecuteStepBase.h
+*/
+#if (!defined __TESTEXECUTE_STEP_BASE_H__)
+#define __TESTEXECUTE_STEP_BASE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <iniparser.h>
+#include <test/testexecutelogger.h>
+#include <test/testexecuteclient.h>
+#include <test/tefshareddata.h>
+#include <test/testshareddata.h>
+
+class CTestStep : public CBase
+/**
+@publishedPartner
+@test
+*/
+	{
+public:
+	// Destructor
+	IMPORT_C virtual ~CTestStep();
+
+	// Get methods to read values from the ini file
+	IMPORT_C TBool GetBoolFromConfig(const TDesC& aSectName,const TDesC& aKeyName,TBool& aResult);
+	IMPORT_C TBool GetIntFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TInt& aResult);
+	IMPORT_C TBool GetStringFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TPtrC& aResult);
+
+	// Set a user-friendly test step name referred for a test step object from the script file
+	IMPORT_C void SetTestStepName(const TDesC& aStepName);
+
+	IMPORT_C TBool GetHexFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TInt& aResult);
+	
+	// Set the actual test step error obtained to execution of test step to compare the expected error with the actual
+	IMPORT_C void SetTestStepError(const TInt& aErrorCode);
+
+	// Write methods to write values into ini file
+	IMPORT_C TBool WriteIntToConfig(const TDesC& aSectName, const TDesC& aKeyName, const TInt& aValue);
+	IMPORT_C TBool WriteStringToConfig(const TDesC& aSectName, const TDesC& aKeyName, const TPtrC& aValue);
+	IMPORT_C TBool WriteBoolToConfig(const TDesC& aSectName, const TDesC& aKeyName, const TBool& aValue);
+	IMPORT_C TBool WriteHexToConfig(const TDesC& aSectName, const TDesC& aKeyName, const TInt& aValue);
+
+	//Updates the data to the shared data name passed either in Copy Mode/Append Mode
+	IMPORT_C void WriteSharedDataL(const TDesC& aShareName, TDesC& aSharedDataVal, TModeCopy aModeCopy = ESetText);
+	//Reads the data from the specified shared data object
+	IMPORT_C void ReadSharedDataL(const TDesC& aShareName, TDes& aSharedDataVal);
+
+	// Initialise the test step during cnstruction
+	void InitialiseL(const TDesC& aStepArgs, const TDesC& aServerName, TBool& aSharedDataMode);
+
+	// Initialises logger instance for the test step
+	void SetLoggerL();
+
+	// Closes the logger instance for the test step
+	void CloseLogger();
+
+	// Returns the section name specified in the script file for the current test step execution
+	inline TDes& ConfigSection() {return iSection;};
+
+	// Set the result of test step execution  to one of the TVerdict enum codes
+	inline void SetTestStepResult(TVerdict aVerdict) {iTestStepResult = aVerdict;};
+
+	// Returns the test step result at any point during execution of test step
+	inline TVerdict TestStepResult() const {return iTestStepResult;};
+
+	// Logger interface used for constructing result strings to be fed for the logger instance
+	inline CTestExecuteLogger& Logger() {return *iLogger;};
+
+	// Returns the user-friendly test step name
+	inline const TDesC& TestStepName() const {return iTestStepName;};
+
+	// Returns any error code set during the test step execution
+	inline const TInt& TestStepError() const {return iTestStepError;};
+
+	// Returns the boolean true of !OOM option is set from the script file, false otherwise
+	inline TBool& ShouldRunOOMTest() {return iOOMRequestStatus;};
+
+	// Returns true if test server is loaded using -SharedData mode from the script file
+	inline TBool& IsSharedDataMode() {return iSharedDataMode;};
+
+	// Returns the loop index of the current loop if the test runs within a START_REPEAT/EN_REPEAT block
+	// Returns -1 if test is not within a loop
+	inline TInt GetLoopIndex() {return iLoopIndex;};
+
+	// Returns the setup value set using !Setup TEF parameter within the script file
+	// Returns a value 0 if !Setup TEF parameter is not used
+	inline TInt GetSetupState() {return iSetupParamValue;};
+
+	// Returns the drive name from which the current script file is executed
+	inline TDriveName ScriptDriveName() { return iScriptDriveName;};
+
+	// Returns reference to the iEnableIniAccessLog bool which can be used by tests to switch off ini access logging on the run
+	inline TBool& IniAccessLog() { return iEnableIniAccessLog; };
+
+	// Returns the default system drive letter provided by call to RFs::GetSystemDrive()
+	inline TDriveName GetSystemDrive() { return iSystemDriveForTest; };
+
+	// Test Step virtuals - Test Implementation methods
+	IMPORT_C virtual enum TVerdict	doTestStepL() = 0;
+	IMPORT_C virtual enum TVerdict	doTestStepPreambleL();
+	IMPORT_C virtual enum TVerdict	doTestStepPostambleL();
+
+	// Setting simulated OOM and testing whether the code under test reached the simulated failure
+	IMPORT_C virtual void SetHeapFailNext(TInt aFailureIndex);
+	IMPORT_C virtual void ResetHeapFailNext();
+	IMPORT_C virtual TBool CheckForHeapFailNext();
+	
+	// LEGACY methods
+	IMPORT_C void testBooleanTrue(TBool aCondition, const TText8* aFile, TInt aLine);
+	IMPORT_C void testBooleanTrue(TBool aCondition, const TText8* aFile, TInt aLine, TBool IgnoreStepResult);
+	IMPORT_C void testBooleanTrueL(TBool aCondition, const TText8* aFile, TInt aLine);
+	IMPORT_C void testBooleanTrueL(TBool aCondition, const TText8* aFile, TInt aLine, TBool IgnoreStepResult);
+	IMPORT_C void testBooleanTrueWithErrorCode(TBool aCondition, TInt aErrorCode, const TText8* aFile, TInt aLine );
+	IMPORT_C void testBooleanTrueWithErrorCode(TBool aCondition, TInt aErrorCode, const TText8* aFile, TInt aLine, TBool IgnoreStepResult);
+	IMPORT_C void testBooleanTrueWithErrorCodeL(TBool aCondition, TInt aErrorCode,
+													const TText8* aFile, TInt aLine );
+	IMPORT_C void testBooleanTrueWithErrorCodeL(TBool aCondition, TInt aErrorCode,
+													const TText8* aFile, TInt aLine, TBool IgnoreStepResult );
+	IMPORT_C void TestCheckPointCompareL(TInt aVal, TInt aExpectedVal, const TDesC& aText, const TText8* aFile, TInt aLine);
+
+	// Retrieve the server name
+	IMPORT_C const TDesC& GetServerName() const;
+
+	// Retrieve the test case name/id
+	IMPORT_C TBool TestCaseName(TDes& aTestCaseName);
+
+protected:
+	IMPORT_C CTestStep();
+public:
+	IMPORT_C TBool GetIntFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TInt64& aResult);
+	IMPORT_C TBool WriteIntToConfig(const TDesC& aSectName, const TDesC& aKeyName, const TInt64& aValue);
+private:
+	void LoadConfigFileL(const TDesC& aFilePath);
+private:
+	CTestExecuteLogger*					iLogger;
+	TVerdict							iTestStepResult;
+	TBuf<KMaxTestExecuteNameLength>		iSection;
+	CIniData*							iConfigData;
+	TBuf<KMaxTestStepNameLength>	    iTestStepName;		// Name of the test step
+	TBuf<KMaxTestExecuteNameLength>		iServerName;		// Name of the test server
+	TInt								iTestStepError;		// Expected Test step Error
+	HBufC*								iIniFileName;		// Name of the inifile to be use for logging.
+	TBool								iOOMRequestStatus;	// Status of OOM request from user
+	TBool								iEnableIniAccessLog;// Testexecute.ini entry for logging INI access
+	TBool								iSharedDataMode;	// Flag representing -SharedData server mode
+	TInt								iSetupParamValue;	// TEFParameter !Setup value set in the script
+	TInt								iLoopIndex;			// Loop index of the current loop if test runs within a START_REPEAT
+	TBuf<KMaxTestExecuteNameLength>		iTestCaseID;		// Name/ID of the test case in which the current test step executes
+	TDriveName							iScriptDriveName;	// Drive name from where the script file is executed
+	TDriveName							iSystemDrive;		// Default System Drive name
+	TDriveName							iSystemDriveForTest;// System Drive name for Test artifacts
+
+	// Use this buffer when allocating additional memory for the class in future
+	// To avoid breaks with other depdenant comps
+	TBuf<KMaxTestStepNameLength>		iReserved4Future1;
+	TBuf<KMaxTestStepNameLength>		iReserved4Future2;
+	TBuf<KMaxTestStepNameLength>		iReserved4Future3;
+	TBuf<KMaxTestStepNameLength>		iReserved4Future4;
+	};
+
+// LEGACY
+// Autotest macros mapped to CTestStep functions
+
+// Check a boolean is true
+#define TESTL(a) testBooleanTrueL((a), (TText8*)__FILE__, __LINE__) 
+#define TEST(a)  testBooleanTrue((a), (TText8*)__FILE__, __LINE__) 
+
+// Versions that will always log irrespective of testcase pass
+#define TEST1L(a, b) testBooleanTrueL((a), (TText8*)__FILE__, __LINE__, (b) ) 
+#define TEST1(a, b)  testBooleanTrue((a), (TText8*)__FILE__, __LINE__, (b) ) 
+
+// Check a boolean is true if not return error code b
+#define TESTE(a, b) testBooleanTrueWithErrorCode((a), (b), (TText8*)__FILE__, __LINE__) 
+#define TESTEL(a, b) testBooleanTrueWithErrorCodeL((a), (b), (TText8*)__FILE__, __LINE__)  
+
+// Versions that will always log irrespective of testcase pass
+#define TESTE1(a, b, c) testBooleanTrueWithErrorCode((a), (b), (TText8*)__FILE__, __LINE__, (c) ) 
+#define TESTE1L(a, b, c) testBooleanTrueWithErrorCodeL((a), (b), (TText8*)__FILE__, __LINE__, (c) )  
+
+#define TEST_CHECKL(p1, p2, p3) TestCheckPointCompareL((p1), (p2), (p3), (TText8*)__FILE__, __LINE__)	
+// Leave error code
+#define TEST_ERROR_CODE 84	
+
+
+#endif