testrunnerdlgimpl.cpp

来自「这是国外的resip协议栈」· C++ 代码 · 共 261 行

CPP
261
字号
#include <qcombobox.h>#include <qgroupbox.h>#include <qlabel.h>#include <qlistview.h>#include <qmultilineedit.h>#include <qprogressbar.h>#include <qpushbutton.h>#include <cppunit/Exception.h>#include "TestRunnerDlgImpl.h"#include "TestBrowserDlgImpl.h"#include "MostRecentTests.h"#include "TestRunnerModel.h"#include "TestFailureListViewItem.h"/*  *  Constructs a TestRunnerDlg which is a child of 'parent', with the  *  name 'name' and widget flags set to 'f'  * *  The dialog will by default be modeless, unless you set 'modal' to *  TRUE to construct a modal dialog. */TestRunnerDlg::TestRunnerDlg( QWidget* parent,  const char* name, bool modal, WFlags fl )    : TestRunnerDlgBase( parent, name, modal, fl ),    _model( NULL ),    _recentTests( new MostRecentTests() ){}/*   *  Destroys the object and frees any allocated resources */TestRunnerDlg::~TestRunnerDlg(){  delete _model;  delete _recentTests;}void TestRunnerDlg::setModel( TestRunnerModel *model,                         bool autorunTest ){  delete _model;  _model = model;  // update combo when recent list change  connect( _recentTests, SIGNAL( listChanged() ),           SLOT( refreshRecentTests() ) );  // make selected test in combo the "most recent"  connect( _comboTest, SIGNAL( activated(int) ),           _recentTests, SLOT( selectTestToRun(int) ) );  // refresh the test report counters when a test is selected  connect( _recentTests, SIGNAL( testToRunChanged(CPPUNIT_NS::Test *) ),           _model, SLOT( resetTestReportCounterFor(CPPUNIT_NS::Test *) ) );  // refresh progress bar  connect( _model, SIGNAL( numberOfTestCaseChanged(int) ),           _progressRun, SLOT( setTotalSteps(int) ) );  connect( _model, SIGNAL( numberOfTestCaseRunChanged(int) ),           _progressRun, SLOT( setProgress(int) ) );    // refresh test report counters  connect( _model, SIGNAL( numberOfTestCaseChanged( int ) ),           SLOT( setNumberOfTestCase( int ) ) );  connect( _model, SIGNAL( numberOfTestCaseRunChanged( int ) ),           SLOT( setNumberOfTestCaseRun( int ) ) );  connect( _model, SIGNAL( numberOfTestCaseFailureChanged( int ) ),           SLOT( setNumberOfTestCaseFailure( int ) ) );  // clear failure list  connect( _model, SIGNAL( failuresCleared() ),           SLOT( clearTestFailureList() ) );  // clear failure detail list  connect( _model, SIGNAL( failuresCleared() ),           SLOT( clearFailureDetail() ) );  // add failure to failure list  connect( _model, SIGNAL( failureAdded(TestFailureInfo *) ),           SLOT( reportFailure(TestFailureInfo*) ) );  // show detail on failure selection  connect( _listFailures, SIGNAL( selectionChanged(QListViewItem*) ),           SLOT( showFailureDetailAt(QListViewItem*) ) );  // disable button when running test  connect( _model, SIGNAL( testRunStarted( CPPUNIT_NS::Test *, CPPUNIT_NS::TestResult *) ),           SLOT( beRunningTest() ) );  // enable button when finished running test  connect( _model, SIGNAL( testRunFinished() ),           SLOT( beCanRunTest() ) );  _recentTests->setTestToRun( model->rootTest() );  beCanRunTest();  if ( autorunTest )    runTest();}void TestRunnerDlg::browseForTest(){  TestBrowser *dlg = new TestBrowser( this,                                      "Test Browser",                                      TRUE );  dlg->setRootTest( _model->rootTest() );  if ( dlg->exec() )    _recentTests->setTestToRun( dlg->selectedTest() );  delete dlg;}void TestRunnerDlg::runTest(){  CPPUNIT_NS::Test *testToRun = _recentTests->testToRun();  if ( testToRun == NULL )    return;  _model->runTest( testToRun );}void TestRunnerDlg::stopTest(){  _model->stopRunningTest();  if ( _model->isTestRunning() )    beStoppingTest();}void TestRunnerDlg::clearTestFailureList(){  _listFailures->clear();}void TestRunnerDlg::refreshRecentTests(){  _comboTest->clear();  for ( int index =0; index < _recentTests->testCount(); ++index )    _comboTest->insertItem( _recentTests->testNameAt( index ) );}void TestRunnerDlg::setNumberOfTestCase( int numberOfTestCase ){  _labelTestCaseCount->setText( QString::number( numberOfTestCase ) );}void TestRunnerDlg::setNumberOfTestCaseRun( int numberOfRun ){  _labelTestRunCount->setText( QString::number( numberOfRun ) );}void TestRunnerDlg::setNumberOfTestCaseFailure( int numberOfFailure ){  _labelFailureCount->setText( QString::number( numberOfFailure ) );}void TestRunnerDlg::reportFailure( TestFailureInfo *failure ){  QListViewItem *item = new TestFailureListViewItem( failure,                                                      _listFailures );  item->setText( indexType,                  failure->isError() ? tr("Error") : tr("Failure") );  std::string failedtestName = failure->failedTestName().c_str();  item->setText( indexTestName, QString::fromLatin1( failedtestName.c_str() ) );  CPPUNIT_NS::Exception *thrownException = failure->thrownException();//2.0  item->setText( indexMessage, thrownException->what() );  item->setText( indexMessage, QString(thrownException->what()).stripWhiteSpace() );  item->setText( indexFilename, failure->sourceLine().fileName().c_str() );  item->setText( indexLineNumber,                 QString::number( failure->sourceLine().lineNumber() ) );  _listFailures->insertItem( item );  _listFailures->triggerUpdate();  if ( _listFailures->childCount() == 1 )    _listFailures->setSelected( item, TRUE );}void TestRunnerDlg::showFailureDetailAt( QListViewItem *selection ){  TestFailureInfo *failure = ((TestFailureListViewItem*)selection)->failure();    QString title = tr("Failure detail for: ");  title += QString::fromLatin1( failure->failedTestName().c_str() );  _groupFailureDetail->setTitle( title );  QString location( failure->sourceLine().fileName().c_str() );  location += " (" +               QString::number( failure->sourceLine().lineNumber() ) +              ")";  _labelFailureLocation->setText( location );  _editFailureMessage->setText( failure->thrownException()->what() );}void TestRunnerDlg::clearFailureDetail(){  _groupFailureDetail->setTitle( tr("Failure detail for:...") );  _labelFailureLocation->setText( QString::null );  _editFailureMessage->setText( QString::null );}void TestRunnerDlg::beCanRunTest(){  _buttonRunTest->setEnabled( true );  _buttonBrowse->setEnabled( true );  _comboTest->setEnabled( true );  _buttonStop->setDisabled( true );  _buttonStop->setText( tr("Stop") );  _buttonClose->setEnabled( true );}void TestRunnerDlg::beRunningTest(){  _buttonRunTest->setDisabled( true );  _buttonBrowse->setDisabled( true );  _comboTest->setDisabled( true );  _buttonStop->setEnabled( true );  _buttonStop->setText( tr("Stop") );  _buttonClose->setDisabled( true );}void TestRunnerDlg::beStoppingTest(){  _buttonStop->setDisabled( true );  _buttonStop->setText( tr("Stopping") );}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?