📄 testrunnerdlg.cpp
字号:
m_buttonRun.EnableWindow( FALSE ); m_buttonBrowse.EnableWindow( FALSE ); m_buttonStop.EnableWindow( FALSE ); m_buttonClose.EnableWindow( TRUE );// m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() | BS_DEFPUSHBUTTON );// m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() & ~BS_DEFPUSHBUTTON );}void TestRunnerDlg::freeState(){ delete m_activeTest; delete m_result; delete m_testObserver; m_activeTest = 0; m_result = 0; m_testObserver = 0;}void TestRunnerDlg::reset(){ m_testsRun = 0; m_errors = 0; m_failures = 0; m_testEndTime = m_testStartTime; updateCountsDisplay(); freeState(); CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); listCtrl->DeleteAllItems(); m_testsProgress->reset(); displayFailureDetailsFor( -1 );}void TestRunnerDlg::updateCountsDisplay(){ CStatic *statTestsRun = (CStatic *)GetDlgItem( IDC_STATIC_RUNS ); CStatic *statErrors = (CStatic *)GetDlgItem( IDC_STATIC_ERRORS ); CStatic *statFailures = (CStatic *)GetDlgItem( IDC_STATIC_FAILURES ); CEdit *editTime = (CEdit *)GetDlgItem( IDC_EDIT_TIME ); CString argumentString; argumentString.Format( _T("%d"), m_testsRun ); statTestsRun->SetWindowText (argumentString); argumentString.Format( _T("%d"), m_errors ); statErrors->SetWindowText( argumentString ); argumentString.Format( _T("%d"), m_failures ); statFailures->SetWindowText( argumentString ); argumentString.Format( _T("Execution time: %3.3lf seconds"), (m_testEndTime - m_testStartTime) / 1000.0 ); editTime->SetWindowText( argumentString );}void TestRunnerDlg::OnStop() { if ( m_testObserver ) m_testObserver->stop (); beIdle ();}void TestRunnerDlg::OnOK() { if ( m_testObserver ) m_testObserver->stop (); UpdateData(); saveSettings(); cdxCDynamicDialog::OnOK ();}void TestRunnerDlg::OnSelectTestInHistoryCombo() { unsigned int currentSelection = getHistoryCombo()->GetCurSel (); if ( currentSelection >= 0 && currentSelection < m_model->history().size() ) { CPPUNIT_NS::Test *selectedTest = m_model->history()[currentSelection]; m_model->selectHistoryTest( selectedTest ); updateHistoryCombo(); beIdle(); } else beRunDisabled();}voidTestRunnerDlg::updateHistoryCombo(){ getHistoryCombo()->LockWindowUpdate(); getHistoryCombo()->ResetContent(); const TestRunnerModel::History &history = m_model->history(); for ( TestRunnerModel::History::const_iterator it = history.begin(); it != history.end(); ++it ) { CPPUNIT_NS::Test *test = *it; getHistoryCombo()->AddString( CString(test->getName().c_str()) ); } if ( history.size() > 0 ) { getHistoryCombo()->SetCurSel( 0 ); beIdle(); } else { beRunDisabled(); m_buttonBrowse.EnableWindow( TRUE ); } getHistoryCombo()->UnlockWindowUpdate();}void TestRunnerDlg::OnBrowseTest() { TreeHierarchyDlg dlg; dlg.setRootTest( m_model->rootTest() ); if ( dlg.DoModal() == IDOK ) { m_model->selectHistoryTest( dlg.getSelectedTest() ); updateHistoryCombo(); }}BOOL TestRunnerDlg::PreTranslateMessage(MSG* pMsg) { if ( ::TranslateAccelerator( m_hWnd, m_hAccelerator, pMsg ) ) { return TRUE; } return cdxCDynamicDialog::PreTranslateMessage(pMsg);}CComboBox *TestRunnerDlg::getHistoryCombo(){ CComboBox *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST); ASSERT (comboBox); return comboBox;}voidTestRunnerDlg::loadSettings(){ m_model->loadSettings(m_settings); RestoreWindowPosition( TestRunnerModel::settingKey, TestRunnerModel::settingMainDialogKey ); m_bAutorunAtStartup = m_settings.autorunOnLaunch;}voidTestRunnerDlg::saveSettings(){ m_settings.autorunOnLaunch = ( m_bAutorunAtStartup != 0 ); StoreWindowPosition( TestRunnerModel::settingKey, TestRunnerModel::settingMainDialogKey ); m_settings.col_1 = m_listCtrl.GetColumnWidth(0); m_settings.col_2 = m_listCtrl.GetColumnWidth(1); m_settings.col_3 = m_listCtrl.GetColumnWidth(2); m_settings.col_4 = m_listCtrl.GetColumnWidth(3); m_model->saveSettings(m_settings);}void TestRunnerDlg::OnQuitApplication() { if ( m_testObserver ) m_testObserver->stop(); UpdateData(); saveSettings(); CWinApp *app = AfxGetApp(); ASSERT( app != NULL ); app->PostThreadMessage( WM_QUIT, 0, 0 );}TestRunnerModel &TestRunnerDlg::model(){ ASSERT( m_model != NULL ); return *m_model;}void TestRunnerDlg::OnClose() { OnOK();}CRect TestRunnerDlg::getItemWindowRect( unsigned int itemId ){ CWnd * pItem = GetDlgItem( itemId ); CRect rect; if ( pItem ) pItem->GetWindowRect( &rect ); return rect;}CRect TestRunnerDlg::getItemClientRect( unsigned int itemId ){ CRect rect = getItemWindowRect( itemId ); if ( !rect.IsRectNull() ) { CPoint clientTopLeft = rect.TopLeft(); ScreenToClient( &clientTopLeft ); rect = CRect( clientTopLeft, rect.Size() ); } return rect;}void TestRunnerDlg::initializeLayout(){ // see DynamicWindow/doc for documentation const int listGrowthRatio = 30; AddSzXControl( IDC_COMBO_TEST, mdResize ); AddSzXControl( IDC_BROWSE_TEST, mdRepos ); AddSzXControl( IDC_RUNNING_TEST_CASE_LABEL, mdResize ); AddSzXControl( ID_RUN, mdRepos ); AddSzXControl( *m_testsProgress, mdResize ); AddSzXControl( IDC_CHECK_AUTORUN, mdRepos ); AddSzControl( IDC_LIST, 0, 0, 100, listGrowthRatio ); AddSzXControl( ID_STOP, mdRepos ); AddSzXControl( IDOK, mdRepos ); AddSzYControl( IDC_STATIC_DETAILS, listGrowthRatio, listGrowthRatio ); AddSzControl( IDC_DETAILS, 0, listGrowthRatio, 100, 100 ); AddSzControl( IDC_EDIT_TIME, mdResize, mdRepos );}void TestRunnerDlg::OnSize( UINT nType, int cx, int cy ) { cdxCDynamicDialog::OnSize(nType, cx, cy); updateListColumnSize();}void TestRunnerDlg::updateListColumnSize(){ if ( !m_listCtrl.GetSafeHwnd() ) return; // resize to fit last column CRect listBounds = getItemClientRect( IDC_LIST ); int width_1_4 = 0; for (int i = 0; i < 4; ++i) width_1_4 += m_listCtrl.GetColumnWidth( i ); // the 4 offset is so no horiz scroll bar will appear m_listCtrl.SetColumnWidth(4, listBounds.Width() - width_1_4 - 4); }void TestRunnerDlg::OnSelectedFailureChange( NMHDR* pNMHDR, LRESULT* pResult ){ NM_LISTVIEW *pNMListView = (NM_LISTVIEW*)pNMHDR; if ( (pNMListView->uNewState & LVIS_SELECTED) != 0 ) // item selected displayFailureDetailsFor( pNMListView->iItem ); *pResult = 0;}void TestRunnerDlg::displayFailureDetailsFor( unsigned int failureIndex ){ CString details; if ( m_result && failureIndex < m_result->failures().size() ) details = m_result->failures()[ failureIndex ]->thrownException()->what(); details.Replace( _T("\n"), _T("\r\n") ); m_details.SetWindowText( details );}void TestRunnerDlg::initializeFixedSizeFont(){ LOGFONT font; GetFont()->GetLogFont( &font ); font.lfPitchAndFamily = FIXED_PITCH | //VARIABLE_PITCH (font.lfPitchAndFamily & ~15); // font family m_fixedSizeFont.CreateFontIndirect( &font );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -