summaryrefslogtreecommitdiff
path: root/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
diff options
context:
space:
mode:
authorBaptiste Lepilleur <gaiacrtn@free.fr>2002-05-22 16:27:26 +0000
committerBaptiste Lepilleur <gaiacrtn@free.fr>2002-05-22 16:27:26 +0000
commit7edd0684368ed3c43fe2707d1d34d6b7590d9fd6 (patch)
tree7da10dc7bf683242741009a71fd216a3390c650b /src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
parenta882d92fce563e1d0612f16cfa48956fe904d92b (diff)
downloadcppunit-7edd0684368ed3c43fe2707d1d34d6b7590d9fd6.tar.gz
Src/msvc6/testrunner/MsDevCallerListCtrl.
src/msvc6/testrunner/MsDevCallerListCtrl.h: * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: * src/msvc6/testrunner/Resource.h: * src/msvc6/testrunner/TestRunner.rc: * src/msvc6/testrunner/TestRunnerDlg.cpp: * src/msvc6/testrunner/TestRunnerModel.h: * src/msvc6/testpluginrunner/TestPlugInRunner.rc: * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: * src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp: integrated patch from Marco Welti (Welti@GretagMacbeth.ch) with a few clean up. Display the name of the test being run during above the progress bar. Allow the VC++ add-ins to works with TestPlugInRunner (COM init). DLL name can be specified on the command line after flag '-testsuite'. Display wait cursor, clear and reload history when reloading DLL. * THANKS: added Marco Welti to the list.
Diffstat (limited to 'src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp')
-rw-r--r--src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp159
1 files changed, 106 insertions, 53 deletions
diff --git a/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp b/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
index 0f1aaba..cf8d566 100644
--- a/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
+++ b/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
@@ -5,6 +5,7 @@
#include "TestPlugInRunnerDlg.h"
#include "TestPlugIn.h"
#include "TestPlugInException.h"
+#include <algorithm>
#ifdef _DEBUG
#define new DEBUG_NEW
@@ -16,31 +17,33 @@ static char THIS_FILE[] = __FILE__;
// TestPlugInRunnerDlg dialog
TestPlugInRunnerDlg::TestPlugInRunnerDlg( TestPlugInRunnerModel *model,
- CWnd* pParent ) :
- TestRunnerDlg( model, IDD_TEST_PLUG_IN_RUNNER, pParent )
+ CWnd* pParent )
+ : TestRunnerDlg( model, IDD_TEST_PLUG_IN_RUNNER, pParent )
{
- //{{AFX_DATA_INIT(TestPlugInRunnerDlg)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
- m_hIcon = AfxGetApp()->LoadIcon(IDR_TEST_PLUGIN_RUNNER);
+ //{{AFX_DATA_INIT(TestPlugInRunnerDlg)
+ // NOTE: the ClassWizard will add member initialization here
+ //}}AFX_DATA_INIT
+ // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_TEST_PLUGIN_RUNNER);
}
-void TestPlugInRunnerDlg::DoDataExchange(CDataExchange* pDX)
+
+void
+TestPlugInRunnerDlg::DoDataExchange( CDataExchange* pDX )
{
- TestRunnerDlg::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(TestPlugInRunnerDlg)
- // NOTE: the ClassWizard will add DDX and DDV calls here
- //}}AFX_DATA_MAP
+ TestRunnerDlg::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(TestPlugInRunnerDlg)
+ // NOTE: the ClassWizard will add DDX and DDV calls here
+ //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(TestPlugInRunnerDlg, TestRunnerDlg)
- //{{AFX_MSG_MAP(TestPlugInRunnerDlg)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll)
- ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll)
- //}}AFX_MSG_MAP
+ //{{AFX_MSG_MAP(TestPlugInRunnerDlg)
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll)
+ ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll)
+ //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
@@ -48,16 +51,17 @@ END_MESSAGE_MAP()
BOOL TestPlugInRunnerDlg::OnInitDialog()
{
- TestRunnerDlg::OnInitDialog();
-
- // Set the icon for this dialog. The framework does this automatically
- // when the application's main window is not a dialog
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
-
- // TODO: Add extra initialization here
-
- return TRUE; // return TRUE unless you set the focus to a control
+ TestRunnerDlg::OnInitDialog();
+
+ // Set the icon for this dialog. The framework does this automatically
+ // when the application's main window is not a dialog
+ SetIcon(m_hIcon, TRUE); // Set big icon
+ SetIcon(m_hIcon, FALSE); // Set small icon
+
+ // TODO: Add extra initialization here
+ loadPluginIfNesseccary();
+
+ return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
@@ -66,34 +70,35 @@ BOOL TestPlugInRunnerDlg::OnInitDialog()
void TestPlugInRunnerDlg::OnPaint()
{
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
-
- SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
-
- // Center icon in client rectangle
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
-
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- TestRunnerDlg::OnPaint();
- }
+ if (IsIconic())
+ {
+ CPaintDC dc(this); // device context for painting
+
+ SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+ // Center icon in client rectangle
+ int cxIcon = GetSystemMetrics(SM_CXICON);
+ int cyIcon = GetSystemMetrics(SM_CYICON);
+ CRect rect;
+ GetClientRect(&rect);
+ int x = (rect.Width() - cxIcon + 1) / 2;
+ int y = (rect.Height() - cyIcon + 1) / 2;
+
+ // Draw the icon
+ dc.DrawIcon(x, y, m_hIcon);
+ }
+ else
+ {
+ TestRunnerDlg::OnPaint();
+ }
}
+
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR TestPlugInRunnerDlg::OnQueryDragIcon()
{
- return (HCURSOR) m_hIcon;
+ return (HCURSOR) m_hIcon;
}
@@ -115,9 +120,7 @@ TestPlugInRunnerDlg::OnChooseDll()
try
{
- TestPlugIn *plugIn = new TestPlugIn( std::string( dlg.GetPathName() ) );
- plugInModel().setPlugIn( plugIn );
- updateHistoryCombo();
+ loadDll(std::string(dlg.GetPathName()));
}
catch ( TestPlugInException &e )
{
@@ -129,5 +132,55 @@ TestPlugInRunnerDlg::OnChooseDll()
void
TestPlugInRunnerDlg::OnReloadDll()
{
+ reset();
plugInModel().reloadPlugIn();
}
+
+
+std::list<std::string>
+TestPlugInRunnerDlg::getCommandLineArguments()
+{
+ int argc;
+ LPWSTR *argv = ::CommandLineToArgvW( ::GetCommandLineW(), &argc );
+
+ std::list<std::string> arguments;
+ for( int index = 0; index < argc; index++ )
+ arguments.push_back( std::string( CString( argv[index] ) ) );
+
+ ::GlobalFree( argv );
+
+ return arguments;
+}
+
+
+void
+TestPlugInRunnerDlg::loadPluginIfNesseccary()
+{
+ std::list<std::string> argv = getCommandLineArguments();
+ std::list<std::string>::iterator iter = std::find( argv.begin(),
+ argv.end(),
+ std::string( "-testsuite" ) );
+
+ if ( iter == argv.end() )
+ return;
+
+ try
+ {
+ loadDll( *++iter );
+ }
+ catch( std::exception &e )
+ {
+ AfxMessageBox( e.what() );
+ }
+}
+
+
+void
+TestPlugInRunnerDlg::loadDll( std::string path )
+{
+ TestPlugIn *plugIn = new TestPlugIn( path );
+ plugInModel().setPlugIn( plugIn );
+
+ m_model->selectHistoryTest( plugInModel().rootTest() );
+ updateHistoryCombo();
+}