--- a/stif/StifTFwIf/src/UIStore.cpp Thu Jul 15 20:25:38 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4842 +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 implementation of CUIStore
-* and CModule class member functions.
-*
-*/
-
-// INCLUDE FILES
-#include <e32base.h>
-#include <e32svr.h>
-#include <f32file.h>
-#include <e32uid.h>
-#include <collate.h>
-
-#include <StifLogger.h>
-
-#include "Logging.h"
-#include <stifinternal/UIStore.h>
-#include <stifinternal/UIEngine.h>
-#include <stifinternal/UIStoreContainer.h>
-#include "UIStorePopup.h"
-#include <stifinternal/UIEngineContainer.h>
-
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-//@spe _LIT(KNameTxt,"TEST FRAMEWORK");
-//@spe _LIT(KNameBase,"BASE");
-_LIT( KUIStore, "CUiStore" );
-_LIT( KUIStoreIf, "CUiStoreIf" );
-//_LIT( KUIStoreDefaultDir, "C:\\TestFramework\\" );
-
-_LIT( KUIStoreSetStart, "[TestSetStart]" );
-_LIT( KUIStoreSetEnd, "[TestSetEnd]" );
-_LIT( KUIStoreSetCaseStart, "[TestSetCaseStart]" );
-_LIT( KUIStoreSetCaseEnd, "[TestSetCaseEnd]" );
-_LIT( KUIStoreCaseModuleName, "ModuleName=" );
-_LIT( KUIStoreTestCaseTitle, "Title=" );
-_LIT( KUIStoreTestCaseFile, "TestCaseFile=");
-_LIT( KUIStoreTestCaseNum, "TestCaseNum=");
-_LIT( KUIStoreCaseExpectedResult, "ExpectedResult=");
-_LIT( KUIStoreCasePriority, "Priority=");
-_LIT( KUIStoreCaseTimeout, "Timeout=");
-_LIT( KUIStoreLastStartedCaseIndex, "LastStartedCaseIndex=");
-
-
-_LIT( KUIStoreDefaultRebootFile, "TestFrameworkUIReboot.txt" );
-_LIT( KUIStoreStartTest, "[StartTestCase]" );
-_LIT( KUIStoreStartTestEnd, "[StartTestCaseEnd]" );
-
-_LIT( KUIStoreCaseStatus, "TestCaseStatus=");
-_LIT( KUIStoreCaseExecutionResult, "TestCaseExecutionResult=");
-_LIT( KUIStoreCaseResult, "TestCaseResult=");
-_LIT( KUIStoreCaseStartTime, "TestCaseStartTime=");
-_LIT( KUIStoreCaseEndTime, "TestCaseEndTime=");
-
-const TInt KRcpHeaderLen = 16;
-const TInt KFixedStartedCaseIndex = 10;
-
-// MACROS
-#ifdef LOGGER
-#undef LOGGER
-#endif
-#define LOGGER iLogger
-
-// LOCAL CONSTANTS AND MACROS
-static const TUid KUidTestModule = { 0x101FB3E7 };
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-
-// ==================== LOCAL FUNCTIONS =======================================
-
-// None
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: NewL
-
- Description: Construct the CUIStore class
-
- Parameters: None
-
- Return Values: CUIStore* New object
-
- Errors/Exceptions: Leaves if memory allocation fails or
- ConstructL leaves.
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIStore* CUIStore::NewL( CUIStoreIf* aUIStoreIf )
- {
-
- CUIStore* self = new ( ELeave ) CUIStore( aUIStoreIf );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ConstructL
-
- Description: Second level constructor.
-
- Construct the console
- Construct module and case containers
- Retrieve command line parameters
- Connect to test engine
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: Leaves if memory allocation fails or fileserver or
- test engine can't be connected.
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::ConstructL( )
- {
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: CUIStore
-
- Description: Constructor.
- Initialize non-zero member variables.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIStore::CUIStore( CUIStoreIf* aUIStoreIf ):
- iUIStoreIf( aUIStoreIf ),
- iUpdateNeeded( ETrue ),
- iActivePopupPriority( EPopupPriorityLow )
- {
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ~CUIStore
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIStore::~CUIStore( )
- {
-
- iFileList.ResetAndDestroy();
- iFileList.Close();
- iStartedTestSets.ResetAndDestroy();
- iStartedTestSets.Close();
-
- iStartedTestCases.ResetAndDestroy();
- iStartedTestCases.Close();
-
- iTestSets.ResetAndDestroy();
- iTestSets.Close();
-
- iTestCases.ResetAndDestroy();
- iTestCases.Close();
-
- iPopups.ResetAndDestroy();
- iPopups.Close();
-
- delete iUIEngine;
- iUIEngine = 0;
-
- }
-/*
--------------------------------------------------------------------------------
-
- Class: CStifTFwIf
-
- Method: Open
-
- Description: Open test engine.
-
- Parameters: TDesC& aTestFrameworkIni: in: Initialization file to Test Framework
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::Open( const TDesC& aTestFrameworkIni )
- {
-
- if( aTestFrameworkIni.Length() > KMaxFileName )
- {
- return KErrArgument;
- }
-
- TRAPD( err,
- iUIEngine = CUIEngine::NewL( this );
- );
- if( err != KErrNone )
- {
- return err;
- }
-
- TFileName ini( aTestFrameworkIni );
- // Check given ini file
- TRAP( err, CheckIniL( ini ) );
-
- // Store folder of initialization file to open it again when looking for filters
- RDebug::Print(_L("CUIStore stores name of ini file [%S]"), &ini);
- iTestFrameworkIni.Copy(ini);
-
- return iUIEngine->Open( ini );
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: Close
-
- Description: Close test engine.
-
- Parameters: None
-
- Return Values: TInt KErrNone: Always returned KErrNone
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::Close()
- {
-
- TInt ret = KErrNone;
- if( iUIEngine != NULL )
- {
- ret = iUIEngine->Close();
-
- delete iUIEngine;
- iUIEngine = 0;
- }
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: AddTestModule
-
- Description: Add test module to module list of test engine
-
- Parameters: TDesC& aModuleName: in: Testmodule, which is added to module list
- TDesC& aIniFile: in: Initialization file to the test module
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::AddTestModule( const TDesC& aModuleName,
- const TDesC& aIniFile )
- {
-
- TInt ret = iUIEngine->AddTestModule( aModuleName, aIniFile );
-
- RefreshAllCases();
-
- return ret;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemoveTestModule
-
- Description: Add test module to module list of test engine
-
- Parameters: TDesC& aModuleName: in: Testmodule, which is removed of module list
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::RemoveTestModule( const TDesC& aModuleName )
- {
-
- TInt ret = iUIEngine->RemoveTestModule( aModuleName );
-
- RefreshAllCases();
-
- return ret;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: AddTestCaseFile
-
- Description: Add test case file to test case file list of test engine
-
- Parameters: TDesC& aModuleName: in: Testmodule, which own test cases of test case list.
- TDesC& aCaseFile: in: Test case list, which is added to test case list
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::AddTestCaseFile( const TDesC& aModuleName,
- const TDesC& aCaseFile )
- {
-
- TInt ret = iUIEngine->AddTestCaseFile( aModuleName, aCaseFile );
-
- RefreshAllCases();
-
- return ret;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemoveTestCaseFile
-
- Description: Remove test case file of test case file list of test engine
-
- Parameters: TDesC& aModuleName: in: Testmodule, which own test cases of test case list
- TDesC& aCaseFile: in: Test case list, which is removed of test case list
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::RemoveTestCaseFile( const TDesC& aModuleName,
- const TDesC& aCaseFile )
- {
-
- TInt ret = iUIEngine->RemoveTestCaseFile( aModuleName, aCaseFile );
-
- RefreshAllCases();
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartTestCase
-
- Description: Start selected test case identified with CTestInfo.
- anIndex contains index in StartedTestCase array,
- which is valid only during execution of calling
- function.
-
- Parameters: const CTestInfo& aTestInfo: in: Test case info
- TInt& anIndex: out: Index to StartedTestCaseArray returned
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::StartTestCase( const CTestInfo& aTestInfo,
- TInt& anIndex )
- {
-
- CUIEngineContainer* container = NULL;
- TInt ret = iUIEngine->StartTestCase( container, aTestInfo );
-
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CStartedTestCase* testCase = NULL;
- TRAP( ret,
- testCase = CStartedTestCase::NewL( aTestInfo, *container );
- );
- if( ret != KErrNone )
- {
- iUIEngine->AbortStartedTestCase( container );
- return ret;
- }
-
- ret = iStartedTestCases.Append( testCase );
- if( ret != KErrNone )
- {
- iUIEngine->AbortStartedTestCase( container );
- delete testCase;
- return ret;
- }
-
- anIndex = iStartedTestCases.Find( testCase );
-
- if( anIndex < 0 )
- {
- User::Panic( KUIStore, KErrNotFound );
- }
-
- iUIStoreIf->Update( testCase, testCase->Status() );
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: TestCases
-
- Description: Return array of existing test cases.
-
- Parameters: RRefArray<CTestInfo>& aTestCases: out: Array of test cases
- TDesC& aTestModule: in: Test module name (optional)
- TDesC& aTestCaseFile: in: Test case file name (optional)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::TestCases( RRefArray<CTestInfo>& aTestCases,
- const TDesC& aTestModule,
- const TDesC& aTestCaseFile )
- {
-
- TInt ret = UpdateCases();
- if( ret != KErrNone )
- {
- return ret;
- }
- TInt count = iTestCases.Count();
- for( TInt i = 0; i < count; i++ )
- {
- if( ( aTestModule.Length() > 0 ) &&
- ( iTestCases[i]->ModuleName() != aTestModule ) )
- {
- continue;
- }
- else if( ( aTestCaseFile.Length() > 0 ) &&
- ( iTestCases[i]->TestCaseFile() != aTestCaseFile ) )
- {
- continue;
- }
- aTestCases.Append( *iTestCases[i] );
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartedTestCaseL
-
- Description: Return started (running/runned) test case
-
- Parameters: CStartedTestCase& aTestCase: out: Test case information
- TInt anIndex: in: test case index in StartedTestCaseArray
-
- Return Values: Reference to CStartedTestCase object
-
- Errors/Exceptions: Leaves if anIndex out of range
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CStartedTestCase& CUIStore::StartedTestCaseL( TInt anIndex )
- {
-
- TInt count = iStartedTestCases.Count();
- if( ( anIndex >= count ) ||
- ( anIndex < 0 ) )
- {
- User::Leave( KErrNotFound );
- }
-
- return *iStartedTestCases[anIndex];
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartedTestCases
-
- Description: Return started (running/runned) test cases
-
- Parameters: RRefArray<CStartedTestCase>& aTestCases: out: array of test cases
- TExecutionStatus aStatus: in: test case status (optional)
- TDesC& aTestModule: in: test module name (optional)
- TDesC& aTestCaseFile: in: test case file name (optional)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::StartedTestCases( RRefArray<CStartedTestCase>& aTestCases,
- TInt aStatus,
- const TDesC& aTestModule,
- const TDesC& aTestCaseFile )
- {
-
- TInt count = iStartedTestCases.Count();
- for( TInt i = 0; i < count; i++ )
- {
- if( ( aTestModule.Length() > 0 ) &&
- ( iStartedTestCases[i]->TestInfo().ModuleName() != aTestModule ) )
- {
- continue;
- }
- else if( ( aTestCaseFile.Length() > 0 ) &&
- ( iStartedTestCases[i]->TestInfo().TestCaseFile() != aTestCaseFile ) )
- {
- continue;
- }
- else if( ( aStatus != CUIStoreIf::EStatusAll) &&
- !( iStartedTestCases[i]->Status() & aStatus ) )
- {
- continue;
- }
- if( aTestCases.Append( *iStartedTestCases[i] ) != KErrNone )
- {
- return KErrNoMemory;
- }
- }
-
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: Modules
-
- Description: Return modules array
-
- Parameters: RRefArray<CModule>& aTestModules: out: modules array
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::Modules( RRefArray<TDesC>& aTestModules )
- {
-
- TInt ret = UpdateCases();
- if( ret != KErrNone )
- {
- return ret;
- }
-
- // Go through test cases and search if there are new modules
- // and add them to aTestModules array
- TInt caseCount = iTestCases.Count();
- TInt moduleCount = 0;
- TInt caseIndex = 0;
- TInt moduleIndex = 0;
- for ( caseIndex = 0; caseIndex < caseCount; caseIndex++ )
- {
- // First check modules
- moduleCount = aTestModules.Count();
- for ( moduleIndex = 0; moduleIndex < moduleCount; moduleIndex++ )
- {
- if( iTestCases[caseIndex]->ModuleName() ==
- aTestModules[moduleIndex] )
- {
- break;
- }
- }
- if ( moduleIndex == moduleCount )
- {
- // New module found
- if( aTestModules.Append( iTestCases[caseIndex]->ModuleName() ) !=
- KErrNone )
- {
- return KErrNoMemory;
- }
- }
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: TestCaseFiles
-
- Description: Return test case files
-
- Parameters: RRefArray<TDesC>& aTestCaseFiles: out: Array of test case files
- TDesC& aTestModule: in: test module name (optional)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::TestCaseFiles( RRefArray<TDesC>& aTestCaseFiles,
- const TDesC& aTestModule )
- {
-
- TInt ret = UpdateCases();
- if( ret != KErrNone )
- {
- return ret;
- }
-
- // Go through test cases and search if there are new test case files
- // for specified test module and add them to aTestCaseFiles array
- TInt caseCount = iTestCases.Count();
- TInt fileCount = 0;
- TInt caseIndex = 0;
- TInt fileIndex = 0;
- for ( caseIndex = 0; caseIndex < caseCount; caseIndex++ )
- {
- if( ( aTestModule.Length() > 0 ) &&
- ( aTestModule != iTestCases[caseIndex]->ModuleName() ) )
- {
- // Test case file is not for specified module
- continue;
- }
-
- // First check modules
- fileCount = aTestCaseFiles.Count();
- for ( fileIndex = 0; fileIndex < fileCount; fileIndex++ )
- {
- if( iTestCases[caseIndex]->TestCaseFile() ==
- aTestCaseFiles[fileIndex] )
- {
- break;
- }
- }
- if ( fileIndex == fileCount )
- {
- // New test case file found
- if( aTestCaseFiles.Append( iTestCases[caseIndex]->TestCaseFile() ) !=
- KErrNone )
- {
- return KErrNoMemory;
- }
- }
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadAllModules
-
- Description: Loads all TestFramework test modules from \system\libs\ directories
- of all drives. In Secure Platform from \sys\bin directories.
-
- Parameters: None
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::LoadAllModules()
- {
-
- RPointerArray<TDesC> testModules;
-
- TInt ret = ListAllModules( testModules );
- if( ret == KErrNone )
- {
- for (TInt i= 0; i < testModules.Count(); i++)
- {
- iLogger->Log( _L("Add test module: %S"), testModules[i] );
- ret = iUIEngine->AddTestModule( *testModules[i], KNullDesC );
- if( ret != KErrNone )
- {
- iLogger->Log( _L("Add test module %S failed %d"),
- testModules[i], ret );
- break;
- }
- }
- }
- RefreshAllCases();
-
- testModules.ResetAndDestroy();
- testModules.Close();
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ListAllModules
-
- Description: Lists all TestFramework test modules from \system\libs\ directories
- of all drives. In Secure Platform from \sys\bin directories.
-
- Parameters: None
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::ListAllModules( RPointerArray<TDesC>& aModuleNames )
- {
-
- TRAPD( err, ListAllModulesL( aModuleNames ); );
- return err;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ListAllModulesL
-
- Description: Lists all TestFramework test modules from \system\libs\ directories
- of all drives. In Secure Platform from \sys\bin directories.
-
- Parameters: None
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::ListAllModulesL( RPointerArray<TDesC>& aModuleNames )
- {
-
- TFileName libDirectory;
- RFs fsSession;
- TFileName fullName;
-
- // Connect to file server
- User::LeaveIfError( fsSession.Connect() ); // Start session
- CleanupClosePushL( fsSession );
-
- TDriveList drivelist;
- User::LeaveIfError( fsSession.DriveList(drivelist) );
- // A TDriveList (the list of available drives), is an array of
- // 26 bytes. Each byte with a non zero value signifies that the
- // corresponding drive is available.
-
- // 0x10000079, 0x1000008d, 0x101FB3E7
- TUidType anEntryUid( KDynamicLibraryUid,
- KSharedLibraryUid,
- KUidTestModule );
- TInt driveNumber;
- TChar driveLetter;
-
- CDir* testModules = NULL;
-
- for( driveNumber=EDriveA; driveNumber<=EDriveZ; driveNumber++ )
- {
- if( !drivelist[driveNumber] )
- {
- // If drive-list entry is zero, drive is not available
- continue;
- }
- User::LeaveIfError(fsSession.DriveToChar(driveNumber,driveLetter));
-
- libDirectory.Zero();
- libDirectory.Append( driveLetter );
- libDirectory.Append( _L(":\\sys\\bin\\*") );
-
- iLogger->Log( _L("Searching modules from %S"), &libDirectory );
-
- fsSession.GetDir( libDirectory, anEntryUid, ESortNone, testModules );
-
- if( !testModules )
- {
- // Continue if no test modules found
- continue;
- }
- TInt count = testModules->Count();
- for (TInt i= 0; i < count; i++)
- {
- fullName = (*testModules)[i].iName;
-
- fullName.LowerCase();
- // Remove optional '.DLL' from file name
- TParse parse;
- parse.Set( fullName, NULL, NULL );
-
- if ( parse.Ext() == _L(".dll") )
- {
- const TInt len = parse.Ext().Length();
- fullName.Delete( fullName.Length()-len, len );
- }
-
- // Exclude internal test modules (testcombiner, testscripter, suevent)
- _LIT(KTestCombiner, "testcombiner");
- _LIT(KTestScripter, "testscripter");
- _LIT(KSUEvent, "suevent");
- if(fullName != KTestCombiner && fullName != KSUEvent && fullName != KTestScripter)
- {
- HBufC* name = fullName.AllocLC();
- iLogger->Log( _L("Found: %S"), name );
- User::LeaveIfError( aModuleNames.Append( name ) );
- CleanupStack::Pop( name );
- }
- }
- delete testModules;
- testModules = NULL;
- }
-
- CleanupStack::PopAndDestroy(); // fsSession
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: CreateTestSet
-
- Description: Create new test set.
-
- Parameters: TDesC& aSetName: in: test set name (Max length is KMaxName)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::CreateTestSet( const TDesC& aSetName )
- {
-
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CTestSetInfo* setInfo = NULL;
- if( FindSetByName( setName, setInfo ) == KErrNone )
- {
- return KErrAlreadyExists;
- }
- TRAPD( err,
- setInfo = CTestSetInfo::NewL( setName );
- );
- if( err != KErrNone )
- {
- return err;
- }
- if( iTestSets.Append( setInfo ) != KErrNone )
- {
- delete setInfo;
- return KErrNoMemory;
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemoveTestSet
-
- Description: Remove active test set.
-
- Parameters: TDesC& aSetName: in: test set name (Max length is KMaxName)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::RemoveTestSet( const TDesC& aSetName )
- {
- TInt err = UnloadTestSet( aSetName );
- if ( err != KErrNone )
- {
- return err;
- }
-
- TFileName setfile;
- setfile.Append(KUIStoreDefaultDir);
- setfile.Append(aSetName);
- RFs fs;
- err = fs.Connect();
- if( err != KErrNone )
- {
- fs.Close();
- return err;
- }
- err = fs.Delete( setfile );
- if ( err != KErrNone )
- {
- fs.Close();
- return err;
- }
-
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: UnloadTestSet
-
- Description: Unloads active test set.
-
- Parameters: TDesC& aSetName: in: test set name (Max length is KMaxName)
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::UnloadTestSet( const TDesC& aSetName )
- {
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- TInt count = iTestSets.Count();
- TInt index = 0;
- for( ; index < count; index++ )
- {
- if( iTestSets[index]->Name() == setName )
- {
- break;
- }
- }
- if( index == count )
- {
- return KErrNotFound;
- }
-
- CTestSetInfo* setInfo = iTestSets[index];
- iTestSets.Remove( index );
-
- // If started test set keeps info about currently removed test set
- // then remove also this info
- CStartedTestSet *stset;
- for(index = 0; index < iStartedTestSets.Count(); index++)
- {
- stset = iStartedTestSets[index];
- if(stset->GetOriginalTestSet() == setInfo)
- {
- stset->NullOriginalTestSet();
- }
- }
-
- delete setInfo;
-
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: TestSets
-
- Description: Query test sets.
-
- Parameters:RRefArray<CTestSetInfo>& aSetInfos: out: list of test sets
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::TestSets( RRefArray<CTestSetInfo>& aSetInfos )
- {
-
- TInt count = iTestSets.Count();
- for( TInt i=0; i<count; i++ )
- {
- if( aSetInfos.Append( *iTestSets[i] ) != KErrNone )
- {
- return KErrNoMemory;
- }
- }
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: TestSets
-
- Description: Query test sets.
-
- Parameters:RRefArray<CTestSetInfo>& aSetInfos: out: list of test sets
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C const CTestSetInfo& CUIStore::TestSetL( const TDesC& aSetName )
- {
-
- TPtrC setName;
- TFileName tmp;
- User::LeaveIfError( ParseTestSetName( aSetName, setName, tmp ) );
-
- CTestSetInfo* setInfo = NULL;
- User::LeaveIfError( FindSetByName( setName, setInfo ) );
- return *setInfo;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: AddToTestSet
-
- Description: Add test case to test set.
-
- Parameters: TDesC& aSetName: out: test set name
- CTestInfo& aTestInfo: in: test case to add
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::AddToTestSet( const TDesC& aSetName,
- const CTestInfo& aTestInfo )
- {
-
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CTestSetInfo* setInfo = NULL;
- ret = FindSetByName( setName, setInfo );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- return setInfo->AddTestCase( aTestInfo );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: InsertToTestSet
-
- Description: Insert test case to test set.
-
- Parameters: TDesC& aSetName: out: test set name
- CTestInfo& aTestInfo: in: test case to add
- TInt aPos: in: position to add
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::InsertToTestSet( const TDesC& aSetName,
- const CTestInfo& aTestInfo,
- TInt aPos )
- {
-
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CTestSetInfo* setInfo = NULL;
- ret = FindSetByName( setName, setInfo );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- return setInfo->InsertTestCase( aTestInfo, aPos );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemoveFromTestSet
-
- Description: Remove test case from test set.
-
- Parameters: TDesC& aSetName: out: test set name
- CTestInfo& aTestInfo: in: test case to remove
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::RemoveFromTestSet( const TDesC& aSetName,
- const CTestInfo& aTestInfo )
- {
-
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CTestSetInfo* setInfo = NULL;
- ret = FindSetByName( setName, setInfo );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- return setInfo->RemoveTestCase( aTestInfo );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: SaveTestSet
-
- Description: Save test set. Deprecated, SaveTestSet2 to be used instead
-
- Parameters: TDesC&: out: test set name
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::SaveTestSet( const TDesC& /* aSetName */ )
- {
-
- return KErrNotSupported;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: SaveTestSet2
-
- Description: Save test set.
-
- Parameters: TDes& aSetName: out: test set name
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::SaveTestSet2( TDes& aSetName )
- {
-
- RRefArray<TDesC> testsets;
-
- GetTestSetsList(testsets);
- TBool isexist(EFalse);
- for(TInt i=0;i<testsets.Count();i++)
- {
- if(testsets[i]==aSetName)
- {
- isexist=ETrue;
- break;
- }
-
- }
- testsets.Reset();
- if(!isexist)
- {
- TTime current;
- TDateTime date_rep;
- current.HomeTime();
- date_rep = current.DateTime();
- TBuf<32> currSetName;
- _LIT(f_ext,".set");
-
- //create "test set name" string
- currSetName.AppendNum(date_rep.Year());
- currSetName.Append('_');
- currSetName.AppendNum(date_rep.Month()+1); // Incrimination necessary, because Day and Month fields of TDateTime class are 0 based
- currSetName.Append('_');
- currSetName.AppendNum(date_rep.Day()+1);
- currSetName.Append('_');
- currSetName.AppendNum(date_rep.Hour());
- currSetName.Append('_');
- currSetName.AppendNum(date_rep.Minute());
- currSetName.Append('_');
- currSetName.AppendNum(date_rep.Second());
- currSetName.Append(f_ext);
-
- for(TInt i=0;i<iTestSets.Count();i++)
- {
- if(iTestSets[i]->Name()==aSetName)
- {
- iTestSets[i]->RenameTestSet(currSetName);
-
- }
-
- }
-
-
-
- aSetName.Zero();
- aSetName.Copy(currSetName);
-
-
-
- }
- TPtrC setName;
- TFileName tmp;
-
-
-
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- CTestSetInfo* setInfo = NULL;
- ret = FindSetByName( setName, setInfo );
- if( ret != KErrNone )
- {
- return ret;
- }
-
- TRAPD( err,
- SaveTestSetL( *setInfo, aSetName );
- );
-
-
-
- return err;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadTestSet
-
- Description: Load test set.
-
- Parameters: TDesC& aSetName: out: test set name
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::LoadTestSet( const TDesC& aSetName )
- {
- TPtrC setName;
- TFileName tmp;
- TInt ret = ParseTestSetName( aSetName, setName, tmp );
- if( ret != KErrNone )
- {
- return ret;
- }
- CTestSetInfo* setInfo= NULL;
-
- FindSetByName( setName, setInfo );
- if(setInfo != NULL)
- {
- return KErrNone;
- }
-
- TRAPD( err,
- setInfo = CTestSetInfo::NewL( aSetName );
- );
- if( err != KErrNone )
- {
- return err;
- }
- if( iTestSets.Append( setInfo ) != KErrNone )
- {
- delete setInfo;
- return KErrNoMemory;
- }
-
- TRAP( err,
- LoadTestSetL( setName, aSetName );
- );
-
- if( err != KErrNone && err != KErrAlreadyExists )
- {
- RemoveTestSet( setName );
- }
-
- return err;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: UpdateTestSet
-
- Description: Updates (on storage) earlier saved test set.
-
- Parameters: CTestSetInfo& aSetInfo: in: test set
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::UpdateTestSet(CTestSetInfo& aSetInfo)
- {
- TRAPD(err,
- UpdateTestSetL(aSetInfo, aSetInfo.Name());
- );
-
- return err;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartTestSet
-
- Description: Start selected test set identified with CTestSetInfo.
-
- Parameters: const CTestSetInfo& aTestSetInfo: in: Started test set
- TInt& anIndex: out index in StartedTestSet array,
- which is valid only during execution of calling
- function.
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::StartTestSet( const CTestSetInfo& aTestSetInfo,
- TInt& anIndex,
- CStartedTestSet::TSetType aType )
- {
- return StartTestSet(aTestSetInfo, anIndex, aType, EFalse);
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartTestSet
-
- Description: Start selected test set identified with CTestSetInfo.
-
- Parameters: const CTestSetInfo& aTestSetInfo: in: Started test set
- TInt& anIndex: out index in StartedTestSet array,
- which is valid only during execution of calling
- function.
- TSetType aType: sequential or paraller
- TBool aNotExecutedCasesMode: only test case which haven't been
- executed yet
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::StartTestSet( const CTestSetInfo& aTestSetInfo,
- TInt& anIndex,
- CStartedTestSet::TSetType aType,
- TBool aNotStartedCasesMode )
- {
-
- TInt ret = KErrNone;
-
- CStartedTestSet* set = NULL;
- TRAPD( err,
- set = CStartedTestSet::NewL( this, aTestSetInfo, aType );
- );
- if( err != KErrNone )
- {
- return err;
- }
-
- if( iStartedTestSets.Append( set ) != KErrNone )
- {
- delete set;
- return KErrNoMemory;
- }
-
- // Set mode in which only still not executed test cases will be run.
- // It applies only to sequential execution.
- set->SetNotStartedCasesMode(aNotStartedCasesMode);
-
- ret = set->StartNext();
-
- anIndex = iStartedTestSets.Find( set );
- if( anIndex < 0 )
- {
- User::Panic( KUIStore, KErrNotFound );
- }
- // Check that testset starting was successful
- if( ret != KErrNone )
- {
- iStartedTestSets.Remove( anIndex );
- anIndex = KErrNotFound; // safety
- delete set;
- return ret;
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: AbortTestSet
-
- Description: Abort running test set.
-
- Parameters: None
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::AbortTestSet( CStartedTestSet& aSetInfo )
- {
-
- return aSetInfo.Abort();
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartedTestSetL
-
- Description: Return started (running/runned) test set.
-
- Parameters: TInt anIndex: out index in StartedTestSet array
-
- Return Values: CStartedTestSet&: reference to test set
-
- Errors/Exceptions: Leaves on error.
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CStartedTestSet& CUIStore::StartedTestSetL( TInt anIndex)
- {
-
- if( anIndex < 0 ||
- anIndex >= iStartedTestSets.Count() )
- {
- User::Leave( KErrNotFound );
- }
-
- return *iStartedTestSets[ anIndex ];
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: StartedTestSets
-
- Description: Return started (running/runned) test cases
-
- Parameters: RRefArray<CStartedTestSet>& aTestCases: out: list of test sets
- TInt aStatus: in: status of queried sets
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::StartedTestSets( RRefArray<CStartedTestSet>& aTestSets,
- TInt aStatus )
- {
-
- TInt count = iStartedTestSets.Count();
-
- for( TInt i = 0; i < count; i++ )
- {
- if( ( aStatus != CUIStoreIf::ESetAll) &&
- !( iStartedTestSets[i]->Status() & aStatus ) )
- {
- continue;
- }
- if( aTestSets.Append( *iStartedTestSets[i] ) != KErrNone )
- {
- return KErrNoMemory;
- }
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadSavedTestCases
-
- Description: Load saved testcases.
-
- Parameters: None
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::LoadSavedTestCases()
- {
-
- TRAPD( err,
- LoadExecutedTestCasesL();
- );
-
- return err;
-
- }
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: GetTestSetsList
-
- Description: Returns menu item text.
-
- Parameters: const TInt :in: Menu index
-
- Return Values: const TDesC& Menu line text
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIStore::GetTestSetsList( RRefArray<TDesC>& aArray )
- {
- RFs fileReader;
- CDir* dirContents = NULL;
- _LIT(KSetPattern,".set");
- TInt entNum = 0;
- TInt ret = 0;
- HBufC* fName = NULL;
-
-
- ret = fileReader.Connect();
-
- if (ret != KErrNone)
- return ret;
-
-
- ret = fileReader.GetDir(KUIStoreDefaultDir,
- KEntryAttNormal | KEntryAttHidden | KEntryAttSystem,
- ESortByName | EDirsFirst | EAscending,
- dirContents);
- fileReader.Close();
- if (ret != KErrNone)
- {
- delete dirContents;
- return ret;
- }
- entNum = dirContents->Count();
- for (int i = 0;i<entNum;i++)
- {
- if ((!dirContents->operator[](i).IsDir())&&
- dirContents->operator[](i).iName.Find(KSetPattern)!=KErrNotFound)
- {
- TRAPD( err, fName = HBufC::NewL(64) );
- if( err != KErrNone )
- {
- delete dirContents;
- return err;
- }
- *fName = dirContents->operator[](i).iName;
- ret = iFileList.Append(fName);
- if (ret != KErrNone)
- {
- delete fName;
- delete dirContents;
- return ret;
- }
- ret = aArray.Append(*fName);
- if (ret != KErrNone)
- {
- delete fName;
- delete dirContents;
- return ret;
- }
-
- }
- }
- delete dirContents;
- return KErrNone;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: FindSetByName
-
- Description: Finds test set by name.
-
- Parameters: const TDesC& aSetName: in: set name
- CTestSetInfo*& aSetInfo: out: pointer to test set
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::FindSetByName( const TDesC& aSetName,
- CTestSetInfo*& aSetInfo )
- {
-
- TInt count = iTestSets.Count();
- for( TInt i=0; i<count; i++ )
- {
- if( iTestSets[i]->Name() == aSetName )
- {
- aSetInfo = iTestSets[i];
- return KErrNone;
- }
- }
-
- return KErrNotFound;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: FindSetByCase
-
- Description: Finds test set by name.
-
- Parameters: const CStartedTestCase* aTestCase: in: running test case
- CStartedTestSet*& aSet: out: set running test case
-
- Return Values: KErrNotFound: test case is not runned by any test set
- KErrNone: test case was runned by aSet
-
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::FindStartedSetByCase( const CStartedTestCase* aTestCase,
- CStartedTestSet*& aSet )
- {
-
- TInt count = iStartedTestSets.Count();
- for( TInt i=0; i<count; i++ )
- {
- if( iStartedTestSets[i]->IsRunning( aTestCase ) )
- {
- aSet = iStartedTestSets[i];
- return KErrNone;
- }
- }
-
- return KErrNotFound;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadTestSetL
-
- Description: Load test set.
-
- Parameters: TDesC& aSetName: out: test set name
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::LoadTestSetL( const TDesC& aSetName, const TDesC& /*aSetFileName*/ )
- {
-
- TPtrC tmp;
- TInt num;
- TInt high;
- TInt64 interval;
-
- CStifParser* parser = CStifParser::NewL( KUIStoreDefaultDir, aSetName );
-
-
- CleanupStack::PushL( parser );
-
- CStifSectionParser* section =
- parser->SectionL( KUIStoreSetStart, KUIStoreSetEnd );
- CleanupStack::PushL( section );
-
- CStifItemParser* item;
-
- // Get started test case (if possible)
- TUint lastStartedCaseIndex = 0;
- item = section->GetItemLineL(KUIStoreLastStartedCaseIndex);
- if(item)
- {
- CleanupStack::PushL(item);
- TInt r = item->GetInt(KUIStoreLastStartedCaseIndex, lastStartedCaseIndex);
- CleanupStack::PopAndDestroy(item);
- if(r != KErrNone)
- {
- __TRACE(KInit, (_L("Could not read [%S] from test set file. Result [%d]."), &KUIStoreLastStartedCaseIndex, r));
- }
- }
- else
- {
- __TRACE(KInit, (_L("Could not find [%S] from test set file."), &KUIStoreLastStartedCaseIndex));
- }
-
-
- CTestSetInfo* setInfo = NULL;
- User::LeaveIfError( FindSetByName( aSetName, setInfo ) );
-
- // Update started case
- setInfo->SetLastStartedCaseIndex(lastStartedCaseIndex);
-
- CTestInfo* testInfo = CTestInfo::NewL();
- CleanupStack::PushL( testInfo );
-
- CStifSectionParser* subSection =
- section->SubSectionL( KUIStoreSetCaseStart, KUIStoreSetCaseEnd );
-
- while( subSection )
- {
- CleanupStack::PushL( subSection );
-
- // Get module name
- // Mandatory, leave if not found
- User::LeaveIfError(
- subSection->GetLine( KUIStoreCaseModuleName, tmp, ENoTag ) );
- testInfo->SetModuleName( tmp );
-
- // Get test case title
- // Mandatory, leave if not found
- User::LeaveIfError(
- subSection->GetLine( KUIStoreTestCaseTitle, tmp, ENoTag ) );
- testInfo->SetTestCaseTitle( tmp );
-
- // Get test case file
- num = subSection->GetLine( KUIStoreTestCaseFile, tmp, ENoTag );
- if( ( num == KErrNone ) &&
- ( tmp.Length() > 0 ) )
- {
- // Optional
- testInfo->SetTestCaseFile( tmp );
- }
-
- // Get test case number
- item = subSection->GetItemLineL( KUIStoreTestCaseNum );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreTestCaseNum, num ));
- testInfo->SetTestCaseNumber( num );
- CleanupStack::PopAndDestroy( item );
-
- // Get test case priority
- item = subSection->GetItemLineL( KUIStoreCasePriority );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCasePriority, num ));
- testInfo->SetPriority( num );
- CleanupStack::PopAndDestroy( item );
-
- // Get test case timeout
- item = subSection->GetItemLineL( KUIStoreCaseTimeout );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCaseTimeout, num ));
- User::LeaveIfError( item->GetNextInt( high ));
- //@js<--remove--> interval.Set( high, num );
- interval = MAKE_TINT64( high, num );
- TTimeIntervalMicroSeconds timeout( interval );
- testInfo->SetTimeout( timeout );
- CleanupStack::PopAndDestroy( item );
-
- User::LeaveIfError( setInfo->AddTestCase( *testInfo ) );
-
- CleanupStack::PopAndDestroy( subSection );
- subSection =
- section->NextSubSectionL( KUIStoreSetCaseStart, KUIStoreSetCaseEnd );
- }
-
- CleanupStack::PopAndDestroy( testInfo );
- CleanupStack::PopAndDestroy( section );
- CleanupStack::PopAndDestroy( parser );
-
- const RRefArray<const CTestInfo>& testCases = setInfo->TestCases();
- LoadTestModulesAndTestCaseFilesL( testCases );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: SaveTestSetL
-
- Description: Save test set.
-
- Parameters: CTestSetInfo& aSetInfo: in: test set
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::SaveTestSetL( CTestSetInfo& aSetInfo, const TDesC& aSetFileName )
- {
- //Extract path
- TParse p;
- p.Set(aSetFileName, NULL, NULL);
- TPtrC path = p.DriveAndPath(); // gives path for test set
- TPtrC fn = p.NameAndExt(); // gives filename with extension
- if(path.Length() == 0)
- {
- path.Set(KUIStoreDefaultDir);
- }
-
- //Create file server
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
-
- //Create or open file
- RFile file;
- TFileName filename = path;
- filename.Append(fn);
-
- TInt r = file.Replace(fs, filename, EFileWrite);
- if(r != KErrNone)
- {
- User::Leave(r);
- }
- else
- {
- CleanupClosePushL(file);
-
- RBuf buffer;
- buffer.Create(256);
- CleanupClosePushL(buffer);
-
- // Saving
- buffer.Format(_L("%S"), &KUIStoreSetStart);
- WriteLineL(file, buffer);
-
- // Saving test set causes reset of index
- aSetInfo.SetLastStartedCaseIndex(0);
- buffer.Format(_L("%S "), &KUIStoreLastStartedCaseIndex);
- buffer.AppendNumFixedWidth(aSetInfo.GetLastStartedCaseIndex(), EDecimal, KFixedStartedCaseIndex);
- WriteLineL(file, buffer);
-
- // Saving test cases
- TInt count = aSetInfo.TestCases().Count();
- for(TInt i = 0; i < count; i++)
- {
- WriteLineL(file, KNullDesC);
- buffer.Format(_L("%S"), &KUIStoreSetCaseStart);
- WriteLineL(file, buffer);
-
- buffer.Format(_L("%S %S"), &KUIStoreCaseModuleName, &aSetInfo.TestCases()[i].ModuleName());
- WriteLineL(file, buffer);
- buffer.Format(_L("%S %S"), &KUIStoreTestCaseTitle, &aSetInfo.TestCases()[i].TestCaseTitle());
- WriteLineL(file, buffer);
- if(aSetInfo.TestCases()[i].TestCaseFile().Length() > 0)
- {
- buffer.Format(_L("%S %S"), &KUIStoreTestCaseFile, &aSetInfo.TestCases()[i].TestCaseFile());
- WriteLineL(file, buffer);
- }
- buffer.Format(_L("%S %d"), &KUIStoreTestCaseNum, aSetInfo.TestCases()[i].TestCaseNum());
- WriteLineL(file, buffer);
- buffer.Format(_L("%S %d"), &KUIStoreCasePriority, aSetInfo.TestCases()[i].Priority());
- WriteLineL(file, buffer);
- buffer.Format(_L("%S %d %d"), &KUIStoreCaseTimeout, I64LOW(aSetInfo.TestCases()[i].Timeout().Int64()),
- I64HIGH(aSetInfo.TestCases()[i].Timeout().Int64()));
- WriteLineL(file, buffer);
- buffer.Format(_L("%S %d"), &KUIStoreCaseExpectedResult, aSetInfo.TestCases()[i].ExpectedResult());
- WriteLineL(file, buffer);
- buffer.Format(_L("%S"), &KUIStoreSetCaseEnd);
- WriteLineL(file, buffer);
- }
-
- WriteLineL(file, KNullDesC);
- buffer.Format(_L("%S"), &KUIStoreSetEnd);
- WriteLineL(file, buffer);
-
- CleanupStack::PopAndDestroy(&buffer);
- CleanupStack::PopAndDestroy(&file);
- }
- CleanupStack::PopAndDestroy(&fs);
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: UpdateTestSetL
-
- Description: Updates information in test set file.
-
- Parameters: CTestSetInfo& aSetInfo: in: test set
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: Leaves when writing to file fails
- Leaves when file.seek fails
- Leaves when can't connect to file server
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::UpdateTestSetL(CTestSetInfo& aSetInfo, const TDesC& aSetFileName)
- {
- // Get path
- TParse p;
- p.Set(aSetFileName, NULL, NULL);
- TPtrC path = p.DriveAndPath(); // gives path for test set
- TPtrC fn = p.NameAndExt(); // gives filename with extension
- if(path.Length() == 0)
- {
- path.Set(KUIStoreDefaultDir);
- }
-
- //Create file server
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
-
- //Create or open file
- RFile file;
- TFileName filename = path;
- filename.Append(fn);
- TInt foundpos = KErrNotFound;
-
- TInt r = file.Open(fs, filename, EFileWrite);
- if(r != KErrNone)
- {
- User::Leave(r);
- }
- else
- {
- CleanupClosePushL(file);
-
- //Search for line
- RBuf buffer;
- buffer.Create(256);
- CleanupClosePushL(buffer);
-
- //Prepare file
- TInt pos = 0;
- User::LeaveIfError(file.Seek(ESeekStart, pos));
-
- //Read file
- ReadLineL(file, buffer);
- while(buffer.Length() > 0)
- {
- // Keep remembering current position
- if(buffer.Find(KUIStoreLastStartedCaseIndex) == 0)
- {
- foundpos = pos;
- break;
- }
- // What is current position
- pos = 0;
- User::LeaveIfError(file.Seek(ESeekCurrent, pos));
- // Read next line from file
- ReadLineL(file, buffer);
- }
-
- if(foundpos != KErrNotFound)
- {
- // Position was found. Just update that line (save index of last
- // started test case)
- RBuf8 b;
- b.Create(40);
- CleanupClosePushL(b);
-
- b.Copy(KUIStoreLastStartedCaseIndex);
- b.Append(_L8(" "));
- b.AppendNumFixedWidth(aSetInfo.GetLastStartedCaseIndex(), EDecimal, KFixedStartedCaseIndex);
- User::LeaveIfError(file.Seek(ESeekStart, foundpos));
- User::LeaveIfError(file.Write(b));
- CleanupStack::PopAndDestroy(&b);
- }
-
- CleanupStack::PopAndDestroy(&buffer);
- CleanupStack::PopAndDestroy(&file);
- }
- CleanupStack::PopAndDestroy(&fs);
-
- if(foundpos == KErrNotFound)
- {
- // Position of KUIStoreLastStartedCaseIndex could not be found.
- // Store the whole file.
- SaveTestSetL(aSetInfo, aSetFileName);
- }
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ReadLineL
-
- Description: Read the whole line from the file. If there is enough space,
- the whole content of line will be returned in buffer.
-
- Parameters: RFile& file: in: file to be read
- TDes8& buffer: out: buffer to be returned
-
- Return Values: None
-
- Errors/Exceptions: Leaves if RFile::Read method fails
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::ReadLineL(RFile &file, TDes& buffer)
- {
- TBuf8<1> c;
- TBuf<1> c16;
- buffer.Copy(KNullDesC);
-
- User::LeaveIfError(file.Read(c));
- while(c.Length() > 0)
- {
- // There is still place to write to the dest buffer
- if(buffer.Length() < buffer.MaxLength())
- {
- c16.Copy(c);
- buffer.Append(c16);
- }
- // Stop reading if end of line
- if(c[0] == 0x0A)
- {
- break;
- }
- User::LeaveIfError(file.Read(c));
- }
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: WriteLineL
-
- Description: Write given line to the file and adds end of line.
-
- Parameters: RFile& file: in: file to be written
- TDesC& buffer: in: buffer to be written
-
- Return Values: None
-
- Errors/Exceptions: Leaves if RFile::Write method fails
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::WriteLineL(RFile &file, const TDesC& buffer)
- {
- if(buffer.Length() > 0)
- {
- // Create 8-bit buffer
- RBuf8 buf;
- buf.Create(buffer.Length());
- CleanupClosePushL(buf);
-
- buf.Copy(buffer);
-
- // Write buffer to file + end of line
- User::LeaveIfError(file.Write(buf));
-
- // Delete 8-bit buffer
- CleanupStack::PopAndDestroy(&buf);
- }
-
- // Write end of line
- TBuf8<2> eoline;
- eoline.Copy(_L("\r\n"));
- User::LeaveIfError(file.Write(eoline));
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadTestModulesL
-
- Description: Load test modules.
-
- Parameters: CTestSetInfo& aSetInfo: in: test set
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::LoadTestModulesAndTestCaseFilesL(
- const RRefArray<const CTestInfo>& aTestCases )
- {
-
- RRefArray<TDesC> testCaseFiles;
- RRefArray<TDesC> testModules;
- CleanupClosePushL( testCaseFiles );
- CleanupClosePushL( testModules );
-
- User::LeaveIfError( Modules( testModules ) );
-
- TInt cCount = aTestCases.Count();
- TInt mCount = 0;
- TInt mInd=0;
- TInt fCount = 0;
- TInt fInd=0;
- for( TInt cInd=0; cInd<cCount; cInd++ )
- {
- mCount = testModules.Count();
- for( mInd=0; mInd<mCount; mInd++ )
- {
- if( aTestCases[cInd].ModuleName() == testModules[mInd] )
- {
- // Test module already loaded
- break;
- }
- }
- if( mInd == mCount )
- {
- // Not found, load test module
- if( AddTestModule( aTestCases[cInd].ModuleName() ) == KErrNone )
- {
- User::LeaveIfError(
- testModules.Append( aTestCases[cInd].ModuleName() ) );
- }
- }
- if( aTestCases[cInd].TestCaseFile().Length() == 0 )
- {
- // Test case file is not used, continue
- continue;
- }
- testCaseFiles.Reset();
- User::LeaveIfError(
- TestCaseFiles( testCaseFiles, aTestCases[cInd].ModuleName() ));
- fCount = testCaseFiles.Count();
- for( fInd=0; fInd<fCount; fInd++ )
- {
- if( aTestCases[cInd].TestCaseFile() == testCaseFiles[fInd] )
- {
- // Testcasefile already loaded
- break;
- }
- }
- if( fInd == fCount )
- {
- // Load test module
- if( AddTestCaseFile( aTestCases[cInd].ModuleName(),
- aTestCases[cInd].TestCaseFile() ) == KErrNone )
- {
- User::LeaveIfError(
- testCaseFiles.Append( aTestCases[cInd].TestCaseFile() ) );
- }
- }
- }
-
- CleanupStack::PopAndDestroy(); // testModules
- CleanupStack::PopAndDestroy(); // testCaseFiles
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: TestExecuted
-
- Description: Test case executed callback from UI engine.
-
- Parameters: CUIEngineContainer* const aContainer: in: Execution container
- TFullTestResult& aFullTestResult: in: test result
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::TestExecuted ( CUIEngineContainer* aContainer,
- TFullTestResult& aFullTestResult )
- {
-
- CStartedTestCase* testCase = NULL;
-
- if( FindByContainer( aContainer, testCase ) != KErrNone )
- {
- __TRACE( KError, ( CStifLogger::EError, _L("CUIStore::TestExecuted: Not found")));
- return;
- }
- CStartedTestSet* set = NULL;
- TInt setStatus = 0;
- if( FindStartedSetByCase( testCase, set ) == KErrNone )
- {
- setStatus = set->Status();
- set->TestCompleted( testCase, aFullTestResult );
- setStatus |= set->Status();
- }
-
- // Check and delete all pending popup windows for test case
- TInt count = iPopups.Count();
- for( TInt i = 0; i<count; i++ )
- {
- if( iPopups[i]->Container() == aContainer )
- {
- delete iPopups[i];
- iPopups.Remove( i );
- }
- }
-
- // Get old status
- TInt status = testCase->Status();
- // Set result
- testCase->SetResult( aFullTestResult );
- // Get new status
- status |= testCase->Status();
- // Add set status flags
- status |= setStatus;
-
- iUIStoreIf->Update( testCase, status );
-
- return;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: PrintProg
-
- Description: Progress information from test case execution,
- callback from UI engine.
-
- Parameters: CUIEngineContainer* const aContainer: in: Execution container
- TTestProgress& aProgress: in: print info
-
- Return Values: Symbian OS error code
-
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::PrintProg ( CUIEngineContainer* aContainer,
- TTestProgress& aProgress )
- {
- if( aContainer == NULL )
- {
- return KErrArgument;
- }
- if( ( aProgress.iDescription.Length() == 0 ) &&
- ( aProgress.iText.Length() == 0 ) )
-
- {
- return KErrArgument;
- }
-
- CStartedTestCase* testCase = NULL;
-
- if( FindByContainer( aContainer, testCase ) != KErrNone )
- {
- __TRACE( KError, ( CStifLogger::EError, _L("CUIStore::TestExecuted: Not found")));
- return KErrNotFound;
- }
-
- TInt position = KErrNotFound;
- TInt smallPos = KErrNotFound;
-
- // Search the array to find the position
- const TInt count = testCase->PrintArray().Count();
- for (TInt i = 0; i < count; i++)
- {
-
- // Check if that item is already on list
- if ( testCase->PrintArray()[i]->iDescription == aProgress.iDescription &&
- testCase->PrintArray()[i]->iPosition == aProgress.iPosition )
- {
- // Set it to be updated
- position = i;
- break;
- }
-
- // Found a smaller priority item from list
- if ( aProgress.iPosition < testCase->PrintArray()[i]->iPosition )
- {
- smallPos = i;
- break;
- }
- }
-
- // Either update item in array or add new item to array
- if ( position != KErrNotFound )
- {
- // Replace existing text
- testCase->PrintArray()[position]->ReplaceTextL( aProgress );
- }
- else
- {
- CTestProgress* prog = NULL;
- TRAPD( err,
- // Allocate new
- prog = CTestProgress::NewL( aProgress );
- );
- if( err != KErrNone )
- {
- return err;
- }
- if ( smallPos != KErrNotFound )
- {
- if( testCase->PrintArray().Insert( prog, smallPos ) != KErrNone )
- {
- delete prog;
- return KErrNoMemory;
- }
- }
- else
- {
- if( testCase->PrintArray().Append( prog ) != KErrNone )
- {
- delete prog;
- return KErrNoMemory;
- }
- }
- }
-
- iUIStoreIf->Update( testCase, CUIStoreIf::EPrintUpdate );
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: PrintProg
-
- Description: Error information from Test framework,
- callback from UI engine.
-
- Parameters: CUIEngineContainer* const aContainer: in: Execution container
- TErrorNotification& aError: in: error info
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::ErrorPrint( TErrorNotification& aError )
- {
-
- if( aError.iText.Length() == 0 )
- {
- return KErrArgument;
- }
-
- iUIStoreIf->Error( aError );
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemoteMsg
-
- Description: Remote protocol control messages handling.
-
- Parameters: const TDesC& aMessage: in: Remote message
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::RemoteMsg( CUIEngineContainer* aContainer,
- const TDesC& aMessage)
- {
-
- if( ( aMessage.Length() == 0 ) ||
- ( aContainer == NULL ) )
- {
- return KErrArgument;
- }
-
- TInt ret = KErrNone;
-
- TInt error = KErrNone;
- CStifTFwIfProt* msg = NULL;
- CStifTFwIfProt* resp = NULL;
- TRAPD( err, msg = CStifTFwIfProt::NewL(); );
- if( err != KErrNone )
- {
- return err;
- }
- TRAP( err, resp = CStifTFwIfProt::NewL(); );
- if( err != KErrNone )
- {
- delete msg;
- return err;
- }
-
- // Parse received message
- TRAP( err,
- error = msg->SetL( aMessage )
- );
- if( err != KErrNone )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: message header parsing failed [%d]"), err ) );
- delete msg;
- delete resp;
- return err;
- }
-
- // Create response
- TRAP( err, resp->CreateL(); );
- if( err != KErrNone )
- {
- delete msg;
- delete resp;
- return err;
- }
-
- resp->Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgResponse );
-
- if( error != KErrNone )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: message parsing failed [%d]"), error ) );
- resp->AppendId( SETID( (TInt32)DevId(), 0 ) );
- resp->AppendId( msg->SrcId() );
- resp->Append( CStifTFwIfProt::MsgType, msg->iMsgType );
- resp->Append( CStifTFwIfProt::RespParam, CStifTFwIfProt::ERespResult, error );
-
- aContainer->RemoteReceive( resp->Message() );
-
- // Error reported with protocol message, return success
- delete msg;
- delete resp;
- return KErrNone;
- }
-
- TBool sendResp = ETrue;
-
- switch( msg->iMsgType )
- {
- case CStifTFwIfProt::EMsgReserve:
- {
- // Check IDs
- if( ( msg->SrcDevId() == 0 ) ||
- ( msg->SrcTestId() == 0 ) )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: reserve for illegal srcid received") ) );
- error = KErrGeneral;
- }
- if( msg->DstId() != 0 )
- {
- // Not a broadcast
- if( ( msg->DstDevId() != DevId() ) ||
- ( msg->DstTestId() != 0 ) )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: reserve for illegal dstid received") ) );
- error = KErrGeneral;
- }
- }
-
- resp->AppendId( SETID( (TInt32)DevId(), 0 ) );
- resp->AppendId( msg->SrcId() );
- resp->Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgReserve );
- if( error != KErrNone )
- {
- resp->Append( CStifTFwIfProt::RespParam, CStifTFwIfProt::ERespResult, error );
- }
- }
- break;
- case CStifTFwIfProt::EMsgRelease:
- {
- // Check protocol ids
- if( ( msg->SrcDevId() == 0 ) ||
- ( msg->SrcTestId() == 0 ) ||
- ( msg->DstTestId() != 0 ) )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: release for illegal srcid or dstid received") ) );
- error = KErrGeneral;
- }
- else if( msg->DstDevId() != DevId() )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: release for illegal dstid received") ) );
- error = KErrNotFound;
- }
-
- resp->AppendId( msg->DstId() );
- resp->AppendId( msg->SrcId() );
- resp->Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgRelease );
-
- if( error != KErrNone )
- {
- resp->Append( CStifTFwIfProt::RespParam, CStifTFwIfProt::ERespResult, error );
- }
- }
- break;
- case CStifTFwIfProt::EMsgRemote:
- {
- // Check protocol ids
- if( ( msg->SrcDevId() == 0 ) ||
- ( msg->SrcTestId() == 0 ) ||
- ( msg->DstDevId() == 0 ) )
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: remote for illegal srcid or dstid received") ) );
- error = KErrGeneral;
- }
- else
- {
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: received remote call") ) );
-
- error = MsgRemote( aContainer, *msg, *resp );
- }
-
- if( error != KErrNone )
- {
- resp->AppendId( msg->DstId() );
- resp->AppendId( msg->SrcId() );
- resp->Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgRemote );
- resp->Append( msg->iCmdDes );
- resp->Append( CStifTFwIfProt::RespParam,
- CStifTFwIfProt::ERespResult,
- error );
- }
- else
- {
- sendResp = EFalse;
- }
-
- }
- break;
- case CStifTFwIfProt::EMsgResponse:
- default:
- __TRACE( KError, ( _L( "CUIStore::RemoteMsg: invalid message")) );
- ret = KErrNotSupported;
- }
-
- if( ( ret == KErrNone ) && sendResp )
- {
- aContainer->RemoteReceive( resp->Message() );
- }
-
- delete msg;
- delete resp;
-
- return ret;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: MsgRemote
-
- Description: Remote command
-
- Parameters: const TDesC& aMessage: in:
-
- Return Values: KErrNotSupported
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::MsgRemote( CUIEngineContainer* aContainer,
- CStifTFwIfProt& aReq,
- CStifTFwIfProt& aResp )
- {
-
- TInt ret = KErrNone;
-
- switch( aReq.iCmdType )
- {
- case CStifTFwIfProt::ECmdRun:
- ret = MsgRemoteRun( aContainer, aReq, aResp );
- break;
- case CStifTFwIfProt::ECmdPause:
- case CStifTFwIfProt::ECmdResume:
- case CStifTFwIfProt::ECmdCancel:
- ret = MsgRemoteTestCtl( aContainer, aReq, aResp );
- break;
- case CStifTFwIfProt::ECmdRequest:
- case CStifTFwIfProt::ECmdRelease:
- ret = MsgRemoteEventCtl( aContainer, aReq, aResp );
- break;
- case CStifTFwIfProt::ECmdSendReceive:
- {
- ret = MsgRemoteSendReceive( aContainer, aReq, aResp );
- break;
- }
- default:
- {
- CStifTFwIfProt* resp = NULL;
- TRAPD( err,
- resp = CStifTFwIfProt::NewL();
- resp->CreateL();
- );
- if( err != KErrNone )
- {
- delete resp;
- return err;
- }
- resp->SetMsgType( CStifTFwIfProt::EMsgResponse );
- resp->SetSrcId( aReq.DstId() );
- resp->SetDstId( aReq.SrcId() );
- resp->SetRespType( CStifTFwIfProt::EMsgRemote );
- // Command type must be set separately,
- // because it is unspecified in this case
- resp->iCmdType = aReq.iCmdType;
- resp->Append( aReq.iCmdDes );
-
- ret = RemotePopup( aContainer, aReq.Message(), resp );
-
- if( ret != KErrNone )
- {
- delete resp;
- }
- }
- break;
- }
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: AtsRemoteRun
-
- Description: Remote run message
-
- Parameters: const TDesC& aMessage: in:
-
- Return Values: KErrNotSupported
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::MsgRemoteRun( CUIEngineContainer* aContainer,
- CStifTFwIfProt& aReq,
- CStifTFwIfProt& /* aResp */)
- {
-
- TInt ret = KErrNone;
- TUint16 testid = 0;
-
- if( ( aReq.DstDevId() == 0 ) ||
- ( aReq.DstTestId() != 0 ) )
- {
- // Protocol violation
- __TRACE( KError, ( _L( "AtsReceive: remote run for illegal dstid received") ) );
- return KErrGeneral;
- }
-
- if ( aReq.DstDevId() != DevId() )
- {
- // Not our protocol message
- __TRACE( KError, ( _L( "AtsReceive: remote run for illegal dstdevid received") ) );
- return KErrNotFound;
- }
-
-
- if( aReq.iModule.Length() == 0 )
- {
- __TRACE( KError, ( _L("No mandatory test module name given as run parameter") ) );
- ret = KErrNotFound;
- }
- else if( aReq.iTestCaseNumber < 0 )
- {
- __TRACE( KError, ( _L("No mandatory test case number given as run parameter") ) );
- ret = KErrNotFound;
- }
-
- testid = 1;
- CStifTFwIfProt* resp = NULL;
- TRAPD( err,
- resp = CStifTFwIfProt::NewL();
- resp->CreateL();
- );
- if( err != KErrNone )
- {
- delete resp;
- return err;
- }
-
- CStifTFwIfProt* resp2 = NULL;
- TRAP( err,
- resp2 = CStifTFwIfProt::NewL();
- resp2->CreateL();
- );
- if( err != KErrNone )
- {
- delete resp2;
- return err;
- }
-
- resp->SetMsgType( CStifTFwIfProt::EMsgResponse );
- resp->SetSrcId( SETID( (TInt32)DevId(), testid ) );
- resp->SetDstId( aReq.SrcId() );
- resp->SetRespType( CStifTFwIfProt::EMsgRemote );
- resp->SetCmdType( CStifTFwIfProt::ECmdRun );
-
- resp2->SetMsgType( CStifTFwIfProt::EMsgResponse );
- resp2->SetSrcId( SETID( (TInt32)DevId(), testid ) );
- resp2->SetDstId( aReq.SrcId() );
- resp2->SetRespType( CStifTFwIfProt::EMsgRemote );
- resp2->SetCmdType( CStifTFwIfProt::ECmdRun );
-
- // Remote run started popup call
- ret = RemotePopup( aContainer, aReq.Message(), resp, EPopupPriorityHighest );
- if( ret != KErrNone )
- {
- delete resp;
- }
-
- // Remote run result popup call
- ret = RemotePopup( aContainer, aReq.Message(), resp2 );
- if( ret != KErrNone )
- {
- delete resp2;
- }
-
- return ret;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: MsgRemoteTestCtl
-
- Description: Remote test control message
-
- Parameters: const TDesC& aMessage: in:
-
- Return Values: KErrNotSupported
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::MsgRemoteTestCtl( CUIEngineContainer* aContainer,
- CStifTFwIfProt& aReq,
- CStifTFwIfProt& /*aResp*/ )
- {
-
- TInt ret = KErrNone;
-
- if( ( aReq.DstDevId() == 0 ) ||
- ( aReq.DstTestId() == 0 ) )
- {
- // Protocol violation
- __TRACE( KError, ( _L( "AtsReceive: remote test control for illegal dstid received") ) );
- return KErrGeneral;
- }
-
- if ( aReq.DstDevId() != DevId() )
- {
- // Not our protocol message
- __TRACE( KError, ( _L( "AtsReceive: remote test control for illegal dstdevid received") ) );
- return KErrNotFound;
- }
-
- CStifTFwIfProt* resp = NULL;
- TRAPD( err,
- resp = CStifTFwIfProt::NewL();
- resp->CreateL();
- );
- if( err != KErrNone )
- {
- delete resp;
- return err;
- }
-
- resp->SetMsgType( CStifTFwIfProt::EMsgResponse );
- resp->SetSrcId( aReq.DstId() );
- resp->SetDstId( aReq.SrcId() );
- resp->SetRespType( CStifTFwIfProt::EMsgRemote );
- resp->SetCmdType( aReq.iCmdType );
-
- ret = RemotePopup( aContainer, aReq.Message(), resp );
-
- if( ret != KErrNone )
- {
- delete resp;
- }
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: MsgRemoteEventCtl
-
- Description: Remote run message
-
- Parameters: const TDesC& aMessage: in:
-
- Return Values: KErrNotSupported
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::MsgRemoteEventCtl( CUIEngineContainer* aContainer,
- CStifTFwIfProt& aReq,
- CStifTFwIfProt& aResp )
- {
-
- if( ( aReq.DstDevId() == 0 ) ||
- ( aReq.DstTestId() != 0 ) )
- {
- // Protocol violation
- __TRACE( KError, ( _L( "AtsReceive: remote event control for illegal dstid received") ) );
- return KErrGeneral;
- }
-
- if ( aReq.DstDevId() != DevId() )
- {
- // Not our protocol message
- __TRACE( KError, ( _L( "AtsReceive: remote event control for illegal dstdevid received") ) );
- return KErrNotFound;
- }
-
- if( aReq.iEventName.Length() == 0 )
- {
- __TRACE( KError, ( _L("No event name given") ) );
- return KErrNotFound;
- }
-
- TInt ret = KErrNone;
-
- switch( aReq.iCmdType )
- {
- case CStifTFwIfProt::ECmdRequest:
- {
- // Send event active information
- CStifTFwIfProt* resp = NULL;
- TRAP( ret,
- resp = CStifTFwIfProt::NewL();
- resp->CreateL(); );
- if( ret != KErrNone )
- {
- delete resp;
- return ret;
- }
-
- resp->SetMsgType( CStifTFwIfProt::EMsgResponse );
- resp->SetSrcId( aReq.DstId() );
- resp->SetDstId( aReq.SrcId() );
- resp->SetRespType( CStifTFwIfProt::EMsgRemote );
- resp->SetCmdType( CStifTFwIfProt::ECmdRequest );
- resp->Append( CStifTFwIfProt::EventStatus,
- CStifTFwIfProt::EEventSet );
- resp->Append( aReq.iEventName );
- ret = RemotePopup( aContainer, aReq.Message(), resp, EPopupPriorityNormal );
-
- if( ret != KErrNone )
- {
- delete resp;
- }
-
- aResp.AppendId( aReq.DstId() );
- aResp.AppendId( aReq.SrcId() );
- aResp.Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgRemote );
- aResp.Append( CStifTFwIfProt::CmdType, CStifTFwIfProt::ECmdRequest );
- if( ret == KErrNone )
- {
- aResp.Append( CStifTFwIfProt::EventStatus,
- CStifTFwIfProt::EEventActive );
- aResp.Append( aReq.iEventName );
- }
- else
- {
- aResp.Append( CStifTFwIfProt::EventStatus,
- CStifTFwIfProt::EEventError );
- aResp.Append( aReq.iEventName );
- aResp.Append( CStifTFwIfProt::EventStatusParams,
- CStifTFwIfProt::EEventResult,
- ret );
- }
-
- ret = aContainer->RemoteReceive( aResp.Message() );
- ret = KErrNone;
- }
- break;
- case CStifTFwIfProt::ECmdRelease:
- {
- // Check and delete all pending event popup windows for test case
- TInt count = iPopups.Count();
- for( TInt i = 0; i<count; i++ )
- {
- if( ( iPopups[i]->Container() == aContainer ) &&
- iPopups[i]->IsEventPopup() )
- {
- delete iPopups[i];
- iPopups.Remove( i );
- }
- }
-
- aResp.AppendId( aReq.DstId() );
- aResp.AppendId( aReq.SrcId() );
- aResp.Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgRemote );
- aResp.Append( CStifTFwIfProt::CmdType, CStifTFwIfProt::ECmdRelease );
- aResp.Append( aReq.iEventName );
-
- ret = aContainer->RemoteReceive( aResp.Message() );
- ret = KErrNone;
-
- }
- break;
- default:
- return KErrNotSupported;
- }
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: MsgRemoteSendReceive
-
- Description: Asynchronous remote sendreceive message
-
- Parameters: CUIEngineContainer* aContainer: in:
- CStifTFwIfProt& aReq: in
- CStifTFwIfProt& aResp: in
-
- Return Values: KErrNotSupported
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::MsgRemoteSendReceive( CUIEngineContainer* aContainer,
- CStifTFwIfProt& aReq,
- CStifTFwIfProt& aResp )
- {
-
- TInt ret = KErrNone;
- // TUint16 testid = 0;
-
- if( ( aReq.DstDevId() == 0 ) ||
- ( aReq.DstTestId() != 0 ) )
- {
- // Protocol violation
- __TRACE( KError, ( _L( "AtsReceive: remote run for illegal dstid received") ) );
- return KErrGeneral;
- }
-
- if ( aReq.DstDevId() != DevId() )
- {
- // Not our protocol message
- __TRACE( KError, ( _L( "AtsReceive: remote run for illegal dstdevid received") ) );
- return KErrNotFound;
- }
-
- // testid = 1;
- CStifTFwIfProt* resp = NULL;
- TRAPD( err,
- resp = CStifTFwIfProt::NewL();
- resp->CreateL();
- );
- if( err != KErrNone )
- {
- delete resp;
- return err;
- }
-
- resp->SetMsgType( CStifTFwIfProt::EMsgResponse );
- //resp->SetSrcId( SETID( DevId(), testid ) );
- resp->SetSrcId( aReq.DstId() );
- resp->SetDstId( aReq.SrcId() );
- resp->SetRespType( CStifTFwIfProt::EMsgRemote );
- resp->SetCmdType( CStifTFwIfProt::ECmdSendReceive );
-
- ret = RemotePopup( aContainer, aReq.Message(), resp );
- if( ret != KErrNone )
- {
- delete resp;
- }
-
- aResp.AppendId( aReq.DstId() );
- aResp.AppendId( aReq.SrcId() );
- aResp.Append( CStifTFwIfProt::MsgType, CStifTFwIfProt::EMsgRemote );
- aResp.Append( CStifTFwIfProt::CmdType, CStifTFwIfProt::ECmdSendReceive );
- if( ret != KErrNone )
- {
- aResp.Append( CStifTFwIfProt::RunStatus,
- CStifTFwIfProt::ERunError );
- aResp.Append( CStifTFwIfProt::RunStatusParams,
- CStifTFwIfProt::ERunResult, ret );
- }
- else
- {
- aResp.Append( CStifTFwIfProt::RunStatus,
- CStifTFwIfProt::ERunStarted );
- }
-
- // Send response
- aContainer->RemoteReceive( aResp.Message() );
-
- // Response is created, return success
- ret = KErrNone;
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: GoingToReboot
-
- Description: Reboot indication handling.
-
- Parameters: CUIEngineContainer* aContainer: in: Container
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::GoingToReboot( CUIEngineContainer* /* aContainer */,
- TRequestStatus& aStatus )
- {
-
- _LIT( KDateString,"%H%T%S.%C" );
-
- const TInt KTimeFieldLength = 30;
- TBuf<KTimeFieldLength> time;
-
- // Store info
- CStifLogger* logger = CStifLogger::NewL( KUIStoreDefaultDir,
- KUIStoreDefaultRebootFile,
- CStifLogger::EData,
- CStifLogger::EFile,
- ETrue,
- EFalse,
- EFalse,
- EFalse,
- EFalse,
- ETrue );
-
- CleanupStack::PushL( logger );
- TInt count = iStartedTestCases.Count();
- for( TInt index=0; index<count; index++ )
- {
- logger->Log( _L("%S\r\n"), &KUIStoreStartTest );
-
- // First test case info
- logger->Log( _L("%S %S\r\n"), &KUIStoreCaseModuleName,
- &iStartedTestCases[index]->TestInfo().ModuleName() );
- logger->Log( _L("%S %S\r\n"), &KUIStoreTestCaseTitle,
- &iStartedTestCases[index]->TestInfo().TestCaseTitle() );
- if( iStartedTestCases[index]->TestInfo().TestCaseFile().Length() > 0 )
- {
- logger->Log( _L("%S %S\r\n"), &KUIStoreTestCaseFile,
- &iStartedTestCases[index]->TestInfo().TestCaseFile() );
- }
- logger->Log( _L("%S %d\r\n"), &KUIStoreTestCaseNum,
- iStartedTestCases[index]->TestInfo().TestCaseNum() );
- logger->Log( _L("%S %d\r\n"), &KUIStoreCasePriority,
- iStartedTestCases[index]->TestInfo().Priority() );
- //@js<--remove--> logger->Log( _L("%S %d %d\r\n"), &KUIStoreCaseTimeout,
- //@js<--remove--> iStartedTestCases[index]->TestInfo().Timeout().Int64().Low(),
- //@js<--remove--> iStartedTestCases[index]->TestInfo().Timeout().Int64().High() );
- logger->Log( _L("%S %d %d\r\n"), &KUIStoreCaseTimeout,
- I64LOW(iStartedTestCases[index]->TestInfo().Timeout().Int64()),
- I64HIGH(iStartedTestCases[index]->TestInfo().Timeout().Int64()));
-
- logger->Log( _L("%S %d\r\n"), &KUIStoreCaseExpectedResult,
- iStartedTestCases[index]->TestInfo().ExpectedResult() );
-
- logger->Log( _L("%S %d\r\n"), &KUIStoreCaseStatus,
- iStartedTestCases[index]->Status() );
-
- logger->Log( _L("%S %d %d\r\n"), &KUIStoreCaseExecutionResult,
- iStartedTestCases[index]->Result().iCaseExecutionResultType,
- iStartedTestCases[index]->Result().iCaseExecutionResultCode );
- logger->Log( _L("%S %d %S\r\n"), &KUIStoreCaseResult,
- iStartedTestCases[index]->Result().iTestResult.iResult,
- &iStartedTestCases[index]->Result().iTestResult.iResultDes );
-
- // Start time
- iStartedTestCases[index]->Result().iStartTime.FormatL(
- time, KDateString );
- logger->Log( _L("%S %S\r\n"), &KUIStoreCaseStartTime, &time );
-
- // Start time
- iStartedTestCases[index]->Result().iEndTime.FormatL(
- time, KDateString );
- logger->Log( _L("%S %S\r\n"), &KUIStoreCaseEndTime, &time );
-
- logger->Log( _L("%S\r\n\r\n"), &KUIStoreStartTestEnd );
- }
-
- CleanupStack::PopAndDestroy( logger );
-
- // Show popup
- TKeyCode key;
- iUIStoreIf->PopupMsg( _L("GoingToReboot"),
- _L("Press any key to continue"),
- KRebootPopupTimeout, key, aStatus );
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: LoadExecutedTestCasesL
-
- Description: Load all executed testcases saved before reboot.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: Leaves on error
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::LoadExecutedTestCasesL()
- {
- TPtrC tmp;
- TInt num = 0;
- TInt high = 0;
- TInt64 interval;
- TFullTestResult result;
- TInt status = 0;
- CStifItemParser* item = NULL;
- TInt ret = KErrNone;
-
- CStifParser* parser = NULL;
- TRAP( ret,
- parser = CStifParser::NewL( KUIStoreDefaultDir,
- KUIStoreDefaultRebootFile );
- );
- if( ret != KErrNone )
- {
- // reboot file not found
- return;
- }
- CleanupStack::PushL( parser );
-
- __TRACE( KInit, ( _L( "Reboot file is found(%S%S). Reboot testing ongoing..." ), &KUIStoreDefaultDir, &KUIStoreDefaultRebootFile ) );
-
- CTestInfo* testInfo = NULL;
-
- CStifSectionParser* section =
- parser->SectionL( KUIStoreStartTest, KUIStoreStartTestEnd );
-
- while( section )
- {
- CleanupStack::PushL( section );
-
- testInfo = CTestInfo::NewL();
- CleanupStack::PushL( testInfo );
-
- // Get module name
- // Mandatory, leave if not found
- User::LeaveIfError(
- section->GetLine( KUIStoreCaseModuleName, tmp, ENoTag ) );
- testInfo->SetModuleName( tmp );
-
- // Get test case title
- // Mandatory, leave if not found
- User::LeaveIfError(
- section->GetLine( KUIStoreTestCaseTitle, tmp, ENoTag ) );
- testInfo->SetTestCaseTitle( tmp );
-
- // Get test case file
- num = section->GetLine( KUIStoreTestCaseFile, tmp, ENoTag );
- if( ( num == KErrNone ) &&
- ( tmp.Length() > 0 ) )
- {
- // Optional
- testInfo->SetTestCaseFile( tmp );
- }
- else
- {
- testInfo->SetTestCaseFile( KNullDesC );
- }
-
- // Get test case number
- item = section->GetItemLineL( KUIStoreTestCaseNum );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreTestCaseNum, num ));
- testInfo->SetTestCaseNumber( num );
- CleanupStack::PopAndDestroy( item );
-
- // Get test case priority
- item = section->GetItemLineL( KUIStoreCasePriority );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCasePriority, num ));
- testInfo->SetPriority( num );
- CleanupStack::PopAndDestroy( item );
-
- // Get test case timeout
- item = section->GetItemLineL( KUIStoreCaseTimeout );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCaseTimeout, num ));
- User::LeaveIfError( item->GetNextInt( high ));
- //interval.Set( high, num );
- interval = MAKE_TINT64( high, num );
- TTimeIntervalMicroSeconds timeout( interval );
- testInfo->SetTimeout( timeout );
- CleanupStack::PopAndDestroy( item );
-
- // Get test case status
- item = section->GetItemLineL( KUIStoreCaseStatus );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCaseStatus, status ));
- CleanupStack::PopAndDestroy( item );
-
- // Get test case execution result
- item = section->GetItemLineL( KUIStoreCaseExecutionResult );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCaseExecutionResult, num ));
- result.iCaseExecutionResultType = ( TFullTestResult::TCaseExecutionResult) num;
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetNextInt( result.iCaseExecutionResultCode ));
- CleanupStack::PopAndDestroy( item );
-
- // Get test case result
- item = section->GetItemLineL( KUIStoreCaseResult );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetInt( KUIStoreCaseResult,
- result.iTestResult.iResult ));
- // Not mandatory
- TBool first = ETrue;
- result.iTestResult.iResultDes.Zero();
- ret = item->GetNextString( tmp );
- while( ret == KErrNone )
- {
- if( result.iTestResult.iResultDes.Length() + tmp.Length() + 1 > result.iTestResult.iResultDes.MaxLength() )
- {
- User::Leave( KErrGeneral );
- }
- if(!first)
- result.iTestResult.iResultDes.Append(_L(" "));
- result.iTestResult.iResultDes.Append( tmp );
- first = EFalse;
- ret = item->GetNextString( tmp );
- }
- /*
- ret = item->GetNextString( tmp );
- if( ret == KErrNone )
- {
- if( tmp.Length() > result.iTestResult.iResultDes.MaxLength() )
- {
- User::Leave( KErrGeneral );
- }
- result.iTestResult.iResultDes.Copy( tmp );
- }
- */
- CleanupStack::PopAndDestroy( item );
-
- // Get test start time
- item = section->GetItemLineL( KUIStoreCaseStartTime );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetString( KUIStoreCaseStartTime, tmp ));
- result.iStartTime.Set( tmp );
- CleanupStack::PopAndDestroy( item );
-
- // Get test end time
- item = section->GetItemLineL( KUIStoreCaseEndTime );
- CleanupStack::PushL( item );
- // Mandatory, leave if not found
- User::LeaveIfError( item->GetString( KUIStoreCaseEndTime, tmp ));
- result.iEndTime.Set( tmp );
- CleanupStack::PopAndDestroy( item );
-
- if( status != CUIStoreIf::EStatusRunning )
- {
- // Add executed test cases to list
- CStartedTestCase* startedCase =
- new( ELeave )CStartedTestCase( testInfo, result, status );
- User::LeaveIfError( iStartedTestCases.Append( startedCase ) );
- CleanupStack::Pop( testInfo );
-
- // Fill data with test case info and send to test engine
- TTestInfo *info = new (ELeave) TTestInfo;
- CleanupStack::PushL(info);
- info->iModuleName.Copy(testInfo->ModuleName());
- info->iConfig.Copy(testInfo->TestCaseFile());
- info->iTestCaseInfo.iCaseNumber = testInfo->TestCaseNum();
- info->iTestCaseInfo.iTitle.Copy(testInfo->TestCaseTitle());
- info->iTestCaseInfo.iTimeout = testInfo->Timeout();
- info->iTestCaseInfo.iPriority = testInfo->Priority();
-
- iUIEngine->TestEngine().AddTestCaseResultToTestReport(*info, result, KErrNone);
- CleanupStack::PopAndDestroy(info);
- }
- else
- {
- // Restart testcase that was running when reset was done
- CUIEngineContainer* container = NULL;
- User::LeaveIfError(
- iUIEngine->StartTestCase( container, *testInfo ) );
-
- CStartedTestCase* testCase = NULL;
- TRAPD( retVal,
- testCase = CStartedTestCase::NewL( *testInfo, *container );
- );
- if( retVal != KErrNone )
- {
- iUIEngine->AbortStartedTestCase( container );
- User::Leave( retVal );
- }
-
- retVal = iStartedTestCases.Append( testCase );
- if( retVal != KErrNone )
- {
- iUIEngine->AbortStartedTestCase( container );
- delete testCase;
- User::Leave( retVal );
- }
-
- CleanupStack::PopAndDestroy( testInfo );
-
- }
-
- CleanupStack::PopAndDestroy( section );
- section =
- parser->NextSectionL( KUIStoreStartTest, KUIStoreStartTestEnd );
- }
-
- CleanupStack::PopAndDestroy( parser );
-
- // Delete file
- RFs rf;
- TInt retVal = rf.Connect();
- if( retVal != KErrNone )
- {
- User::Leave( retVal );
- }
-
- TFileName file( KUIStoreDefaultDir );
- file.Append( KUIStoreDefaultRebootFile );
- rf.Delete( file );
- rf.Close();
-
- return;
- }
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: FindByContainer
-
- Description: Find test case with UIEngine Container pointer.
-
- Parameters: CUIEngineContainer* const aContainer: in: Execution container
- CStartedTestCase*& aTestCase: out: Testcase info
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::FindByContainer( CUIEngineContainer* const aContainer,
- CStartedTestCase*& aTestCase )
- {
-
- TInt count = iStartedTestCases.Count();
- TInt index = 0;
- for( ; index < count; index++ )
- {
- if( ( iStartedTestCases[index]->Status() &
- CUIStoreIf::EStatusRunning ) &&
- ( &iStartedTestCases[index]->UIEngineContainer() ==
- aContainer ) )
- {
- aTestCase = iStartedTestCases[index];
- return KErrNone;
- }
- }
-
- return KErrNotFound;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: UpdateCases
-
- Description: Refreshs iTestCases array ie. fetches test cases from
- test framework
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::UpdateCases()
- {
-
- if( iUpdateNeeded )
- {
- TInt handle = iUIStoreIf->PopupMsg(
- _L("Updating"), _L("Test cases"), 60 );
- iTestCases.ResetAndDestroy();
- TRAPD( ret,
- ret = iUIEngine->GetTestCasesL( iTestCases );
- );
- iUpdateNeeded = EFalse;
- // Close popup
- iUIStoreIf->Close( handle );
- if( iTestCases.Count() == 0 )
- {
- iUIStoreIf->PopupMsg( _L("No test cases found"),
- _L("e.g. check TestEngine log"),
- 3 );
- }
- return ret;
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: CheckIniL
-
- Description: Check ini file
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::CheckIniL( TFileName& aIni )
- {
-
- RFs fs;
- User::LeaveIfError( fs.Connect() );
- RFile file;
- TInt err = KErrNone;
- TErrorNotification error;
- error.iModule.Copy( KUIStore );
-
- TStifUtil::CorrectFilePathL( aIni );
-
- if ( aIni.Length() != 0 )
- {
- err = file.Open ( fs, aIni, EFileRead );
-
- if ( err == KErrNone )
- {
- // Use the file given as command line parameter
- iUIStoreIf->PopupMsg( _L("Using given ini-file"),
- KNullDesC, 0 );
- file.Close();
- fs.Close();
- return;
- }
- else
- {
- error.iText.Copy( _L("Can't open given ini-file") );
- iUIStoreIf->Error( error );
- aIni.Zero();
- }
- }
-
- // Try to locate default ini file from every drive
- TDriveList drivelist;
- User::LeaveIfError( fs.DriveList(drivelist) );
- // A TDriveList (the list of available drives), is an array of
- // 26 bytes. Each byte with a non zero value signifies that the
- // corresponding drive is available.
-
- TInt driveNumber;
- TChar driveLetter;
-
- for( driveNumber=EDriveA; driveNumber<=EDriveZ; driveNumber++ )
- {
- if( !drivelist[driveNumber] )
- {
- // If drive-list entry is zero, drive is not available
- continue;
- }
- User::LeaveIfError(
- fs.DriveToChar( driveNumber, driveLetter ));
-
- aIni.Zero();
- aIni.Append( driveLetter );
- aIni.Append( _L(":") );
- aIni.Append( KDefaultIni );
-
- // Try to open
- err = file.Open ( fs, aIni, EFileRead );
-
- if ( err == KErrNone )
- {
- // Use default file
- file.Close();
- TFileName info( _L("Using default ini-file ") );
- if( info.MaxLength()-info.Length() > aIni.Length() )
- {
- // Show also filename if fits to descriptor
- info.Append( aIni );
- }
- iUIStoreIf->PopupMsg( info, KNullDesC, 0 );
- break;
- }
- }
- if( err != KErrNone )
- {
- iUIStoreIf->PopupMsg( _L("Starting without ini-file"),
- KNullDesC, 0);
- aIni.Zero();
- }
-
- fs.Close();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ParseTestSetName
-
- Description: Parses test set name from test set filename.
-
- Parameters: const TDesC& aSetFileName: in: Test set filename
- TPtrC& aSetName: out: testset name
- TFileName& aFileName: in: filenamebuffer
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::ParseTestSetName( const TDesC& aSetFileName,
- TPtrC& aSetName,
- TFileName& aFileName )
- {
- if( aSetFileName.Length() > KMaxFileName )
- {
- return KErrArgument;
- }
-
- aFileName.Copy( aSetFileName );
- TParsePtr p( aFileName );
- aSetName.Set( p.NameAndExt() ); // gives test set name without path
-
- if( aSetName.Length() > KMaxName )
- {
- return KErrArgument;
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemotePopup
-
- Description: Do remote message popup
-
- Parameters: const TDesC& aReq: in: request
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::RemotePopup( CUIEngineContainer* aContainer,
- const TDesC& aMsg,
- CStifTFwIfProt* aResp,
- TPopupPriority aPopupPriority )
- {
- TInt ret = KErrNone;
-
- CUIStorePopup* popup = NULL;
- TRAP( ret, popup = CUIStorePopup::NewL( this, aContainer, aResp, aPopupPriority, aMsg ); );
- if( ret != KErrNone )
- {
- return ret;
- }
- ret = iPopups.Append( popup );
- if( ret != KErrNone )
- {
- delete popup;
- return ret;
- }
-
- // We'll put new popup to the top if there are no popups active or if
- // currently active popup has lower priority than the new one
- if( !iPopupActive || iActivePopupPriority > popup->GetPriority() )
- {
- SetRemotePopupFromQueue();
- }
-
- return ret;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: SetRemotePopupFromQueue
-
- Description: Prints the highest priority popup to the UI from the popup
- queue
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft @js
-
--------------------------------------------------------------------------------
-*/
-
-void CUIStore::SetRemotePopupFromQueue()
- {
- CUIStorePopup* popup = NULL;
-
- if(iPopups.Count() > 0 )
- {
- TInt highest = 0;
-
- // Let's get the highest priority popup and print it to the UI
- for( TInt x=0; x<iPopups.Count(); x++)
- {
- if( iPopups[x]->GetPriority() < iPopups[highest]->GetPriority() )
- {
- highest = x;
- }
- }
-
- popup = iPopups[highest];
-
- if( popup == NULL )
- {
- // Some weird error
- iPopupActive = EFalse;
- return;
- }
-
- // Change the active popup priority
- iActivePopupPriority = popup->GetPriority();
-
- // Create proper popup
- if( popup->GetPriority() == EPopupPriorityHighest )
- {
- popup->Start( popup->GetMessage().Right( popup->GetMessage().Length() - KRcpHeaderLen ),
- _L("Press any key to send 'remote run started' message"));
- }
- else if( popup->GetPriority() == EPopupPriorityNormal )
- {
- popup->Start( popup->GetMessage().Right( popup->GetMessage().Length() - KRcpHeaderLen ),
- _L("Press any key to set event") );
- }
- else if( popup->GetPriority() == EPopupPriorityLow )
- {
- popup->Start( popup->GetMessage().Right( popup->GetMessage().Length() - KRcpHeaderLen ),
- _L("Press 1-9 to return negative error value, a to switch to another remote run result popup, or any other key to return 0") );
- }
-
- iPopupActive = ETrue;
- }
- }
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ShuffleRemoteRunResultPopups
-
- Description: Shuffle remote run result popups
-
- Parameters: CUIStorePopup* aPopup (currently active popup)
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft @js
-
--------------------------------------------------------------------------------
-*/
-void CUIStore::ShuffleRemoteRunResultPopups( CUIStorePopup* aPopup )
- {
- TInt nextPopupId = -1;
-
- for( TInt x=0; x<iPopups.Count(); x++)
- {
- // Lets find the next remote run result priority popup
- if( iPopups[x]->GetPriority() == EPopupPriorityLow && iPopups[x] != aPopup )
- {
- nextPopupId = x;
- break;
- }
- }
-
- if( nextPopupId == -1 )
- {
- // We'll print error message popup, because there weren't any other remote run
- // result popups active
-
- iUIStoreIf->PopupMsg(
- _L("Error! There weren't any other remote run result popups active."),
- _L(""),
- 5 );
- User::After( 5000000 );
- iPopups.Append( aPopup );
- SetRemotePopupFromQueue();
- return;
- }
-
- // We'll add the popup to the end of the array
- TInt ret = iPopups.Append( aPopup );
-
- if( ret != KErrNone )
- {
- delete aPopup;
- return;
- }
-
- // Print the next popup from queue
- SetRemotePopupFromQueue();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: RemotePopup
-
- Description: Do remote message popup
-
- Parameters: const TDesC& aReq: in: request
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIStore::RemotePopupComplete( CUIStorePopup* aPopup,
- TInt aError,
- CUIEngineContainer* aContainer,
- CStifTFwIfProt* aResp,
- TKeyCode aKeyCode )
- {
-
- TInt ret = KErrNone;
- TInt index = iPopups.Find( aPopup );
- if( index < 0 )
- {
- User::Panic( KUIStore, KErrGeneral );
- }
- iPopups.Remove( index );
-
- iPopupActive = EFalse;
- iActivePopupPriority = EPopupPriorityLow;
-
- if( aError != KErrNone )
- {
- ret = aError;
- }
- else
- {
- TChar c( aKeyCode );
- if( c.IsDigit() )
- {
- // Solve return value
- ret = -( aKeyCode - '0' );
- }
- else
- {
- ret = KErrNone;
- }
- }
- // If aResp is given, send it
- if( aResp )
- {
- switch( aResp->iCmdType )
- {
- case CStifTFwIfProt::ECmdRun:
- {
- TChar response( aKeyCode );
- RDebug::Print(_L("CUIStore::RemotePopupComplete: user pressed key %c"), (char)response);
-
- if( aPopup->GetPriority() == EPopupPriorityHighest )
- {
- // User has given response to remote run started- popup
- aResp->Append( CStifTFwIfProt::RunStatus,
- CStifTFwIfProt::ERunStarted );
- }
- else if( aPopup->GetPriority() == EPopupPriorityLow && response=='a' )
- {
- // User wants to change current remote run result popup to other
- // remote run result popup.
-
- ShuffleRemoteRunResultPopups( aPopup );
- return KErrNone;
- }
- else
- {
- // The test case result was given
- aResp->Append( CStifTFwIfProt::RunStatus,
- CStifTFwIfProt::ERunReady );
- if( ret != KErrNone )
- {
- aResp->Append( CStifTFwIfProt::RunStatusParams,
- CStifTFwIfProt::ERunResult, ret );
- }
- }
- break;
- }
- case CStifTFwIfProt::ECmdSendReceive:
- {
- aResp->Append( CStifTFwIfProt::RunStatus,
- CStifTFwIfProt::ERunReady );
- if( ret != KErrNone )
- {
- aResp->Append( CStifTFwIfProt::RunStatusParams,
- CStifTFwIfProt::ERunResult, ret );
- }
- break;
- }
- case CStifTFwIfProt::ECmdPause:
- case CStifTFwIfProt::ECmdResume:
- case CStifTFwIfProt::ECmdCancel:
- case CStifTFwIfProt::ECmdRequest:
- case CStifTFwIfProt::ECmdRelease:
- default:
- if( ret != KErrNone )
- {
- aResp->Append( CStifTFwIfProt::RespParam,
- CStifTFwIfProt::ERespResult,
- ret );
- }
- break;
- }
-
- ret = aContainer->RemoteReceive( aResp->Message() );
- }
-
- delete aPopup;
-
- SetRemotePopupFromQueue();
-
- return ret;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStore
-
- Method: ReadFiltersL
-
- Description: Reads filters from test framework initialization file.
-
- Parameters: RPointerArray<TDesC>& aFilters: array to be filled
-
- Return Values: None
-
- Errors/Exceptions:
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CUIStore::ReadFiltersL(RPointerArray<TDesC>& aFilters)
- {
- // Clean array
- aFilters.ResetAndDestroy();
-
- // Locate file
- _LIT(KFilterSectionStart, "[Filters]");
- _LIT(KFilterSectionEnd, "[End_Filters]");
- _LIT(KFilterDefinition, "filter=");
-
- // Parse initialization file
- TInt err = KErrNone;
- CStifParser* parser;
-
- RDebug::Print(_L("STIF: Try to read filters from [%S]"), &iTestFrameworkIni);
- parser = CStifParser::NewL(KNullDesC, iTestFrameworkIni);
- CleanupStack::PushL(parser);
-
- // Parser created (file exists), create section parser
- CStifSectionParser* section;
- section = parser->SectionL(KFilterSectionStart, KFilterSectionEnd);
- if(section)
- {
- CleanupStack::PushL(section);
-
- // Get item lines
- CStifItemParser* item = section->GetItemLineL(KFilterDefinition, ENoTag);
-
- TPtrC ptr;
-
- while(item)
- {
- CleanupStack::PushL(item);
-
- // Read filter value
- err = item->GetString(KNullDesC, ptr);
- if(err == KErrNone)
- {
- HBufC* filter = ptr.AllocLC();
- User::LeaveIfError(aFilters.Append(filter));
- CleanupStack::Pop();
- }
-
- CleanupStack::PopAndDestroy(item);
- item = NULL;
- item = section->GetNextItemLineL(KFilterDefinition, ENoTag);
- }
-
- CleanupStack::PopAndDestroy(section);
- }
-
- // Clean
- CleanupStack::PopAndDestroy(parser);
-
- // If there are some filters added, first filter has to be "No filter"
- if(aFilters.Count() > 0)
- {
- RDebug::Print(_L("STIF: Filters loaded"));
- _LIT(KNoFilter, "No filter");
- HBufC* name = KNoFilter().AllocLC();
- User::LeaveIfError(aFilters.Insert(name, 0));
- CleanupStack::Pop(name);
- }
- }
-
-/*
--------------------------------------------------------------------------------
-
- DESCRIPTION
-
- This module contains implementation of CUIStoreIf class member functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStoreIf
-
- Method: ConstructL
-
- Description: Second phase constructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: Leaves if..
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CUIStoreIf::ConstructL( )
- {
-
- iUIStore = CUIStore::NewL( this );
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStoreIf
-
- Method: CUIStoreIf
-
- Description: Constructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CUIStoreIf::CUIStoreIf( )
- {
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStoreIf
-
- Method: ~CUIStoreIf
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CUIStoreIf::~CUIStoreIf()
- {
-
- delete iUIStore;
- iUIStore = NULL;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIStoreIf
-
- Method: UIStore
-
- Description: Returns reference to CUIStore object, which handles test
- cases and test modules.
-
- Parameters: None
-
- Return Values: CUIStore reference
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CUIStore& CUIStoreIf::UIStore()
- {
-
- __ASSERT_ALWAYS( iUIStore, User::Panic( KUIStoreIf, KErrNotFound ) );
-
- return *iUIStore;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- DESCRIPTION
-
- This module contains implementation of CTestSetInfo class member functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: NewL
-
- Description: Construct the CTestSetInfo class
-
- Parameters: None
-
- Return Values: CTestSetInfo* New object
-
- Errors/Exceptions: Leaves if memory allocation fails or
- ConstructL leaves.
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetInfo* CTestSetInfo::NewL( const TDesC& aName )
- {
-
- CTestSetInfo* self = new ( ELeave ) CTestSetInfo();
- CleanupStack::PushL( self );
- self->ConstructL( aName );
- CleanupStack::Pop( self );
-
- return self;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: ConstructL
-
- Description: Second phase constructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: Leaves if..
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetInfo::ConstructL( const TDesC& aName )
- {
-
- iName = aName.AllocL();
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: CTestSetInfo
-
- Description: Constructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetInfo::CTestSetInfo()
- {
- iLastStartedCaseIndex = 0;
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: ~CTestSetInfo
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetInfo::~CTestSetInfo()
- {
-
- iTestCases.ResetAndDestroy();
- iTestCaseRefs.Reset();
- iTestCases.Close();
- iTestCaseRefs.Close();
-
- delete iName;
- iName = NULL;
-
- }
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: AddTestCase
-
- Description: Add test case to test set.
-
- Parameters: const CTestInfo& aTestInfo: in: test info
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetInfo::AddTestCase( const CTestInfo& aTestInfo )
- {
-
- CTestInfo* testInfo = NULL;
-
- TRAPD( err,
- testInfo = CTestInfo::NewL();
- testInfo->CopyL( aTestInfo );
- );
- if( err != KErrNone )
- {
- return err;
- }
-
- if( iTestCaseRefs.Append( *testInfo ) != KErrNone )
- {
- delete testInfo;
- return KErrNoMemory;
- }
- if( iTestCases.Append( testInfo ) != KErrNone )
- {
- iTestCaseRefs.Remove( iTestCaseRefs.Count()-1 );
- delete testInfo;
- return KErrNoMemory;
- }
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: InsertTestCase
-
- Description: Insert test case to test set.
-
- Parameters: const CTestInfo& aTestInfo: in: test info
- TInt aPos: in: position to add
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetInfo::InsertTestCase( const CTestInfo& aTestInfo, TInt aPos )
- {
-
- if( ( aPos < 0 ) ||
- ( aPos >= iTestCases.Count() ) )
- {
- return KErrArgument;
- }
-
- CTestInfo* testInfo = NULL;
-
- TRAPD( err,
- testInfo = CTestInfo::NewL();
- testInfo->CopyL( aTestInfo );
- );
- if( err != KErrNone )
- {
- return err;
- }
-
- if( iTestCaseRefs.Insert( *testInfo, aPos ) != KErrNone )
- {
- delete testInfo;
- return KErrNoMemory;
- }
- if( iTestCases.Insert( testInfo, aPos ) != KErrNone )
- {
- iTestCaseRefs.Remove( aPos );
- delete testInfo;
- return KErrNoMemory;
- }
-
- return err;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: RemoveTestCase
-
- Description: Remove test case from test set.
-
- Parameters: const CTestInfo& aTestInfo: in: test info
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetInfo::RemoveTestCase( const CTestInfo& aTestInfo )
- {
-
- TInt count = iTestCases.Count();
- for( TInt i=0; i<count; i++ )
- {
- if( aTestInfo == *iTestCases[i] )
- {
- CTestInfo* testInfo = iTestCases[i];
- iTestCases.Remove( i );
- iTestCaseRefs.Remove( i );
- delete testInfo;
- return KErrNone;
- }
- }
-
- return KErrNotFound;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: CopyL
-
- Description: Remove test case from test set.
-
- Parameters: const CTestInfo& aTestInfo: in: test info
-
- Return Values: Symbian OS error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetInfo::CopyL( const CTestSetInfo& aTestSetInfo )
- {
-
- iTestCaseRefs.Reset();
- iTestCases.ResetAndDestroy();
-
- TInt count = aTestSetInfo.TestCases().Count();
- for( TInt i=0; i<count; i++ )
- {
- User::LeaveIfError( AddTestCase( aTestSetInfo.TestCases()[i] ) );
- }
-
- delete iName;
- iName = 0;
- iName = aTestSetInfo.Name().AllocL();
-
- iLastStartedCaseIndex = aTestSetInfo.iLastStartedCaseIndex;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: SetLastStartedCaseIndex
-
- Description: Sets the info which test case has been started lately.
-
- Parameters: TInt aCaseStarted: index of started test case
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestSetInfo::SetLastStartedCaseIndex(TUint aLastStartedCaseIndex)
- {
- iLastStartedCaseIndex = aLastStartedCaseIndex;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: GetLastStartedCaseIndex
-
- Description: Gets the info which test case has been started lately.
-
- Parameters: None
-
- Return Values: TInt: index of lately started test case
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TUint CTestSetInfo::GetLastStartedCaseIndex(void)
- {
- return iLastStartedCaseIndex;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestSetInfo
-
- Method: RenameTestSet
-
- Description: rename test set
-
- Parameters: aTestSetName : new TestSetName
-
- Return Values: TInt: KErrNone if success.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestSetInfo::RenameTestSet(const TDesC& aTestSetName)
- {
- delete iName;
- iName=NULL;
- iName=aTestSetName.AllocL();
- }
-// ================= OTHER EXPORTED FUNCTIONS =================================
-
-// End of File