--- /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 <e32base.h>
+#include <stifinternal/TestServerClient.h>
+#include <StifTestModule.h>
+#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<CTestEventNotify>& EventArray(){ return iEventArray; }
+
+ /**
+ * Get reference to state event array.
+ */
+ RPointerArray<TEventIf>& 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<CTestEventNotify> iEventArray;
+
+ // Event array for state events set by test case
+ RPointerArray<TEventIf> 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<TTestCaseInfo>* iTestCases;
+
+ public: // Friend classes
+
+ protected: // Friend classes
+
+ private: // Friend classes
+
+ };
+
+#endif // TESTCASE_H
+
+// End of File