--- /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