mmtestenv/mmtestfw/Source/TestFramework/script.h
author Stefan Karlsson <stefan.karlsson@nokia.com>
Sun, 28 Mar 2010 16:40:21 +0100
branchCompilerCompatibility
changeset 10 faf4b9dea6fa
parent 0 40261b775718
permissions -rw-r--r--
Fixed "extra qualification" syntax errors.

// Copyright (c) 2002-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:
//

#ifndef __SCRIPT_H__
#define __SCRIPT_H__

/**
 *
 * File name / line buffer lengths
 *
 * @xxxx
 *
 */

class CParseLine;
class CFileName;

/**
 *
 * Script processor.
 * Reads, parses and executes the test script.
 *
 * @xxxx
 *
 */
class CScript : public CBase
	{
public:
	static CScript* NewL(CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);
	static CScript* NewL(CParseLine* aParse, CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);
	static CScript* NewLC(CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);
	static CScript* NewLC(CParseLine* aParse, CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);
	~CScript();	

	TBool OpenScriptFile(CFileName* aScriptFileName);		// read in a script file
	TVerdict ExecuteScriptL();						// parse and execute script 
	void DisplayResults();
	void AddResult(TVerdict aTestVerdict);
	void AddResult(CScript* aSubScript);
	void Pause();
	TBool BreakOnError();

	TBool iPauseAtEnd;
	// iMultThread removed - multithreading now standard

protected:
	CScript();
	void ConstructL(CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);
	void ConstructL(CParseLine* aParse, CTestUtils*, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString);

private:
	void ProcessLineL(const TDesC8& aNarrowline, TInt8 aLineNo);	// process a line of script
	void LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity,
		TRefByValue<const TDesC16> aFmt, ...);

private:
	// data members
	RFs		iTheFs;										// the file system
	HBufC8* iScriptBuffer;								// ptr to script file in memory
	TPath	iTheTestPath;								// test path

	// line parse object
	CParseLine* iParse;
	// flag indicates whether iParse is owned or not
	TBool	iParseOwner;

	// recursion count - static global 
// do not define static if Unit Testing
#if !defined (__TSU_TESTFRAMEWORK__)
	static TInt iScriptDepth;
#endif

	// log
	CLog* iLog;

	// default guard timer, if any
	TInt64 iGuardTimer;
	
	// matchString if any
	HBufC* iMatchString;

	// current results
	TInt	iPass;
	TInt	iFail;
	TInt	iInconclusive;
	TInt	iTestSuiteError;
	TInt	iAbort;
	TInt	iKnownFailure;
	TInt	iTotal;

	};

#endif // __SCRIPT_H__