diff -r 7fdc9a71d314 -r 8ad140f3dd41 stif/StifTFwIf/src/UIStoreContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stif/StifTFwIf/src/UIStoreContainer.cpp Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,906 @@ +/* +* 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 implementation of +* CStartedTestCase class member functions. +* +*/ + +// INCLUDE FILES +#include +#include + +#include +#include +#include +#include + +#include "Logging.h" + + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS +#ifdef LOGGER +#undef LOGGER +#endif +_LIT( KStartedTestCase, "CStartedTestCase" ); +_LIT( KStartedTestSet, "CStartedTestSet" ); + + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ==================== LOCAL FUNCTIONS ======================================= + +// None + +// ================= MEMBER FUNCTIONS ========================================= + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: NewL + + Description: Create a testcase container. + + Parameters: CTestInfo* aTestInfo: in: Test case info + CUIEngineContainer* aContainer: in: container + + Return Values: CStartedTestCase* : pointer to created object + + Errors/Exceptions: Leaves if memory allocation for object fails + Leaves if ConstructL leaves + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestCase* CStartedTestCase::NewL( const CTestInfo& aTestInfo, + CUIEngineContainer& aContainer ) + { + + CStartedTestCase* self = new ( ELeave ) CStartedTestCase( aContainer ); + CleanupStack::PushL( self ); + self->ConstructL( aTestInfo ); + CleanupStack::Pop( self ); + return self; + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: ConstructL + + Description: Second level constructor. + + Parameters: CTestInfo* aTestInfo: Test case info + + Return Values: None + + Errors/Exceptions: Leaves if CTestInfo copying fails + + Status: Draft + +------------------------------------------------------------------------------- +*/ +void CStartedTestCase::ConstructL( const CTestInfo& aTestInfo ) + { + + iTestInfo = CTestInfo::NewL(); + iTestInfo->CopyL( aTestInfo ); + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: CStartedTestCase + + Description: Constructor + + Parameters: None + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestCase::CStartedTestCase( CUIEngineContainer& aContainer ): + iContainer( &aContainer ), + iStatus( CUIStoreIf::EStatusRunning ) + { + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: CStartedTestCase + + Description: Private Constructor for internal use + + Parameters: CTestInfo* aTestInfo: in: new testinfo + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestCase::CStartedTestCase( CTestInfo* aTestInfo, + TFullTestResult aResult, + TInt aStatus ): + iContainer( 0 ), + iTestInfo( aTestInfo ), + iResult( aResult ), + iStatus( aStatus ) + { + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: ~CStartedTestCase + + Description: Destructor. + + Cancels the asynchronous request, deallocate memory and closes the testcase. + + Parameters: None + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestCase::~CStartedTestCase() + { + + delete iTestInfo; + iPrints.ResetAndDestroy(); + iPrints.Close(); + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: SetResult + + Description: Set the result + + Parameters: const TFullTestResult& :in: Result + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +void CStartedTestCase::SetResult(const TFullTestResult& aResult) + { + + iResult = aResult; + + iStatus = CUIStoreIf::EStatusExecuted; + + switch( aResult.iCaseExecutionResultType ) + { + case TFullTestResult::ECaseExecuted: + if( aResult.iTestResult.iResult == KErrNone ) + { + iStatus |= CUIStoreIf::EStatusPassed; + } + else + { + iStatus |= CUIStoreIf::EStatusFailed; + } + break; + case TFullTestResult::ECaseCancelled: + case TFullTestResult::ECaseTimeout: + case TFullTestResult::ECaseSuicided: + iStatus |= CUIStoreIf::EStatusAborted; + break; + default: + iStatus |= CUIStoreIf::EStatusCrashed; + break; + } + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestCase + + Method: UIEngineContainer + + Description: Returns the UIEngineContainer + + Parameters: None + + Return Values: CUIEngineContainer& + + Errors/Exceptions: Panics if called for testcase that is not running + + Status: Draft + +------------------------------------------------------------------------------- +*/ +EXPORT_C CUIEngineContainer& CStartedTestCase::UIEngineContainer() const + { + + if( !( iStatus & CUIStoreIf::EStatusRunning ) ) + { + __RDEBUG( _L("CStartedTestCase::UIEngineContainer for test case that is not running")); + User::Panic( KStartedTestCase, KErrNotFound ); + } + + return *iContainer; + + } + +/* +------------------------------------------------------------------------------- + + DESCRIPTION + + This module contains implementation of CStartedTestSet class + member functions. + +------------------------------------------------------------------------------- +*/ + +// ================= MEMBER FUNCTIONS ========================================= + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: NewL + + Description: Create a testcase container. + + Parameters: const CTestSetInfo& aTestSetInfo: in: test set info + CUIStore::TSetType aType: in: set type + + Return Values: CStartedTestSet* : pointer to created object + + Errors/Exceptions: Leaves if memory allocation for object fails + Leaves if ConstructL leaves + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestSet* CStartedTestSet::NewL( CUIStore* aUIStore, + const CTestSetInfo& aTestSetInfo, + TSetType aType ) + { + + CStartedTestSet* self = new ( ELeave ) CStartedTestSet( aUIStore, aType ); + CleanupStack::PushL( self ); + self->ConstructL( aTestSetInfo ); + CleanupStack::Pop( self ); + return self; + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: ConstructL + + Description: Second level constructor. + + Parameters: const CTestSetInfo& aTestSetInfo: in: Test set info + + Return Values: None + + Errors/Exceptions: Leaves if CTestSetInfo copying fails + + Status: Draft + +------------------------------------------------------------------------------- +*/ +void CStartedTestSet::ConstructL( const CTestSetInfo& aTestSetInfo ) + { + + iTestSetInfo = CTestSetInfo::NewL( aTestSetInfo.Name() ); + iTestSetInfo->CopyL( aTestSetInfo ); + + iOriginalTestSet = const_cast(&aTestSetInfo); + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: CStartedTestSet + + Description: Constructor + + Parameters: CUIStore::TSetType aType: in: set type + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestSet::CStartedTestSet( CUIStore* aUIStore, + TSetType aType ): + iUIStore( aUIStore ), + iResultSet( EFalse ), + iType( aType ), + iStatus( CUIStoreIf::ESetRunning ), + iNext( 0 ), + iRunningCases( 0 ), + iOriginalTestSet ( NULL ) + { + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: ~CStartedTestSet + + Description: Destructor. + + Cancels the asynchronous request, deallocate memory and closes the testcase. + + Parameters: None + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CStartedTestSet::~CStartedTestSet() + { + + delete iTestSetInfo; + iTestSetInfo = 0; + iTestCases.Reset(); + iTestCases.Close(); + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: StartNext + + Description: Start next testcase. + + Parameters: None + + Return Values: KErrNone: test case started + KErrNotFound: no test cases found. + Other Symbian OS error code + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +TInt CStartedTestSet::StartNext() + { + TInt ret = KErrNone; + + TInt count = iTestSetInfo->TestCases().Count(); + if( iNext >= count ) + { + // All test cases running or completed, no more cases to start + return KErrNotFound; + } + + TInt index = 0; + if( iType == ESetSequential ) + { + // Get test case index to be executed (when in NotExecutedCasesMode) + if(iNotStartedCasesMode) + { + iNext = iTestSetInfo->GetLastStartedCaseIndex(); + + if(iNext >= count) + { + // All test cases running or completed, no more cases to start + return KErrNotFound; + } + + iTestSetInfo->SetLastStartedCaseIndex(iNext + 1); + if(iOriginalTestSet) + { + iOriginalTestSet->SetLastStartedCaseIndex(iNext + 1); + // Update only if original test set exists + iUIStore->UpdateTestSet(*iOriginalTestSet); + } + } + + // Start next one and return + ret = iUIStore->StartTestCase( iTestSetInfo->TestCases()[iNext], + index ); + if( ret != KErrNone ) + { + return ret; + } + iNext++; + TRAPD( err, + CStartedTestCase& testCase = iUIStore->StartedTestCaseL( index ); + ret = iTestCases.Append( testCase ); + ); + if( err != KErrNone ) + { + User::Panic( KStartedTestSet, err ); + } + } + else + { + // Start all cases + for( ; iNextStartTestCase( iTestSetInfo->TestCases()[iNext], + index ); + if( ret != KErrNone ) + { + break; + } + TRAPD( err, + CStartedTestCase& testCase = iUIStore->StartedTestCaseL( index ); + ret = iTestCases.Append( testCase ); + iRunningCases++; + ); + if( err != KErrNone ) + { + User::Panic( KStartedTestSet, err ); + } + if( ret != KErrNone ) + { + break; + } + } + } + + return ret; + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: Abort + + Description: Start next testcase. + + Parameters: None + + Return Values: KErrNone: test case started + KErrNotFound: no test cases found. + Other Symbian OS error code + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +TInt CStartedTestSet::Abort() + { + + TInt ret = KErrNotFound; + TInt count = iTestCases.Count(); + for( TInt i=0; iTestCases().Count(); + iNext = count; + + return ret; + + } + + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: IsRunning + + Description: Check if test case running in this test set. + + Parameters: const CStartedTestCase* aTestCase: in: test case info + + Return Values: ETrue: This test set is running specified test case + EFalse: Not running + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +TBool CStartedTestSet::IsRunning( const CStartedTestCase* aTestCase ) + { + + TInt count = iTestCases.Count(); + for( TInt i=0; i 0 ) + { + // Test cases still running in test set + return KErrNone; + } + + iStatus = CUIStoreIf::ESetExecuted; + if( iResultSet == EFalse ) + { + // Use the result of last test case all + // test cases where succesfull + iResult = aResult; + } + + // Set test case completed + if( ( iResult.iCaseExecutionResultType != + TFullTestResult::ECaseExecuted ) || + ( iResult.iTestResult.iResult != KErrNone ) ) + { + iStatus = CUIStoreIf::ESetFailed; + } + else + { + iStatus = CUIStoreIf::ESetPassed; + } + + return KErrNone; + + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: SetNotExecutedCasesMode + + Description: Sets mode in which only not executed tests will be run. + + Parameters: TBool aNotExecutedCasesMode: desired mode + + Return Values: None + + Errors/Exceptions: None + + Status: Approved + +------------------------------------------------------------------------------- +*/ +void CStartedTestSet::SetNotStartedCasesMode(TBool aNotStartedCasesMode) + { + iNotStartedCasesMode = aNotStartedCasesMode; + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: GetOriginalTestSet + + Description: Returns pointer to original test set. + + Parameters: None + + Return Values: Pointer to original test set. + + Errors/Exceptions: None + + Status: Approved + +------------------------------------------------------------------------------- +*/ +CTestSetInfo* CStartedTestSet::GetOriginalTestSet() + { + return iOriginalTestSet; + } + +/* +------------------------------------------------------------------------------- + + Class: CStartedTestSet + + Method: NullOriginalTestSet + + Description: Sets pointer to original test set to NULL. + + Parameters: None + + Return Values: None + + Errors/Exceptions: None + + Status: Approved + +------------------------------------------------------------------------------- +*/ +void CStartedTestSet::NullOriginalTestSet() + { + iOriginalTestSet = NULL; + } + +/* +------------------------------------------------------------------------------- + + DESCRIPTION + + This module contains implementation of CTestProgress class + member functions. + +------------------------------------------------------------------------------- +*/ + +// ================= MEMBER FUNCTIONS ========================================= + +/* +------------------------------------------------------------------------------- + + Class: CTestProgress + + Method: NewL + + Description: Create CTestProgress. + + Parameters: TTestProgress& aProgress: in: info from test module + + Return Values: CTestProgress* : pointer to created object + + Errors/Exceptions: Leaves if memory allocation for object fails + Leaves if ConstructL leaves + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CTestProgress* CTestProgress::NewL( const TTestProgress& aProgress ) + { + + CTestProgress* self = new ( ELeave ) CTestProgress(); + CleanupStack::PushL( self ); + self->ConstructL( aProgress ); + CleanupStack::Pop( self ); + return self; + + } + +/* +------------------------------------------------------------------------------- + + Class: CTestProgress + + Method: ConstructL + + Description: Second level constructor. + + Parameters: TTestProgress& aProgress: in: print info + + Return Values: None + + Errors/Exceptions: Leaves if TTestProgress copying fails + + Status: Draft + +------------------------------------------------------------------------------- +*/ +void CTestProgress::ConstructL( const TTestProgress& aProgress ) + { + + iPosition = aProgress.iPosition; + iDescriptionBuf = aProgress.iDescription.AllocL(); + iTextBuf = aProgress.iText.AllocL(); + iDescription.Set( iDescriptionBuf->Des() ); + iText.Set( iTextBuf->Des() ); + + } + +/* +------------------------------------------------------------------------------- + + Class: CTestProgress + + Method: ~CTestProgress + + Description: Destructor. + + Parameters: None + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +CTestProgress::~CTestProgress() + { + + delete iTextBuf; + delete iDescriptionBuf; + + } + +/* +------------------------------------------------------------------------------- + + Class: CTestProgress + + Method: ReplaceTextL + + Description: Replace text with ne one. + + Parameters: const TTestProgress& aProgress: in: new info + + Return Values: None + + Errors/Exceptions: None + + Status: Draft + +------------------------------------------------------------------------------- +*/ +void CTestProgress::ReplaceTextL( const TTestProgress& aProgress ) + { + + HBufC* tmp = iTextBuf; + iTextBuf = 0; + CleanupStack::PushL( tmp ); + iTextBuf = aProgress.iText.AllocL(); + iText.Set( iTextBuf->Des() ); + CleanupStack::PopAndDestroy( tmp ); + + } + +// End of File