--- a/stif/TestEngine/src/TestModuleInfo.cpp Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1001 +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
-* CTestModuleList class and CTestModuleInfo class member functions.
-*
-*/
-
-// INCLUDE FILES
-#include "TestModuleInfo.h"
-#include <e32svr.h>
-#include "Logging.h"
-
-// EXTERNAL DATA STRUCTURES
-// None
-
-// EXTERNAL FUNCTION PROTOTYPES
-// None
-
-// CONSTANTS
-// None
-
-// MACROS
-// None
-
-// LOCAL CONSTANTS AND MACROS
-// None
-
-// MODULE DATA STRUCTURES
-// None
-
-// LOCAL FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-// None
-
-// ==================== LOCAL FUNCTIONS =======================================
-// None
-
-#define LOGGER iLogger
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: CTestModuleInfo
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleInfo::CTestModuleInfo()
- {
- iLogger = NULL;
- iModuleName = NULL;
- iIniFileName = NULL;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave.
-
- Parameters: aModuleName: module name
- aLogger: pointer to stif logger
-
- Return Values: None
-
- Errors/Exceptions:
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestModuleInfo::ConstructL(TDesC& aModuleName, CStifLogger* aLogger)
- {
- iLogger = aLogger;
-
- if(iModuleName)
- {
- delete iModuleName;
- iModuleName = NULL;
- }
- iModuleName = aModuleName.AllocL();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: aModuleName: module name
- aLogger: pointer to stif logger
-
- Return Values: CTestModuleInfo* : pointer to created object
-
- Errors/Exceptions: Leaves if memory allocation for object fails
- Leaves if ConstructL leaves
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleInfo* CTestModuleInfo::NewL(TDesC& aModuleName, CStifLogger* aLogger)
- {
- CTestModuleInfo* self = new (ELeave) CTestModuleInfo();
- CleanupStack::PushL(self);
- self->ConstructL(aModuleName, aLogger);
- CleanupStack::Pop(self);
- return self;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: ~CTestModuleInfo
-
- Description: Destructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleInfo::~CTestModuleInfo()
- {
- delete iModuleName;
- delete iIniFileName;
-
- iCfgFiles.ResetAndDestroy();
- iCfgFiles.Close();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: SetIniFile
-
- Description: Set ini file
-
- Parameters: aIniFileName: initialization file name
-
- Return Values: KErrNone if everything went ok
- KErrAlreadyExists if ini file was already set
- Symbian error code otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::SetIniFile(TDesC& aIniFileName)
- {
- if(iIniFileName)
- {
- return KErrAlreadyExists;
- }
-
- TRAPD(err, iIniFileName = aIniFileName.AllocL());
- if(err != KErrNone)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not create descriptor (CTestModuleInfo::SetIniFile) for string '%S'. Error %d."), &aIniFileName, err));
- }
- else
- {
- RDebug::Print(_L("Could not create descriptor (CTestModuleInfo::SetIniFile) for string '%S'. Error %d."), &aIniFileName, err);
- }
- return err;
- }
-
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: AddCfgFile
-
- Description: Add config file if it is not yet added to the array
-
- Parameters: aCfgFileName: file name
-
- Return Values: KErrNone if everything went ok
- KErrAlreadyExists if config file is already present
- Symbian error code otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::AddCfgFile(TDesC& aCfgFileName)
- {
- //Check if given file name does not exist already
- TInt cnt = iCfgFiles.Count();
- TInt i;
- TFileName cfgFileName;
-
- //Check if given module is already on the list
- for(i = 0; i < cnt; i++)
- {
- iCfgFiles[i]->GetCfgFileName(cfgFileName);
- if(cfgFileName == aCfgFileName)
- {
- return KErrAlreadyExists;
- }
- }
-
- //Add to array
- TInt err = KErrNone;
- CTestCaseFileInfo* tmp = NULL;
- TRAP(err, tmp = CTestCaseFileInfo::NewL(aCfgFileName, iLogger));
- if(err != KErrNone)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not create CTestCaseFileInfo object (CTestModuleInfo::AddCfgFile). Error %d."), err));
- }
- else
- {
- RDebug::Print(_L("Could not create CTestCaseFileInfo object (CTestModuleInfo::AddCfgFile). Error %d."), err);
- }
- return err;
- }
- if(!tmp)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not create CTestCaseFileInfo object (CTestModuleInfo::AddCfgFile)")));
- }
- else
- {
- RDebug::Print(_L("Could not create CTestCaseFileInfo object (CTestModuleInfo::AddCfgFile)"));
- }
- return KErrGeneral;
- }
-
- err = iCfgFiles.Append(tmp);
- if(err != KErrNone)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not append CTestCaseFileInfo object to array (CTestModuleInfo::AddCfgFile). Error %d."), err));
- }
- else
- {
- RDebug::Print(_L("Could not append CTestCaseFileInfo object to array (CTestModuleInfo::AddCfgFile). Error %d."), err);
- }
- delete tmp;
- return err;
- }
-
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: CountCfgFiles
-
- Description: Return number of config files
-
- Parameters: None
-
- Return Values: number of config files
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::CountCfgFiles(void)
- {
- return iCfgFiles.Count();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: GetModuleName
-
- Description: Get module name
-
- Parameters: None
-
- Return Values:
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::GetModuleName(TDes& aModuleName)
- {
- aModuleName.Zero();
- if(iModuleName)
- {
- aModuleName.Copy(*iModuleName);
- }
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: GetIniFileName
-
- Description: Get module ini file name
-
- Parameters: None
-
- Return Values:
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::GetIniFileName(TDes& aIniFileName)
- {
- aIniFileName.Zero();
- if(iIniFileName)
- {
- aIniFileName.Copy(*iIniFileName);
- }
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: GetCfgFileName
-
- Description: Get config file name
-
- Parameters: aIndex: index of config file
-
- Return Values: TDesC&: config file name
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleInfo::GetCfgFileName(TInt aIndex, TDes& aCfgFileName)
- {
- aCfgFileName.Zero();
- TInt cnt = iCfgFiles.Count();
-
- //Check index
- if(aIndex >= cnt || aIndex < 0)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Given index reaches out of array (CTestModuleInfo::GetCfgFileName). Given index: %d. Max allowed index: %d"), aIndex, cnt - 1));
- }
- else
- {
- RDebug::Print(_L("Given index reaches out of array (CTestModuleInfo::GetCfgFileName). Given index: %d. Max allowed index: %d"), aIndex, cnt - 1);
- }
- return KErrArgument;
- }
-
- TInt ret = iCfgFiles[aIndex]->GetCfgFileName(aCfgFileName);
- return ret;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleInfo
-
- Method: GetUncheckedCfgFile
-
- Description: Get first unchecked test case file
-
- Parameters: None
-
- Return Values: Pointer to CTestCaseFileInfo object if found
- Null otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestCaseFileInfo* CTestModuleInfo::GetUncheckedCfgFile(void)
- {
- TInt cnt = iCfgFiles.Count();
- TInt i;
-
- for(i = 0; i < cnt; i++)
- {
- if(!iCfgFiles[i]->IsChecked())
- {
- return iCfgFiles[i];
- }
- }
-
- return NULL;
- }
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: CTestModuleList
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleList::CTestModuleList()
- {
- iLogger = NULL;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave.
-
- Parameters: aLogger: pointer to stif logger
-
- Return Values: None
-
- Errors/Exceptions:
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestModuleList::ConstructL(CStifLogger* aLogger)
- {
- iLogger = aLogger;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: aLogger: pointer to stif logger
-
- Return Values: CTestModuleList* : pointer to created object
-
- Errors/Exceptions: Leaves if memory allocation for object fails
- Leaves if ConstructL leaves
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestModuleList* CTestModuleList::NewL(CStifLogger* aLogger)
- {
- CTestModuleList* self = new (ELeave) CTestModuleList();
- CleanupStack::PushL(self);
- self->ConstructL(aLogger);
- CleanupStack::Pop(self);
- return self;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: ~CTestModuleList
-
- Description: Destructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestModuleList::~CTestModuleList()
- {
- iTestModules.ResetAndDestroy();
- iTestModules.Close();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: AddTestModule
-
- Description: Adds new test module to list if specified module is not already added.
-
- Parameters: aModuleName: module name
-
- Return Values: KErrNone if opereation succeeded
- KErrAlreadyExists if module is already present on the list
- Symbian error code otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleList::AddTestModule(TDesC& aModuleName)
- {
- //Check if given module is already on the list
- CTestModuleInfo* tmp = GetModule(aModuleName);
- if(tmp)
- {
- return KErrAlreadyExists;
- }
-
- //There is no module on the list, so create new info object
- TInt err = KErrNone;
- TRAP(err, tmp = CTestModuleInfo::NewL(aModuleName, iLogger));
- if(err != KErrNone)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not create CTestModuleInfo object (CTestModuleList::AddTestModule). Error %d."), err));
- }
- else
- {
- RDebug::Print(_L("Could not create CTestModuleInfo object (CTestModuleList::AddTestModule). Error %d."), err);
- }
- return err;
- }
- if(!tmp)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not create CTestModuleInfo object (CTestModuleList::AddTestModule)")));
- }
- else
- {
- RDebug::Print(_L("Could not create CTestModuleInfo object (CTestModuleList::AddTestModule)"));
- }
- return KErrGeneral;
- }
-
- //Add to list
- err = iTestModules.Append(tmp);
- if(err != KErrNone)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Could not append CTestModuleInfo object to array (CTestModuleList::AddTestModule). Error %d."), err));
- }
- else
- {
- RDebug::Print(_L("Could not append CTestModuleInfo object to array (CTestModuleList::AddTestModule). Error %d."), err);
- }
- delete tmp;
- return err;
- }
-
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: Count
-
- Description: Counts test modules
-
- Parameters: None
-
- Return Values: Number of test modules on list
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleList::Count()
- {
- return iTestModules.Count();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: GetModule
-
- Description: Searches test module with given name
-
- Parameters: aModuleName: module name
-
- Return Values: Pointer to found object or NULL when not found
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestModuleInfo* CTestModuleList::GetModule(TDesC& aModuleName)
- {
- TInt cnt = iTestModules.Count();
- TInt i;
- CTestModuleInfo* tmp;
- TName moduleName;
-
- //Check if given module is already on the list
- for(i = 0; i < cnt; i++)
- {
- tmp = iTestModules[i];
- tmp->GetModuleName(moduleName);
- if(moduleName == aModuleName)
- {
- return tmp;
- }
- }
- return NULL;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: GetModule
-
- Description: Searches test module with given index
-
- Parameters: aIndex: module index
-
- Return Values: Pointer to found object or NULL when not found
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestModuleInfo* CTestModuleList::GetModule(TInt aIndex)
- {
- TInt cnt = iTestModules.Count();
-
- //Check index
- if(aIndex >= cnt || aIndex < 0)
- {
- if(iLogger)
- {
- __TRACE(KError, (_L("Given index reaches out of array (CTestModuleList::GetModule). Given index: %d. Max allowed index: %d"), aIndex, cnt - 1));
- }
- else
- {
- RDebug::Print(_L("Given index reaches out of array (CTestModuleList::GetModule). Given index: %d. Max allowed index: %d"), aIndex, cnt - 1);
- }
- return NULL;
- }
-
- //return module
- return iTestModules[aIndex];
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleList
-
- Method: GetUncheckedCfgFile
-
- Description: Get first unchecked test case file (module: testscripter and testcombiner)
-
- Parameters: None
-
- Return Values: Pointer to CTestCaseFileInfo object if found
- Null otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestCaseFileInfo* CTestModuleList::GetUncheckedCfgFile(void)
- {
- CTestCaseFileInfo* ret = NULL;
-
- TBuf<12> modname(_L("testscripter"));
- CTestModuleInfo* mod = GetModule(modname);
-
- if(mod)
- {
- ret = mod->GetUncheckedCfgFile();
- }
-
- if(!ret)
- {
- modname.Copy(_L("testcombiner"));
- mod = GetModule(modname);
- if(mod)
- {
- ret = mod->GetUncheckedCfgFile();
- }
- }
-
- return ret;
- }
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: CTestCaseFileInfo
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestCaseFileInfo::CTestCaseFileInfo()
- {
- iLogger = NULL;
- iCfgFileName = NULL;
- iChecked = EFalse;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave.
-
- Parameters: aCfgFileName: config file name
- aLogger: pointer to Stif logger
-
- Return Values: None
-
- Errors/Exceptions:
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestCaseFileInfo::ConstructL(TDesC& aCfgFileName, CStifLogger* aLogger)
- {
- iLogger = aLogger;
-
- if(iCfgFileName)
- {
- delete iCfgFileName;
- iCfgFileName = NULL;
- }
- iCfgFileName = aCfgFileName.AllocL();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: aCfgFileName: config file name
- aLogger: pointer to stif logger
-
- Return Values: CTestCaseFileInfo* : pointer to created object
-
- Errors/Exceptions: Leaves if memory allocation for object fails
- Leaves if ConstructL leaves
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestCaseFileInfo* CTestCaseFileInfo::NewL(TDesC& aCfgFileName, CStifLogger* aLogger)
- {
- CTestCaseFileInfo* self = new (ELeave) CTestCaseFileInfo();
- CleanupStack::PushL(self);
- self->ConstructL(aCfgFileName, aLogger);
- CleanupStack::Pop(self);
- return self;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: ~CTestCaseFileInfo
-
- Description: Destructor.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestCaseFileInfo::~CTestCaseFileInfo()
- {
- delete iCfgFileName;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: GetCfgFileName
-
- Description: Get config file name
-
- Parameters: None
-
- Return Values: TDesC& : config file name
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestCaseFileInfo::GetCfgFileName(TDes& aCfgFileName)
- {
- aCfgFileName.Zero();
- if(iCfgFileName)
- {
- aCfgFileName.Copy(*iCfgFileName);
- }
- return KErrNone;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: SetChecked
-
- Description: Set configuration file as already checked
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestCaseFileInfo::SetChecked(void)
- {
- iChecked = ETrue;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestCaseFileInfo
-
- Method: IsChecked
-
- Description: Return if config file has been checked
-
- Parameters: None
-
- Return Values: 0 if test case file has not been checked yet
- other value otherwise
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TBool CTestCaseFileInfo::IsChecked(void)
- {
- return iChecked;
- }
-
-// ================= OTHER EXPORTED FUNCTIONS =================================
-// None
-
-// End of File