diff -r bbd31066657e -r 8bb370ba6d1d testexecfw/stf/stfui/stf/src/cmdparser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecfw/stf/stfui/stf/src/cmdparser.cpp Fri Apr 09 10:46:28 2010 +0800 @@ -0,0 +1,315 @@ +/* +* 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: +* +*/ +#include "cmdparser.h" +#include + + +_LIT( KTestModule, "-m" ); +_LIT( KConfigFile, "-s" ); +_LIT( KEngineIniFile, "-i" ); +_LIT( KModuleIniFile, "-c" ); +_LIT( KEngineConfigurationItem, "-engine" ); +_LIT( KLogConfigurationItem, "-log" ); +_LIT( KVersion1, "-v" ); +_LIT( KVersion2, "-version" ); +_LIT( KHelp1, "-?" ); +_LIT( KHelp2, "-h" ); +_LIT( KHelp3, "-help" ); +_LIT( KNoPrompt, "-NOPROMPT"); +_LIT( KDefaultEngineIni, "c:\\TestFramework\\TestFramework.ini" ); + + + + +CCmdParser::CCmdParser() : iIsHelp(EFalse), iIsVersion(EFalse), iIsPrompt(ETrue) + { + iEngineIniFile.Zero(); + iModuleIniFile.Zero(); + iConfigFile.Zero(); + iTestModule.Zero(); + iTestCase.Zero(); + + } + +CCmdParser::~CCmdParser() + { + iTestCaseList.Close(); + iTestCaseIndexList.Close(); + + } + +CCmdParser* CCmdParser::NewL() + { + CCmdParser* self = new(ELeave)CCmdParser(); + return self; + } + +TBool CCmdParser::Parse(TPtr& commandLine) + { + TBool rst(ETrue); + TBool findmodule(EFalse); + TLex lex(commandLine); + TBufC<1> comma(_L("\"")); + TBool continueName(EFalse); //parse case name, when count \" need continue read name. + while ( !lex.Eos() ) + { + TPtrC tmpPtr = lex.NextToken(); + if(tmpPtr == KTestModule) + { + TPtrC module = lex.NextToken(); + if(module.Ptr()) + { + iTestModule.Copy(module); + if(iTestModule != _L("")) + { + findmodule = ETrue; + } + } + else + { + rst = EFalse; + break; + } + } + else if(tmpPtr == KConfigFile) + { + TPtrC config = lex.NextToken(); + if(config.Ptr()) + { + //iTestModule.Copy(_L("testscripter"));//mark here. + iConfigFile.Copy(config); + TStifUtil::CorrectFilePathL(iConfigFile); + if(iConfigFile != _L("")) + { + findmodule = ETrue; + } + } + else + { + rst = EFalse; + break; + } + } + else if(tmpPtr == KEngineIniFile) + { + TPtrC iniFile = lex.NextToken(); + if(iniFile.Ptr()) + { + iEngineIniFile.Copy(iniFile); + TStifUtil::CorrectFilePathL(iEngineIniFile); + } + else + { + rst = EFalse; + break; + } + } + else if(tmpPtr == KModuleIniFile) + { + TPtrC iniFile = lex.NextToken(); + if(iniFile.Ptr()) + { + iModuleIniFile.Copy(iniFile); + TStifUtil::CorrectFilePathL(iModuleIniFile); + } + else + { + rst = EFalse; + break; + } + } + + else if(tmpPtr == KEngineConfigurationItem) + { + TName pname=lex.NextToken(); + + if(pname.Length() > 0) + { + TPtrC pval = lex.NextToken(); + if(pval.Ptr()) + { + + iEngineConfigList.Append(pname); + iEngineConfigList.Append(_L(" ")); + iEngineConfigList.Append(pval); + iEngineConfigList.Append(_L(" ")); + + } + else + { + rst = EFalse; + break; + } + } + else + { + rst = EFalse; + break; + } + } + else if(tmpPtr == KLogConfigurationItem) + { + TName pname=lex.NextToken(); + if(pname.Length() > 0) + { + TPtrC pval = lex.NextToken(); + if(pval.Ptr()) + { + + iLogConfigList.Append(pname); + iLogConfigList.Append(_L(" ")); + iLogConfigList.Append(pval); + iLogConfigList.Append(_L(" ")); + } + else + { + rst = EFalse; + break; + } + } + else + { + rst = EFalse; + break; + } + + } + else if(tmpPtr == KVersion1 || tmpPtr == KVersion2) + { + iIsVersion = true; + rst = ETrue; + break; + } + else if(tmpPtr == KHelp1 || tmpPtr == KHelp2 || tmpPtr == KHelp3) + { + iIsHelp = true; + rst = ETrue; + break; + } + else if(tmpPtr == KNoPrompt) + { + iIsPrompt = false; + } + else + { + if(!tmpPtr.Left(1).Compare(comma)) + { + continueName = ETrue; + iTestCase.Copy(tmpPtr); + } + else + { + if(continueName) + { + iTestCase.Append(_L(" ")); + iTestCase.Append(tmpPtr); + } + else + { + //is a number without "\"" + if(IsNumber(tmpPtr)) + { + TLex myLex(tmpPtr); + myLex.Val(iTestCaseIndex); + iTestCaseIndexList.Append(iTestCaseIndex); + continue; + } + else + { + iTestCase.Copy(tmpPtr); + } + + } + } + + + + if(!iTestCase.Right(1).Compare(comma)) + { + if(continueName) + { + iTestCase.Copy(iTestCase.Mid(1, iTestCase.Length() -2)); + iTestCaseList.Append(iTestCase); + } + //error input. + iTestCase.Copy(_L("")); + continueName = EFalse; + } + else + { + if(!continueName) + { + iTestCaseList.Append(iTestCase); + iTestCase.Copy(_L("")); + } + } + + + } + }//end while + if(iConfigFile.Length() != 0 && iTestModule.Length() == 0) + { + iTestModule.Copy(_L("testscripter")); + } + if(iEngineIniFile.Length()==0) + { + iEngineIniFile.Append(KDefaultEngineIni); + } + return (rst && findmodule); + } + + +TBool CCmdParser::CaseContains(TInt index, TDesC& caseName) + { + //RArray iTestCaseList; + //RArray iTestCaseIndexList; + TInt size = iTestCaseIndexList.Count(); + for(TInt i=0;i tempChar; + for (TInt i=0;i