diff -r 000000000000 -r 2c201484c85f cryptomgmtlibs/securitytestfw/test/testhandler2/t_testhandler.h --- /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 +#include + +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 iFailedTests; + /** + * After completion of the series of tests, this array contains the names of + * the failed tests. + */ + RPointerArray iFailedTestNames; + /** + * After completion of the series of tests, this array contains the names + * of tests that failed because of known defects */ + + RPointerArray 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