diff -r 000000000000 -r bde4ae8d615e os/ossrv/lowlevellibsandfws/pluginfw/Test_Bed/inc/ComponentTester.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/lowlevellibsandfws/pluginfw/Test_Bed/inc/ComponentTester.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,250 @@ +// Copyright (c) 1997-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 file contains the definition of the class CComponentTester +// This file comment is for DOxygen only and is ignored by EDoc. +// +// + +/** + @test +*/ + +#ifndef __COMPONENTTESTER_H__ +#define __COMPONENTTESTER_H__ + +#include +#include + +#include +#include +#include +#include + +class CDataLogger; + +/** + @internalAll + @struct TTestInfo + Comments : Used by the UI component to pass in a list of the tests which are to run + with information about each one. + */ + +struct TTestInfo + { +/** The zero-based component Id based on the list passed out from + CTestController::FindComponents */ + + TInt iComponentId; +/** The zero-based unit test Id within the above component */ + + TInt iUnitTestId; +/** The time at which this unit test should be scheduled to run */ + + TTimeIntervalMicroSeconds32 iRunTime; +/** Parameter block which is to be passed to the unit test */ + + TAny* iParameters; + }; + + +// Global function typedef declaration of function provided by a test module of the component +// under test and is used as an entry point to kick start test bed. Provided as argument to CTestController. +typedef CComponentTester* (*ComponentTesterInitialiserLC)(CDataLogger&, MComponentTestObserver&); + + +/** + @internalAll + Comments : Abstract class from which developers can derive their own component testing + classes. To write a derived class just implement a NewLC() and a ConstructL() from + which ComponentTesterConstructL() should be the first thing called. + */ + +class CComponentTester : public CActive, public MUnitTestObserver + { +public: +/** + @fn ~CComponentTester() + Intended Usage : Standardized virtual destruction method + @since 7.0 + */ + + IMPORT_C ~CComponentTester(); + +/** + @fn IMPORT_C virtual void TestComponent(RPointerArray* aTests) + Intended Usage : Called to perform a full test of the component. Runs the listed + tests or all unit tests if aTests == 0 + Error Condition : + @since 7.0 + @param aTests The list of tests to run, 0 means run all tests + @pre This CComponentTester is fully initialized + @post All unit tests will be set up to run + */ + + IMPORT_C virtual void TestComponent(RPointerArray* aTests); + +/** + @fn IMPORT_C RPointerArray* TransitionSetsL() const + Intended Usage : Called to provide a list of the transition sets in this component test. + Ownership of the array is passed to the calling object. + Error Condition : + @since 7.0 + @return RPointerArray* Information on the unit tests contained + in this component. Ownership of the array is passed to the calling object. + @pre None + */ + + IMPORT_C RPointerArray* TransitionSetsL() const; + +/** + @fn IMPORT_C void Complete(CUnitTest* aUnitTest) + Intended Usage : Used, by the observed unit test, to indicate that the + test has completed + Error Condition : + @since 7.0 + @param aUnitTest The unit test which has completed. + @pre None + @post If this was the last unit test then iObserver is informed that this + component is complete. + */ + + IMPORT_C void Complete(CUnitTest* aUnitTest); + +/** + @fn IMPORT_C void SetRtest(RTest* aRTest) + Intended Usage : Used by Controller or Manager to initialise the iRTest + attribute of the component & unit test objects in t + Error Condition : + @since 7.0s + @param aRTest Pointer to RTest object + @pre None + @post None + */ + IMPORT_C void SetRTest(RTest* aRTest); + +protected: +/** + @fn IMPORT_C CComponentTester(CDataLogger& aDataLogger, + MComponentTestObserver& aObserver) + Intended Usage : Default Constructor + @since 7.0 + @param aDataLogger Used for file logging capability + @param aObserver To inform of completion of all tests + */ + IMPORT_C CComponentTester(CDataLogger& aDataLogger, MComponentTestObserver& aObserver); + +/** + @fn IMPORT_C void AddUnitTestL(const CUnitTest* aUnitTest) + Intended Usage : Used by derived class to add UnitTests to the list + Error Condition : + @since 7.0 + @param aUnitTest The UnitTest to be added + @pre None + @post The specified unit test is added to the list of tests to be executed. + */ + + IMPORT_C void AddUnitTestL(const CUnitTest* aUnitTest); + +/** + @fn IMPORT_C void AddParamUnitTestL(const CUnitTest* aUnitTest) + Intended Usage : Used by derived classes to add UnitTests which can only be run when + they are supplied with parameters from the UI. + Error Condition : + @since 7.0 + @param aUnitTest The unit test to add to the list + @pre None + @post The specified unit test is added to the list of test to be executed and + is flagged as requiring parameters + */ + + IMPORT_C void AddParamUnitTestL(const CUnitTest* aUnitTest); + +/** + @fn IMPORT_C virtual void ConstructL() = 0 + Intended Usage : Standard two-phase construction method. To be implemented + in derived class + Error Condition : + @since 7.0 + @pre First phase of construction is complete + @post Object is fully constructed + */ + + IMPORT_C virtual void ConstructL() = 0; + +/** + @fn IMPORT_C void ComponentTesterConstructL() + Intended Usage : Must be called by derived class ConstructL() to perform base class + initialisation. + Error Condition : + @since 7.0 + @pre None + @post Object is fully constructed + */ + + IMPORT_C void ComponentTesterConstructL(); + +/** + @fn IMPORT_C void RunL() + Intended Usage : + Error Condition : + @since 7.0 + @pre This CComponentTester is fully constructed + @post One of the CUnitTest contained in this CComponentTester has been run + */ + + IMPORT_C void RunL(); + +/** + @fn IMPORT_C void DoCancel() + Intended Usage : + Error Condition : + @since 7.0 + @pre This CComponentTester is fully constructed. + @post Any outstanding asynchronous requests are cancelled. + */ + + IMPORT_C void DoCancel(); + +protected: +/** List of all the unit tests which make up this component test*/ + + RPointerArray* iUnitTests; +/** The test logging mechanism*/ + + CDataLogger& iDataLogger; +/** The observer to inform when we have completed the test */ + + MComponentTestObserver& iObserver; +/** The index of the unittest which is to be run next */ + + TInt iCurrentUnitTest; +/** The list of tests to run, NULL means run all tests. We take ownership of the list but + not the items on it.*/ + + RPointerArray* iUnitTestsToRun; +/** A list of the test which cannot run without a parameter set from the UI */ + + RArray iParameterizedTests; +/** A placeholder which is only used to ensure correct object cleanup when + TransitionSetsL() leaves */ + + mutable RPointerArray* iTransitionSets; +/** Optional reference to the RTest object used in the EXE test harness code which + kicked off this test framework */ + RTest* iRTest; + + friend class TComponentTester_StateAccessor; + }; + +#endif