cryptomgmtlibs/securitytestfw/test/testhandler2/t_testhandler.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/testhandler2/t_testhandler.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,185 @@
+/*
+* 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: 
+*
+*/
+
+
+#ifndef __T_TESTHANDLER_H__
+#define __T_TESTHANDLER_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+class MTestSpec;
+class Output;
+class CTestHandlerSettings;
+class CTestSetup;
+class CTestAction;
+class CTestRunner;
+
+class TTestSummary
+	{
+public:
+	TTestSummary();
+	TBool AllTestsPassed();
+	void PrintL(Output& aOut);
+	
+public:
+	TInt iTestsRun;
+	TInt iTestsFailed;
+	};
+
+/**
+ * CTestHandler is the class which runs the tests, and outputs results
+ */
+class CTestHandler : public CBase
+	{
+public:
+	/*
+	* MTestSpec is the interface class, providing GetNextTest
+	* TTestHandlerSettings provides the command line switches
+	*
+	* 
+	*/
+
+	IMPORT_C static CTestHandler* NewLC(RFs& aFs, MTestSpec& aTestSpec, 
+										CTestHandlerSettings& aSettings,
+										CConsoleBase* aConsole,
+										Output* aOut);
+	~CTestHandler();
+
+private:
+	CTestHandler(RFs& aFs, MTestSpec& aTestSpec, CConsoleBase* aConsole,
+				 Output* aOut);
+	void ConstructL(CTestHandlerSettings& aSettings);
+
+public:
+    // API for test programs
+    
+	/// Run the test sequence
+	IMPORT_C void RunTestsL();
+
+    /**
+     * Set the test runner to use.  This object takes ownership.  Passing NULL
+     * means use the default test runner.
+     */
+    IMPORT_C void SetTestRunnerL(CTestRunner *aTestRunner);
+
+public:
+    // API for test actions
+
+	/// Access to shared data
+	CBase* SharedData() const;
+	void SetSharedData(CBase* aData);
+
+    /// Set the heap mark
+    void SetHeapMark(TInt aAllocCount);
+
+    /// Get the heap mark
+    TInt HeapMark();
+
+	/// Get the count of tests run/failed
+	TTestSummary Summary();
+
+private:
+    /// The different possible locations a test can fail in.
+    enum TTestFailLocation
+        {
+        EFailInTestHandler,
+        EFailInPrerequisite,
+        EFailInAction
+        };
+
+    /// Get the human readable name for a fail location
+    const TDesC& GetFailLocationName(TTestFailLocation aLoc);
+
+private:
+    /**
+     * Run one test.  Called repeatedly by RunTestsL().
+     */
+	void RunTestL(CTestAction* aAction);
+    /**
+     * Record a test failure. 
+     */
+    void FailTestL(CTestAction* aAction, TTestFailLocation aLoc, TInt aErr);
+	/**
+	 * Add a test to the list of failed tests.
+	 */
+	void AppendFailedTestL(TInt aIndex, const TDesC8& aName);
+
+private:
+	/**
+	 * This function prints the number of tests passed, failed, etc at the end of
+	 * the test series.
+	 */
+	void DisplaySummary();
+
+private:
+	/**
+	 * Used by the test handler itself and the iManager
+	 */
+	RFs& iFs;
+
+	/**
+	 * The settings that define the behaviour of the handler.
+	 */
+	CTestHandlerSettings *iSettings;
+
+	CConsoleBase* iConsole;
+	Output* iOut;
+
+	CTestSetup* iTestSetup;
+	CActiveScheduler* iScheduler;
+
+	MTestSpec& iTestSpec;
+
+	TInt iActionNumber;
+	TInt iActionCount;
+	
+	/**
+	 * After completion of the series of tests, this array contains the numbers of
+	 * the failed tests.
+	 */
+	RArray<TInt> iFailedTests;
+	/**
+	 * After completion of the series of tests, this array contains the names of
+	 * the failed tests.
+	 */
+	RPointerArray<HBufC> iFailedTestNames;
+	/**
+	 * After completion of the series of tests, this array contains the names
+	 * of tests that failed because of known defects	 */
+
+	RPointerArray<HBufC> iKnownDefects;
+
+	/**
+	 * Pointer to shared data.  This is initially NULL.  It can be accessed by
+	 * any of the test actions.  If it is not NULL when this class is destroyed,
+	 * it is deleted.
+	 */
+	CBase* iSharedData;
+
+    /// Pointer to the current test runner.  We own this.
+    CTestRunner* iTestRunner;
+
+    /// Pointer to the test runner to install when we've finished the current
+    /// test.  We own this.
+    CTestRunner* iNextTestRunner;
+
+    /// The heap mark, used by heap mark actions 
+    TInt iHeapMark;
+	};
+
+#endif