diff -r 7fdc9a71d314 -r 8ad140f3dd41 stif/TestCombiner/inc/TestCase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stif/TestCombiner/inc/TestCase.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,601 @@ +/* +* Copyright (c) 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 header file of the CTCTestCase +* and TTCTestModule. +* +*/ + +#ifndef TESTCASE_H +#define TESTCASE_H + +// INCLUDES +#include +#include +#include +#include "TestCaseNotify.h" + +// CONSTANTS +// None + +// MACROS +// None + +// DATA TYPES +// None + +// FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +class CTestCombiner; + +// CLASS DECLARATION + +// DESCRIPTION +// CTestCase is a parent class for the test case runner in TestCombiner. +NONSHARABLE_CLASS(CTestCase) + :public CActive + { + public: // Enumerations + enum TTestCaseStatus + { + ETestCaseIdle, + ETestCaseRunning, + ETestCaseCompleted + }; + + enum TCaseType + { + ECaseLocal, + ECaseRemote, + }; + + private: // Enumerations + + public: // Destructor + /** + * Destructor. + */ + virtual ~CTestCase(); + + public: // New functions + /** + * Calls SetActive() from CActive. + */ + virtual void StartL(); + + /** + * Get state of the test case. + */ + TTestCaseStatus State(){ return iState; } + + /** + * Get reference to TestId. + */ + const TDesC& TestId(){ return *iTestId; } + + /** + * Get expected result. + */ + TInt ExpectedResult(){ return iExpectedResult; } + + /** + * Get expected result category. + */ + TFullTestResult::TCaseExecutionResult + ExpectedResultCategory(){ return iExpectedResultCategory; } + + /** + * Get test case type. + */ + TCaseType Type(){ return iType; } + + //--PYTHON-- begin + /** + * Get TestModule. + */ + CTCTestModule* TestModule(void){ return iTestModule; } + //--PYTHON-- end + + /** + * Checks state and additional conditions + */ + virtual TBool IsCompletelyFinished(void); + + public: // Functions from base classes + + /** + * RunL derived from CActive handles the completed requests. + */ + void RunL(); + + /** + * DoCancel derived from CActive handles the Cancel + */ + void DoCancel(); + + protected: // New functions + + /** + * Completes testcase. + */ + virtual void Complete( TInt aError ); + + protected: // Constructors + /** + * C++ default constructor. + */ + CTestCase( CTestCombiner* testCombiner, + TInt aExpectedResult, + TFullTestResult::TCaseExecutionResult aCategory, + TCaseType aType, + CTCTestModule* aModule ); //--PYTHON-- + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL( TDesC& aTestId ); + + private: + + public: // Data + + // Test case result + TFullTestResult iResult; + + protected: // Data + // Test case type + TCaseType iType; + + // Backpointer + CTestCombiner* iTestCombiner; + + // Internal state + TTestCaseStatus iState; + + // Unique test id + HBufC* iTestId; + + // Expected result for the test case + TInt iExpectedResult; + + // Expected result category + TFullTestResult::TCaseExecutionResult iExpectedResultCategory; + + private: // Data + //--PYTHON-- begin + CTCTestModule* iTestModule; + //--PYTHON-- end + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + friend class CTestRunner; + + }; + +// CLASS DECLARATION + +// DESCRIPTION +// CTCTestCase handles the running of a single testcase in TestCombiner. + +NONSHARABLE_CLASS(CTCTestCase) + :public CTestCase + { + public: // Enumerations + + private: // Enumerations + + public: // Constructors and destructor + /** + * Two-phased constructor. + */ + static CTCTestCase* NewL( CTestCombiner* testCombiner, + TDesC& aModuleName, + TDesC& aTestId, + TInt aExpectedResult, + TFullTestResult::TCaseExecutionResult aCategory, + const TDesC& aTestCaseArguments, + CTCTestModule* aModule ); //--PYTHON-- + + /** + * Destructor. + */ + ~CTCTestCase(); + + public: // New functions + /** + * Calls SetActive() from CActive. + */ + void StartL(); + + /** + * Get reference to ModuleName. + */ + const TDesC& ModuleName(){ return *iModuleName; } + + /** + * Get test case arguments + */ + const TDesC& TestCaseArguments() const; + + /** + * Get reference to RTestExecution. + */ + RTestExecution& TestExecution(){ return iTestExecution; } + + /** + * Get reference to event array. + */ + RPointerArray& EventArray(){ return iEventArray; } + + /** + * Get reference to state event array. + */ + RPointerArray& StateEventArray(){ return iStateEventArray; } + + /** + * Final complete of the testcase. + */ + void Complete2(); + + /** + * Checks state and progress notifier + */ + TBool IsCompletelyFinished(void); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + /** + * DoCancel derived from CActive handles the Cancel + */ + void DoCancel(); + + private: + /** + * C++ default constructor. + */ + CTCTestCase( CTestCombiner* testCombiner, + TInt aExpectedResult, + TFullTestResult::TCaseExecutionResult aCategory, + CTCTestModule* aModule ); //--PYTHON-- + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL( TDesC& aModuleName, TDesC& aTestId, const TDesC& aTestCaseArguments ); + + /** + * Start complete the testcase(Complete2 make the final complete). + */ + void Complete( TInt aError ); + + public: // Data + // Test case result package + TFullTestResultPckg iResultPckg; + + protected: // Data + + private: // Data + + // Progress notifier + CTestProgressNotifier* iProgress; + + // Event notifier + CTestEventNotifier* iEvent; + + // Module name + HBufC* iModuleName; + + // Test case arguments + HBufC* iTestCaseArguments; + + // Handle to test case execution + RTestExecution iTestExecution; + + // Event array for events requested by test case + RPointerArray iEventArray; + + // Event array for state events set by test case + RPointerArray iStateEventArray; + + // Command notifier + CTestCommandNotifier* iCommand; + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + }; + + +// CLASS DECLARATION + +// DESCRIPTION +// Testcase starting information +NONSHARABLE_CLASS(CRemoteTestCase) + :public CTestCase + { + + public: // Enumerations + enum TRemoteState + { + ECaseIdle, + ECaseRunSent, + ECaseRunning, + ECasePauseSent, + ECasePaused, + ECaseResumeSent, + ECaseCancelSent, + ECaseCancelled, + ECaseCompleted, + }; + + private: // Enumerations + + public: // Constructors and destructor + /** + * Two-phased constructor. + */ + static CRemoteTestCase* NewL( CTestCombiner* testCombiner, + TDesC& aTestId, + TInt aExpectedResult, + TFullTestResult::TCaseExecutionResult + aCategory ); + + /** + * Destructor. + */ + ~CRemoteTestCase(); + + public: // New functions + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + /** + * C++ default constructor. + */ + CRemoteTestCase( CTestCombiner* testCombiner, + TInt aExpectedResult, + TFullTestResult::TCaseExecutionResult aCategory ); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL( TDesC& aTestId ); + + public: // Data + // Remote slave state + TRemoteState iRemoteState; + + // Slave identifier + TUint32 iSlaveId; + + // Free slave after completed + TBool iFreeSlave; + + protected: // Data + + private: // Data + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + }; + +// CLASS DECLARATION + +// DESCRIPTION +// CRemoteSendReceive handles the running of an asynchronous 'sendreveive' +// in TestCombiner. +// Note: If want to improve sendreceive for allowing use like 'run' +// then this must inherit from CActive +NONSHARABLE_CLASS(CRemoteSendReceive) :public CBase + { + public: // Enumerations + + public: // Enumerations + enum TRemoteState + { + ECaseSend, + ECaseCompleted, + }; + + private: // Enumerations + + public: // Constructors and destructor + /** + * Two-phased constructor. + */ + static CRemoteSendReceive* NewL( CTestCombiner* aTestCombiner ); + + /** + * Destructor. + */ + ~CRemoteSendReceive(); + + public: // Constructors and destructor + + public: // New functions + + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + /** + * C++ default constructor. + */ + CRemoteSendReceive( CTestCombiner* aTestCombiner ); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + + public: // Data + + // Remote slave state + TRemoteState iRemoteState; + + // Slave identifier + TUint32 iSlaveId; + + protected: // Data + + private: // Data + + // Backpointer + CTestCombiner* iTestCombiner; + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + }; + +// CLASS DECLARATION + + +// DESCRIPTION +// TTCTestModule encapsulates information about loaded test module. + +NONSHARABLE_CLASS(CTCTestModule) + :public CBase + { + public: // Enumerations + + private: // Enumerations + + public: // Constructors and destructor + /** + * Two-phased constructor. + */ + static CTCTestModule* NewL( CTestCombiner* testCombiner, + TDesC& aModule, + TDesC& aIni, + const TDesC& aConfigFile ); + + /** + * Destructor. + */ + ~CTCTestModule(); + + public: // Constructors and destructor + + public: // New functions + /** + * Get module name. + */ + const TDesC& ModuleName(){ return *iModuleName; } + + /** + * Get module inifile name. + */ + const TDesC& IniFile(){ return *iIniFile; } + + /** + * Get reference to RTestServer. + */ + RTestServer& TestServer(){ return iTestServer; } + + /** + * Get reference to RTestModule. + */ + RTestModule& TestModule(){ return iTestModule; } + + /** + * Get test cases from module. + */ + void GetTestCasesForCombiner(const TDesC& aConfigFile); + + /** + * Get index of given test case. + */ + TInt GetCaseNumByTitle(TDesC& aTitle, TInt& aCaseNum); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + /** + * C++ default constructor. + */ + CTCTestModule( CTestCombiner* testCombiner ); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL( TDesC& aModule, + TDesC& aIni, + const TDesC& aConfigFile ); + + public: // Data + + protected: // Data + + private: // Data + // Backpointer + CTestCombiner* iTestCombiner; + + // Module name + HBufC* iModuleName; + // Module initialization file + HBufC* iIniFile; + + // Handle to test server + RTestServer iTestServer; + // Handle to module + RTestModule iTestModule; + + // Error notifier + CTestErrorNotifier* iErrorPrinter; + + // Array of test cases used to find test case number by title + CFixedFlatArray* iTestCases; + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + }; + +#endif // TESTCASE_H + +// End of File