diff -r ba8a586c45f1 -r c20154ccf3c0 stifui/qt/src/stfqtuicontroller.cpp --- a/stifui/qt/src/stfqtuicontroller.cpp Fri Jun 11 16:29:34 2010 +0100 +++ b/stifui/qt/src/stfqtuicontroller.cpp Thu Jul 22 16:33:59 2010 +0100 @@ -18,18 +18,21 @@ #include "stfqtuicontroller.h" #include #include -//#include "stiflogger.h" #include const QString TEMPSETNAME = "TEMPSET"; const QString DEFAULTINI = "c:\\testframework\\testframework.ini"; -//__DECLARE_LOG + StfQtUIController::StfQtUIController(IStfQtUIModel* aModel) : - model(aModel), isShowOutput(false) + model(aModel), + isShowOutput(false), + iCurrentRunPos(0), + isLoopInfinitely(false), + loopTimes(0) + { -// __OPENLOGL ("\\STFQtUI\\", "StifQtUi.log" ); executor = new CStifExecutor(); executor->OpenIniFile(DEFAULTINI); executor->AddStifCaseUpdateListener(this); @@ -40,15 +43,20 @@ executor->RemoveStifCaseUpdateListener(this); delete executor; executor = NULL; -// __CLOSELOG; } //for cases bool StfQtUIController::OpenEngineIniFile(const QString& fileName) { + QString path = fileName; + if(path.contains('/')) + { + path = path.replace('/', '\\'); + } + executor->RemoveStifCaseUpdateListener(this); delete executor; executor = new CStifExecutor(); - bool rst = executor->OpenIniFile(fileName); + bool rst = executor->OpenIniFile(path); executor->AddStifCaseUpdateListener(this); return rst; } @@ -132,19 +140,71 @@ } } -void StfQtUIController::AddCaseToSet(const QList& caseList, - const QString& /*setName*/) +// run cases repeatly. +// By default, loopTimes = -1 means loop infinitely util user stop it. +void StfQtUIController::RepeatRunCases(const QList& aCaseList, const bool aIsLoopInfinitely, const int aLoopTimes) + { + InitRepeatSetting(aIsLoopInfinitely, aLoopTimes); + repeatRunCaseList = aCaseList; + + Execution(); + + } + +void StfQtUIController::InitRepeatSetting(const bool aIsLoopInfinitely, const int aLoopTimes) + { + loopTimes = aLoopTimes; + isLoopInfinitely = aIsLoopInfinitely; + iCurrentRunPos = 0; + } + +void StfQtUIController::ResetRepeatSetting() { - QString setName = QDateTime::currentDateTime().toString("hh_mm_ss"); - setName.append(".set"); - executor->CreateSet(setName); + iCurrentRunPos = 0; + isLoopInfinitely = false; + loopTimes = 0; + } + +// Repeat execution cases +void StfQtUIController::Execution() + { + if(loopTimes > 0 || isLoopInfinitely) + { + int count = repeatRunCaseList.count(); + CSTFCase aCase = repeatRunCaseList.at(iCurrentRunPos); + QString msg = "Start execute case:" + aCase.Name(); + FireOnGetOutput(msg); + executor->ExecuteSingleCase(aCase.ModuleName(), aCase.Index()); + + iCurrentRunPos++; + if( iCurrentRunPos >= count ) + { + iCurrentRunPos = 0; + loopTimes --; + } + } + } + +bool StfQtUIController::AddCaseToSet(const QList& caseList, + const QString& setName) + { + QString name = setName; + bool rst = true; foreach(CSTFCase aCase, caseList) { - executor->AddtoSet(setName, aCase); + rst = executor->AddtoSet(name, aCase); + if(!rst) + { + break; + } } - executor->SaveSet(setName); - executor->RemoveSet(setName); + if(!rst) + { + return false; + } + rst = executor->SaveSet(name); FireOnSetListChanged(); + return rst; } //for set @@ -164,18 +224,29 @@ return caseList; } -void StfQtUIController::CreateSet(const QString& setName) +bool StfQtUIController::CreateSet(QString& setName) { - executor->CreateSet(setName); - //executor->SaveSet(setName); + bool rst = executor->CreateSet(setName); + if(!rst) + { + return rst; + } + rst = executor->SaveSet(setName); FireOnSetListChanged(); + return rst; } -void StfQtUIController::DeleteSet(const QString& setName) +bool StfQtUIController::DeleteSet(const QString& setName) { - executor->RemoveSet(setName); - //executor->SaveSet(setName); + bool rst = executor->RemoveSet(setName); + if(!rst) + { + return false; + } + QString name = setName; + rst = executor->SaveSet(name); FireOnSetListChanged(); + return rst; } void StfQtUIController::RunSets(const QString& setName, const TSTFCaseRunningType& type) @@ -203,6 +274,12 @@ FireOnGetOutput("Case Aborted"); } +CSTFCase StfQtUIController::GetRunningCase(int index) + { + CStartedTestCase* startedCase = (CStartedTestCase*) index; + return model->GetRunningCase(startedCase); + } + bool StfQtUIController::ShowOutput() { return isShowOutput; @@ -256,6 +333,9 @@ model->RemoveRunningCase(aCase); model->AddCaseByStatus(EStatusAborted, stfcase); msg += "aborted"; + + //reset repeat execution information + ResetRepeatSetting(); } else if (flags & CUIStoreIf::EStatusExecuted) @@ -279,7 +359,12 @@ model->AddCaseByStatus(EStatusPassed, stfcase); msg += "passed"; } - + + // if repeat execution is choosed, start to execution again. + if(loopTimes > 0 || isLoopInfinitely) + { + Execution(); + } } else { @@ -297,7 +382,7 @@ void StfQtUIController::FireOnCaseOutputChanged( IStfEventListener::CaseOutputCommand cmd, int index, QString msg) { - if (ShowOutput()) + if (true)//ShowOutput { foreach(IStfEventListener* listener, listenerList) { @@ -322,3 +407,5 @@ listener->OnSetListChanged(); } } + +// End of File