diff -r 6edeef394eb7 -r 9397a16b6eb8 testexecmdw/tef/tef/tefunit/src/crunner.cpp --- a/testexecmdw/tef/tef/tefunit/src/crunner.cpp Fri Sep 03 07:55:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -/* -* Copyright (c) 2005-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: -* -*/ - - - -/** - @file CRunner.cpp -*/ - - -#include "cteflogger.h" -#include "crunner.h" - -_LIT( KWildCard, "*"); - -CRunner::CRunner( const CTestConfig& aConfig, const CTestExecuteLogger& aLogger) -/** - * Constructor - * - * @param aConfig - Instance of the test config - * @param aLogger - Instance of the logger - */ - : iConfig(aConfig), iLogger(aLogger) - { - } - -CRunner::~CRunner() -/** - * Destructor - */ - { - } - -void CRunner::ConstructL( const TTestPath& aPath ) -/** - * ConstructL - * - * @param aPath - The path of the test case to be executed - */ - { - iPath.ConstructL( aPath ); - } - -/* - * NewL - * Return an instance of CRunner - */ -CRunner* CRunner::NewL( const TTestPath &aPath, const CTestConfig& aConfig, const CTestExecuteLogger& aLogger ) -/** - * NewL - * - * @param aPath - The path of the test case to be executed - * @param aConfig - Instance of the test config - * @param aLogger - Instance of the logger - * @return - Instance of CRunner - */ - { - CRunner* lRunner = new (ELeave) CRunner(aConfig, aLogger); - CleanupStack::PushL(lRunner); - lRunner->ConstructL(aPath); - CleanupStack::Pop(); - return lRunner; - } - -void CRunner::VisitL(CTestCase* aTestCase) -/** - * VisitL - * - * @param aTestCase - The test case to visit - */ - { - aTestCase->RunL(iConfig, iLogger); - } - -void CRunner::VisitL(CTestSuite* aTestSuite) -/** - * VisitL - * - * @param aTestSuite - The test suite to visit - */ - { - // Get the next field from the path and search for it - if( iPath.Remaining() ) - { - TTestName testSuite = iPath.NextL(); - if( testSuite == KWildCard ) - { - // Run all the tests in the suite and sub suites - aTestSuite->RunL( iConfig, iLogger ); - } - else - { - TInt lIndex = 0; - while( (lIndex < aTestSuite->Count()) && - (aTestSuite->NameL(lIndex)!=iPath.Current()) ) - { - lIndex++; - } - if( (lIndex < aTestSuite->Count()) && - (aTestSuite->NameL(lIndex)==iPath.Current()) ) - { - // Log that the runner is currently in this suite - CTEFLogger::LogTraverse( aTestSuite->Name(), iLogger ); - aTestSuite->TestL( lIndex )->AcceptL( *this ); - } - else - { - User::Leave(KErrTEFUnitTestSuiteError); - } - } - } - else - { - // Run all the tests in the suite and sub suites - aTestSuite->RunL( iConfig, iLogger ); - } - } - -CPath::CPath() -/** - * Constructor - */ - : iCurrent(0) - { - } - -void CPath::ConstructL( const TDes& aPath ) -/** - * ConstructL - * - * @param aPath - The path to be parsed - */ - { - // Prepend a NULL field for the top level suite - User::LeaveIfError( iFields.Append(_L("NULL")) ); - HBufC* ptrPath = HBufC::NewLC(KMaxPathSize); - TPtr ptr(ptrPath->Des()); - ptr.Copy(aPath); - // Populate the path fields array - TInt offset = ptr.Locate( '.' ); - while( offset != KErrNotFound ) - { - TTestName field; - field.Append( ptr.Ptr(), offset ); - User::LeaveIfError( iFields.Append(field) ); - ptr.Delete( 0, offset+1 ); - offset = ptr.Locate( '.' ); - } - // There will be one more field - TTestName field; - field.Append( ptrPath->Ptr(), ptrPath->Size()/2 ); - CleanupStack::PopAndDestroy(ptrPath); - User::LeaveIfError( iFields.Append(field) ); - } - -/* - * NewL - * Return an instance of CPath - */ -CPath* CPath::NewL( TDes& aPath ) -/** - * NewL - * - * @param aPath - The path to be parsed - * @return - Instance of CPath - */ - { - CPath* lPath = new (ELeave) CPath(); - CleanupStack::PushL(lPath); - lPath->ConstructL(aPath); - CleanupStack::Pop(); - return lPath; - } - -CPath::~CPath() -/** - * Destructor - */ - { - iFields.Close(); - } - -TTestName CPath::Current() const -/** - * Current - * - * @return - The current field within the path - */ - { - return iFields[iCurrent]; - } - -TTestName CPath::NextL() -/** - * NextL - * - * @return - The next field in the path - */ - { - if( iCurrent>(iFields.Count()-2) ) - { - User::Leave(KErrTEFUnitFail); - } - - return iFields[++iCurrent]; - } - -TInt CPath::Count() const -/** - * Count - * - * @return - The number of fields in the path - */ - { - return iFields.Count(); - } - -TInt CPath::Remaining() const -/** - * Remaining - * - * @return - The number of remaining fields from the current location in the path - */ - { - return (iFields.Count()-1)-iCurrent; - }