diff -r 3406c99bc375 -r 07b41fa8d1dd stif/TestCombiner/src/TestCase.cpp --- a/stif/TestCombiner/src/TestCase.cpp Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1207 +0,0 @@ -/* -* 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 module contains the implementation of -* CTestCase class member functions. -* -*/ - -// INCLUDE FILES -#include "TestCombiner.h" -#include "TestCase.h" -#include "TestCaseNotify.h" -#include "Logging.h" -#include "StifPython.h" - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -#ifdef LOGGER -#undef LOGGER -#endif -#define LOGGER iTestCombiner->iLog - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: CTestCase - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: CTestCombiner* testCombiner: in: Backpointer to CTestCombiner - TDesC& aModuleName: in: name of the used test module - TDesC& aTestId: in: TestId for testcase - TInt aExpectedResult: in: expected result for the testcase - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ - -CTestCase::CTestCase( CTestCombiner* testCombiner, - TInt aExpectedResult, - TFullTestResult::TCaseExecutionResult aCategory, - TCaseType aType, - CTCTestModule* aModule ): //--PYTHON - CActive( CActive::EPriorityStandard ), - iType( aType ), - iTestCombiner( testCombiner ), - iState( ETestCaseIdle ), - iExpectedResult( aExpectedResult ), - iExpectedResultCategory( aCategory ), - iTestModule( aModule ) //--PYTHON - { - - CActiveScheduler::Add( this ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: TDesC& aTestId: in: Test identifier - - Return Values: None. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -void CTestCase::ConstructL( TDesC& aTestId ) - { - __ASSERT_ALWAYS( aTestId.Length() < KMaxFileName, User::Leave( KErrArgument ) ); - iTestId = aTestId.AllocL(); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: ~CTestCase - - Description: Destructor - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CTestCase::~CTestCase() - { - - Cancel(); - delete iTestId; - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: RunL - - Description: Derived from CActive. Handles the completed testcase. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: Leaves if completed with error. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -void CTestCase::RunL() - { - __TRACE( KMessage, ( _L("CTestCase::RunL: [%d] "), iStatus.Int() )); - - Complete( iStatus.Int() ); - - __TRACE( KMessage, ( _L( "CTestCase::RunL: Testcase completed" ))); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: DoCancel - - Description: Derived from CActive, handles the Cancel. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTestCase::DoCancel() - { - __TRACE( KMessage, ( _L("CTestCase::DoCancel"))); - - TRequestStatus* rs = &iStatus; - User::RequestComplete( rs, KErrCancel ); - Complete( KErrCancel ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: Start - - Description: Start progress and event notifiers and set CTestCase active. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTestCase::StartL() - { - - iState = ETestCaseRunning; - iStatus = KRequestPending; - SetActive(); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: Complete - - Description: Completes testcase to CTestCombiner. - - Parameters: TInt aError: in: Completion error - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTestCase::Complete( TInt aError ) - { - - __TRACE( KMessage, ( _L("CTestCase::Complete: %d "), aError )); - iState = ETestCaseCompleted; - - iTestCombiner->Complete( this, aError ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTestCase - - Method: IsCompletelyFinished - - Description: Checks state. - - Parameters: None - - Return Values: TBool. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TBool CTestCase::IsCompletelyFinished(void) - { - TBool result = (iState == CTestCase::ETestCaseCompleted); - return result; - } - -/* -------------------------------------------------------------------------------- - - DESCRIPTION - - This module contains the implementation of CTCTestCase class - member functions. - -------------------------------------------------------------------------------- -*/ - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: CTCTestCase - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: CTestCombiner* testCombiner: in: Backpointer to CTestCombiner - TDesC& aModuleName: in: name of the used test module - TDesC& aTestId: in: TestId for testcase - TInt aExpectedResult: in: expected result for the testcase - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CTCTestCase::CTCTestCase( CTestCombiner* testCombiner, - TInt aExpectedResult, - TFullTestResult::TCaseExecutionResult aCategory, - CTCTestModule* aModule ): //--PYTHON - CTestCase( testCombiner, aExpectedResult, aCategory, ECaseLocal, aModule ), //--PYTHON - iResultPckg( iResult ) - { - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -void CTCTestCase::ConstructL( TDesC& aModuleName, - TDesC& aTestId, - const TDesC& aTestCaseArguments ) - { - __ASSERT_ALWAYS( aModuleName.Length() < KMaxFileName, User::Leave( KErrArgument ) ); - CTestCase::ConstructL( aTestId ); - iModuleName = aModuleName.AllocL(); - iTestCaseArguments = aTestCaseArguments.AllocL(); - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: NewL - - Description: Two-phased constructor. - - Parameters: CTestCombiner* testCombiner: in: Backpointer to CTestCombiner - - Return Values: CTCTestCase*: pointer to new CTCTestCase object - - Errors/Exceptions: Leaves if new or ConstructL leaves. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CTCTestCase* CTCTestCase::NewL( CTestCombiner* testCombiner, - TDesC& aModuleName, - TDesC& aTestId, - TInt aExpectedResult, - TFullTestResult::TCaseExecutionResult aCategory, - const TDesC& aTestCaseArguments, - CTCTestModule* aModule ) //--PYTHON - { - CTCTestCase* self = new (ELeave) CTCTestCase( testCombiner, - aExpectedResult, - aCategory, - aModule ); //--PYTHON - - CleanupStack::PushL( self ); - self->ConstructL( aModuleName, aTestId, aTestCaseArguments ); - CleanupStack::Pop(); - return self; - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: ~CTCTestCase - - Description: Destructor - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CTCTestCase::~CTCTestCase() - { - Cancel(); - - delete iEvent; - - // Unset all set events - TInt count = iStateEventArray.Count(); - TInt i = 0; - for( i = 0; i < count; i++ ) - { - if( iStateEventArray[i] != NULL ) - { - iStateEventArray[i]->SetType( TEventIf::EUnsetEvent ); - } - if( iTestCombiner != NULL ) - { - iTestCombiner->TestModuleIf().Event( *iStateEventArray[i] ); - } - } - iStateEventArray.ResetAndDestroy(); - iStateEventArray.Close(); - - // to be sure.. - count = iEventArray.Count(); - TEventIf event; - for( i = 0; i < count; i++ ) - { - event.Copy( iEventArray[i]->Event() ); - event.SetType( TEventIf::ERelEvent ); - if( iTestCombiner != NULL ) - { - iTestCombiner->TestModuleIf().Event( event ); - } - } - - - iEventArray.ResetAndDestroy(); - iEventArray.Close(); - - delete iProgress; - delete iModuleName; - delete iTestCaseArguments; - - delete iCommand; - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: TestCaseArguments - - Description: Get test case arguments - - Parameters: None. - - Return Values: Test case arguments. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -const TDesC& CTCTestCase::TestCaseArguments() const - { - if ( iTestCaseArguments !=NULL ) - { - return *iTestCaseArguments; - } - return KNullDesC; - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: DoCancel - - Description: Derived from CActive, handles the Cancel. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTCTestCase::DoCancel() - { - __TRACE( KMessage, ( _L("CTCTestCase::DoCancel"))); - iTestExecution.CancelAsyncRequest( ETestExecutionRunTestCase ); - Complete( KErrCancel ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: Start - - Description: Start progress and event notifiers and set CTCTestCase active. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTCTestCase::StartL() - { - iProgress = CTestProgressNotifier::NewL( iTestCombiner, this ); - iEvent = CTestEventNotifier::NewL( iTestCombiner, this ); - iCommand = CTestCommandNotifier::NewL(iTestCombiner, this); - iState = ETestCaseRunning; - SetActive(); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: Complete - - Description: Start complete the testcase to CTestCombiner (Complete2 make - the final complete). - - Parameters: TInt aError: in: Completion error - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTCTestCase::Complete( TInt aError ) - { - if( iState == ETestCaseRunning ) - { - // Testcase is in running state, complete and delete notifiers - if( aError != KErrNone ) - { - iResult.iTestResult.iResult = aError; - } - - iState = ETestCaseCompleted; - __TRACE( KMessage, ( _L("CTCTestCase::Complete: %d "), aError )); - - } - - if( iProgress->IsPrintProgressFinished() ) - { - // Print process is finished to UI => make final complete of - // the test case - Complete2(); - } - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: Complete2 - - Description: Testcase final complete to CTestCombiner. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTCTestCase::Complete2() - { - // to be sure.. - TInt count = iEventArray.Count(); - TEventIf event; - for( TInt i = 0; i < count; i++ ) - { - event.Copy( iEventArray[0]->Event() ); - event.SetType( TEventIf::ERelEvent ); - CTestEventNotify* eventEntry = iEventArray[0]; - iEventArray.Remove( 0 ); - delete eventEntry; - iTestCombiner->TestModuleIf().Event( event ); - } - - iEventArray.ResetAndDestroy(); - iEventArray.Close(); - - delete iEvent; - iEvent = NULL; - delete iProgress; - iProgress = NULL; - delete iCommand; - iCommand = NULL; - - iTestCombiner->Complete( this ); - - // Close execution handle - iTestExecution.Close(); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestCase - - Method: IsCompletelyFinished - - Description: Checks state and progress notifier. - - Parameters: None - - Return Values: TBool. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TBool CTCTestCase::IsCompletelyFinished(void) - { - TBool result = (iState == CTCTestCase::ETestCaseCompleted); - if(iProgress) - { - result = result && (iProgress->IsPrintProgressFinished()); - } - return result; - } - -/* -------------------------------------------------------------------------------- - - DESCRIPTION - - This module contains the implementation of CRemoteTestCase class - member functions. - -------------------------------------------------------------------------------- -*/ - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CRemoteTestCase - - Method: CRemoteTestCase - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: CTestCombiner* testCombiner: in: Backpointer to CTestCombiner - TInt aExpectedResult: in: expected result for the testcase - TFullTestResult::TCaseExecutionResult aCategory: in: - result category - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CRemoteTestCase::CRemoteTestCase( CTestCombiner* testCombiner, - TInt aExpectedResult, - TFullTestResult::TCaseExecutionResult aCategory ): - CTestCase( testCombiner, aExpectedResult, aCategory, ECaseRemote, NULL ), //--PYTHON - iRemoteState( ECaseIdle ), - iFreeSlave( EFalse ) - { - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteTestCase - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -void CRemoteTestCase::ConstructL( TDesC& aTestId ) - { - CTestCase::ConstructL( aTestId ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteTestCase - - Method: NewL - - Description: Two-phased constructor. - - Parameters: CTestCombiner* testCombiner: in: Backpointer to CTestCombiner - - Return Values: CRemoteTestCase*: pointer to new CRemoteTestCase object - - Errors/Exceptions: Leaves if new or ConstructL leaves. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CRemoteTestCase* CRemoteTestCase::NewL( CTestCombiner* testCombiner, - TDesC& aTestId, - TInt aExpectedResult, - TFullTestResult::TCaseExecutionResult - aCategory ) - { - CRemoteTestCase* self = new (ELeave) CRemoteTestCase( testCombiner, - aExpectedResult, - aCategory ); - - CleanupStack::PushL( self ); - self->ConstructL( aTestId ); - CleanupStack::Pop(); - return self; - - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteTestCase - - Method: ~CRemoteTestCase - - Description: Destructor - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CRemoteTestCase::~CRemoteTestCase() - { - } - -/* -------------------------------------------------------------------------------- - - DESCRIPTION - - This module contains the implementation of CTCTestModule class - member functions. - -------------------------------------------------------------------------------- -*/ - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: CTCTestModule - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: TDesC& aModule: in: module name - TDesC& aIni: in: inifile name - - Return Values: None. - - Errors/Exceptions: None. - - Status: Approved - -------------------------------------------------------------------------------- -*/ -CTCTestModule::CTCTestModule( CTestCombiner* testCombiner ): - iTestCombiner( testCombiner ) - { - iTestCases = NULL; - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: TDesC& aModule: in: Module name. - TDesC& aIni: in: Inifile name. - const TDesC& aConfigFile: in: Test case(config) file name. - - Return Values: None. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -void CTCTestModule::ConstructL( TDesC& aModule, - TDesC& aIni, - const TDesC& aConfigFile ) - { - __TRACE( KMessage, ( _L("CTCTestModule::ConstructL [%S]"), &aModule)); - - __ASSERT_ALWAYS( aModule.Length() < KMaxFileName, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( aIni.Length() < KMaxFileName, User::Leave( KErrArgument ) ); - iModuleName = aModule.AllocL(); - iIniFile = aIni.AllocL(); - - TFileName ini = *iIniFile; - // Open handles - __TRACE( KMessage, ( _L("CTCTestModule: Server connect"))); - User::LeaveIfError( iTestServer.Connect( ModuleName(), aConfigFile ) ); - __TRACE( KMessage, ( _L("CTCTestModule: Module open"))); - User::LeaveIfError( iTestModule.Open( iTestServer, ini ) ); - - iErrorPrinter = CTestErrorNotifier::NewL( iTestCombiner, this ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: NewL - - Description: Two-phased constructor. - - Parameters: None - - Return Values: TDesC& aModule: in: Module name. - TDesC& aIni: in: Inifile name. - const TDesC& aConfigFile: in: Test case(config) file name. - - Errors/Exceptions: Leaves if ConstructL leaves - Leaves if memory allocation fails - Leaves if illegal arguments are given - - Status: Proposal - -------------------------------------------------------------------------------- -*/ - -CTCTestModule* CTCTestModule::NewL( CTestCombiner* testCombiner, - TDesC& aModule, - TDesC& aIni, - const TDesC& aConfigFile ) - { - CTCTestModule* self = new (ELeave) CTCTestModule( testCombiner ); - - CleanupStack::PushL( self ); - self->ConstructL( aModule, aIni, aConfigFile ); - CleanupStack::Pop(); - - return self; - - } - -/* - -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: ~CTCTestModule - - Description: Destructor - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Approved - -------------------------------------------------------------------------------- -*/ - -CTCTestModule::~CTCTestModule() - { - __TRACE( KMessage, ( _L("CTCTestModule::~CTCTestModule [%S]"), iModuleName)); - - // delete error printer - delete iErrorPrinter; - // Close handles - if( iTestServer.Handle() != 0 ) - { - iTestModule.Close(); - iTestServer.Close(); - } - delete iModuleName; - delete iIniFile; - delete iTestCases; - } - -/* -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: GetTestCasesForCombiner - - Description: Get array of test cases (used to find test case number by title) - - Parameters: const TDesC& aConfigFile: in: config file name. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CTCTestModule::GetTestCasesForCombiner(const TDesC& aConfigFile) - { - __TRACE(KMessage, (_L("Going to enumerate test cases for TestCombiner"))); - TName configFile(aConfigFile); - - // Enumerate test cases - TCaseCount caseCount; - TRequestStatus status; - iTestModule.EnumerateTestCases(configFile, caseCount, status); - User::WaitForRequest(status); - - // Check that enumerate succeeded - if(status != KErrNone) - { - __TRACE(KMessage, (_L("Enumerating test cases from module returned error. Status %d."), status.Int())); - return; - } - __TRACE(KMessage, (_L("Enumeration for TestCombiner returned %d cases"), caseCount())); - - // Get test cases to buffer - iTestCases = CFixedFlatArray::NewL(caseCount()); - - TInt ret = iTestModule.GetTestCases(*iTestCases); - if(ret != KErrNone) - { - __TRACE(KMessage, (_L("Getting test cases from module returned error %d."), ret)); - return; - } - - __TRACE(KMessage, (_L("Test cases for TestCombiner have been enumerated"))); - } - - -/* -------------------------------------------------------------------------------- - - Class: CTCTestModule - - Method: GetCaseNumByTitle - - Description: Finds test case index by title - - Parameters: TDesC& aTitle: in: test case title. - TInt& aCaseNum: in out: test case index - - Return Values: KErrNone if everything is ok - KErrNotFound if there is no such test case - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -TInt CTCTestModule::GetCaseNumByTitle(TDesC& aTitle, TInt& aCaseNum) - { - for(TInt i = 0; i < iTestCases->Count(); i++) - { - if((*iTestCases)[i].iTitle == aTitle) - { - aCaseNum = i; - //TestScripter relies on 1-based indexing - if((iModuleName->Find(KTestScripterName) != KErrNotFound) || (iModuleName->Find(KPythonScripter) != KErrNotFound) || (iModuleName->Find(KTestCombinerName) != KErrNotFound)) - aCaseNum++; - return KErrNone; - } - } - - return KErrNotFound; - } - -/* -------------------------------------------------------------------------------- - - DESCRIPTION - - This module contains the implementation of CRemoteSendReceive class - member functions. - -------------------------------------------------------------------------------- -*/ - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CRemoteSendReceive - - Method: CRemoteSendReceive - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -CRemoteSendReceive::CRemoteSendReceive( CTestCombiner* aTestCombiner ) : - iTestCombiner( aTestCombiner ) - { - // None - - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteSendReceive - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CRemoteSendReceive::ConstructL() - { - // None - - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteSendReceive - - Method: NewL - - Description: Two-phased constructor. - - Parameters: - - Return Values: CRemoteTestCase*: pointer to new CRemoteTestCase object - - Errors/Exceptions: Leaves if new or ConstructL leaves. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -CRemoteSendReceive* CRemoteSendReceive::NewL( CTestCombiner* aTestCombiner ) - { - CRemoteSendReceive* self = new (ELeave) CRemoteSendReceive( aTestCombiner ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - - } - -/* -------------------------------------------------------------------------------- - - Class: CRemoteSendReceive - - Method: ~CRemoteSendReceive - - Description: Destructor - - Parameters: None. - - Return Values: None. - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -CRemoteSendReceive::~CRemoteSendReceive() - { - // None - - } - -// End of File