More test improvements

git-svn-id: svn://10.0.0.236/trunk@24922 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
locka%iol.ie 1999-03-23 23:56:34 +00:00
parent 4f3eb6aef6
commit be9ccb3dc6
9 changed files with 106 additions and 50 deletions

View File

@ -56,6 +56,9 @@ CBrowseDlg::CBrowseDlg(CWnd* pParent /*=NULL*/)
m_pBrowseDlg = this;
m_pControlSite = NULL;
m_clsid = CLSID_NULL;
CWinApp *pApp = AfxGetApp();
m_szTestURL = pApp->GetProfileString(SECTION_TEST, KEY_TESTURL, KEY_TESTURL_DEFAULTVALUE);
}
void CBrowseDlg::DoDataExchange(CDataExchange* pDX)
@ -287,11 +290,12 @@ TestResult CBrowseDlg::RunTest(Test *pTest)
cInfo.pControlSite = m_pControlSite;
cInfo.pIUnknown = NULL;
cInfo.pfnOutputString = CBrowseDlg::OutputString;
cInfo.szTestURL = m_szTestURL;
if (cInfo.pControlSite)
{
cInfo.pControlSite->GetControlUnknown(&cInfo.pIUnknown);
}
nResult = pTest->pfn(&cInfo);
nResult = pTest->pfn(cInfo);
pTest->nLastResult = nResult;
if (cInfo.pIUnknown)
{

View File

@ -49,6 +49,7 @@ public:
protected:
HICON m_hIcon;
CImageList m_cImageList;
CString m_szTestURL;
// Generated message map functions
//{{AFX_MSG(CBrowseDlg)

View File

@ -31,6 +31,7 @@ BrowserControl aControls[] =
{ _T("Internet Explorer Control"), &CLSID_InternetExplorer }
};
/////////////////////////////////////////////////////////////////////////////
// CPickerDlg dialog
@ -39,8 +40,12 @@ CPickerDlg::CPickerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPickerDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPickerDlg)
m_szTestURL = _T("");
//}}AFX_DATA_INIT
m_clsid = CLSID_NULL;
CWinApp *pApp = AfxGetApp();
m_szTestURL = pApp->GetProfileString(SECTION_TEST, KEY_TESTURL, KEY_TESTURL_DEFAULTVALUE);
}
@ -49,6 +54,7 @@ void CPickerDlg::DoDataExchange(CDataExchange* pDX)
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPickerDlg)
DDX_Control(pDX, IDC_LISTBROWSER, m_lbPicker);
DDX_Text(pDX, IDC_TESTURL, m_szTestURL);
//}}AFX_DATA_MAP
}
@ -79,6 +85,8 @@ BOOL CPickerDlg::OnInitDialog()
void CPickerDlg::OnOk()
{
UpdateData();
int nItem = m_lbPicker.GetCurSel();
if (nItem == LB_ERR)
{
@ -88,6 +96,9 @@ void CPickerDlg::OnOk()
m_clsid = *aControls[nItem].clsid;
CWinApp *pApp = AfxGetApp();
pApp->WriteProfileString(SECTION_TEST, KEY_TESTURL, m_szTestURL);
EndDialog(IDOK);
}

View File

@ -20,6 +20,7 @@ public:
//{{AFX_DATA(CPickerDlg)
enum { IDD = IDD_PICKBROWSER };
CListBox m_lbPicker;
CString m_szTestURL;
//}}AFX_DATA
CLSID m_clsid;

View File

@ -45,6 +45,11 @@ typedef std::basic_string<TCHAR> tstring;
#include "Tests.h"
#define SECTION_TEST _T("Test")
#define KEY_TESTURL _T("TestURL")
#define KEY_TESTURL_DEFAULTVALUE _T("http://www.mozilla.org")
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

View File

@ -18,10 +18,10 @@
#include "stdafx.h"
TestResult __cdecl tstDocument(BrowserInfo *pInfo)
TestResult __cdecl tstDocument(BrowserInfo &cInfo)
{
CIPtr(IHTMLDocument2) cpDocElement;
pInfo->GetDocument(&cpDocElement);
cInfo.GetDocument(&cpDocElement);
if (cpDocElement == NULL)
{
return trFailed;
@ -31,7 +31,7 @@ TestResult __cdecl tstDocument(BrowserInfo *pInfo)
}
void tstDrillerLevel(BrowserInfo *pInfo, IHTMLElementCollection *pCollection, int nLevel)
void tstDrillerLevel(BrowserInfo &cInfo, IHTMLElementCollection *pCollection, int nLevel)
{
if (pCollection == NULL)
{
@ -61,22 +61,35 @@ void tstDrillerLevel(BrowserInfo *pInfo, IHTMLElementCollection *pCollection, in
if ( hr == S_OK )
{
BSTR bstr;
hr = cpElem->get_tagName(&bstr);
BSTR bstrTagName = NULL;
hr = cpElem->get_tagName(&bstrTagName);
CString szTagName = bstrTagName;
SysFreeString(bstrTagName);
BSTR bstrID = NULL;
hr = cpElem->get_id(&bstrID);
CString szID = bstrID;
SysFreeString(bstrID);
BSTR bstrClassName = NULL;
hr = cpElem->get_className(&bstrClassName);
CString szClassName = bstrClassName;
SysFreeString(bstrClassName);
USES_CONVERSION;
char szLevel[256];
memset(szLevel, 0, sizeof(szLevel));
memset(szLevel, ' ', nLevel);
CString strTag = bstr;
pInfo->pfnOutputString(_T("Parsing element: %s%s"), A2T(szLevel), strTag);
cInfo.pfnOutputString(_T("%sElement %s"), A2T(szLevel), szTagName);
cInfo.pfnOutputString(_T("%s id=%s"), A2T(szLevel), szID);
cInfo.pfnOutputString(_T("%s classname=%s"), A2T(szLevel), szClassName);
CIPtr(IHTMLImgElement) cpImgElem;
hr = cpDisp->QueryInterface( IID_IHTMLImgElement, (void **)&cpImgElem );
if ( hr == S_OK )
{
cpImgElem->get_href(&bstr);
// cpImgElem->get_href(&bstr);
}
else
{
@ -84,25 +97,25 @@ void tstDrillerLevel(BrowserInfo *pInfo, IHTMLElementCollection *pCollection, in
hr = cpDisp->QueryInterface( IID_IHTMLAnchorElement, (void **)&cpAnchElem );
if ( hr == S_OK )
{
cpAnchElem->get_href(&bstr);
// cpAnchElem->get_href(&bstr);
}
}
CIPtr(IDispatch) cpDispColl;
hr = cpElem->get_all(&cpDispColl);
hr = cpElem->get_children(&cpDispColl);
if (hr == S_OK)
{
CIPtr(IHTMLElementCollection) cpColl = cpDispColl;
tstDrillerLevel(pInfo, cpColl, nLevel + 1);
tstDrillerLevel(cInfo, cpColl, nLevel + 1);
}
}
}
}
TestResult __cdecl tstDriller(BrowserInfo *pInfo)
TestResult __cdecl tstDriller(BrowserInfo &cInfo)
{
CIPtr(IHTMLDocument2) cpDocElement;
pInfo->GetDocument(&cpDocElement);
cInfo.GetDocument(&cpDocElement);
if (cpDocElement == NULL)
{
return trFailed;
@ -112,21 +125,21 @@ TestResult __cdecl tstDriller(BrowserInfo *pInfo)
HRESULT hr = cpDocElement->get_all( &cpColl );
if (hr == S_OK)
{
tstDrillerLevel(pInfo, cpColl, 0);
tstDrillerLevel(cInfo, cpColl, 0);
}
return trPassed;
}
TestResult __cdecl tstTesters(BrowserInfo *pInfo)
TestResult __cdecl tstTesters(BrowserInfo &cInfo)
{
pInfo->pfnOutputString("Test architecture is reasonably sane!");
cInfo.pfnOutputString("Test architecture is reasonably sane!");
return trPassed;
}
TestResult __cdecl tstControlActive(BrowserInfo *pInfo)
TestResult __cdecl tstControlActive(BrowserInfo &cInfo)
{
CControlSiteInstance *pControlSite = pInfo->pControlSite;
CControlSiteInstance *pControlSite = cInfo.pControlSite;
if (pControlSite == NULL || !pControlSite->IsInPlaceActive())
{
return trFailed;
@ -134,34 +147,31 @@ TestResult __cdecl tstControlActive(BrowserInfo *pInfo)
return trPassed;
}
TestResult __cdecl tstIWebBrowser(BrowserInfo *pInfo)
TestResult __cdecl tstIWebBrowser(BrowserInfo &cInfo)
{
if (pInfo->pIUnknown == NULL)
if (cInfo.pIUnknown == NULL)
{
return trFailed;
}
IWebBrowser *pIWebBrowser = NULL;
pInfo->pIUnknown->QueryInterface(IID_IWebBrowser, (void **) &pIWebBrowser);
if (pIWebBrowser)
CIPtr(IWebBrowser) cpIWebBrowser = cInfo.pIUnknown;
if (cpIWebBrowser)
{
pIWebBrowser->Release();
return trPassed;
}
return trFailed;
}
TestResult __cdecl tstIWebBrowser2(BrowserInfo *pInfo)
TestResult __cdecl tstIWebBrowser2(BrowserInfo &cInfo)
{
if (pInfo->pIUnknown == NULL)
if (cInfo.pIUnknown == NULL)
{
return trFailed;
}
IWebBrowser2 *pIWebBrowser = NULL;
pInfo->pIUnknown->QueryInterface(IID_IWebBrowser2, (void **) &pIWebBrowser);
if (pIWebBrowser)
CIPtr(IWebBrowser2) cpIWebBrowser = cInfo.pIUnknown;
if (cpIWebBrowser)
{
pIWebBrowser->Release();
return trPassed;
}
@ -169,23 +179,29 @@ TestResult __cdecl tstIWebBrowser2(BrowserInfo *pInfo)
}
TestResult __cdecl tstIWebBrowserApp(BrowserInfo *pInfo)
TestResult __cdecl tstIWebBrowserApp(BrowserInfo &cInfo)
{
if (pInfo->pIUnknown == NULL)
if (cInfo.pIUnknown == NULL)
{
return trFailed;
}
IWebBrowser2 *pIWebBrowser = NULL;
pInfo->pIUnknown->QueryInterface(IID_IWebBrowserApp, (void **) &pIWebBrowser);
if (pIWebBrowser)
CIPtr(IWebBrowserApp) cpIWebBrowser = cInfo.pIUnknown;
if (cpIWebBrowser)
{
pIWebBrowser->Release();
return trPassed;
}
return trFailed;
}
TestResult __cdecl tstNavigate2(BrowserInfo &cInfo)
{
return trFailed;
}
///////////////////////////////////////////////////////////////////////////////
Test aBasic[] =
{
{ _T("Test Tester"), _T("Ensure that the testing architecture is working"), tstTesters, trNotRun },
@ -195,6 +211,16 @@ Test aBasic[] =
{ _T("IWebBrowserApp"), _T("Test if control has an IWebBrowserApp interface"), tstIWebBrowserApp, trNotRun }
};
Test aBrowsing[] =
{
{ _T("Navigate2"), _T("Test if browser can navigate to the test URL"), NULL }
};
Test aOther[] =
{
{ _T("Print Page"), _T("Print the test URL page"), NULL }
};
Test aDHTML[] =
{
{ _T("get_Document"), _T("Test if browser has a top level element"), tstDocument },
@ -204,7 +230,8 @@ Test aDHTML[] =
TestSet aTestSets[] =
{
{ _T("Basic"), _T("Basic sanity tests"), 5, aBasic },
{ _T("Browsing"), _T("Browsing and navigation tests"), 0, NULL },
{ _T("Browsing"), _T("Browsing and navigation tests"), 1, aBrowsing },
{ _T("Other"), _T("Other tests"), 1, aOther },
{ _T("DHTML"), _T("Test the DOM"), 2, aDHTML }
};

View File

@ -38,6 +38,7 @@ public:
IUnknown *pIUnknown;
CLSID clsid;
OutputStringProc pfnOutputString;
CString szTestURL;
HRESULT GetWebBrowser(IWebBrowserApp **pWebBrowser)
{
@ -68,7 +69,7 @@ public:
};
typedef TestResult (__cdecl *TestProc)(BrowserInfo *pInfo);
typedef TestResult (__cdecl *TestProc)(BrowserInfo &cInfo);
struct Test
{

View File

@ -211,18 +211,23 @@ IDI_TEST ICON DISCARDABLE "res\\test.ico"
// Dialog
//
IDD_PICKBROWSER DIALOG DISCARDABLE 0, 0, 186, 71
IDD_PICKBROWSER DIALOG DISCARDABLE 0, 0, 284, 157
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
CAPTION "Welcome to CBrowse!"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,129,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14
LISTBOX IDC_LISTBROWSER,7,38,115,26,LBS_NOINTEGRALHEIGHT |
LTEXT "This is a browser/test application written in MFC that exercises the IE browser interface of the control that you choose from the list below.",
IDC_STATIC,7,7,213,27
LTEXT "Whatever control you choose, the exact same code is run upon it. Discrepancies in behaviour or test results may indicate a bug!",
IDC_STATIC,7,37,213,20
LTEXT "Pick the browser to test:",IDC_STATIC,7,61,77,8
LISTBOX IDC_LISTBROWSER,7,74,213,26,LBS_NOINTEGRALHEIGHT |
WS_VSCROLL | WS_TABSTOP
LTEXT "CBrowse is a test app that exercises the IE browser interface.",
IDC_STATIC,7,7,116,18
LTEXT "Pick the browser to test:",IDC_STATIC,7,28,77,8
LTEXT "Some of the tests require a test URL. You may change the default one if you want. Ensure that the URL is valid otherwise the tests might fail!",
IDC_STATIC,7,108,213,25
EDITTEXT IDC_TESTURL,7,137,213,13,ES_AUTOHSCROLL
DEFPUSHBUTTON "OK",IDOK,227,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,227,24,50,14
END
@ -237,9 +242,9 @@ BEGIN
IDD_PICKBROWSER, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 179
RIGHTMARGIN, 277
TOPMARGIN, 7
BOTTOMMARGIN, 64
BOTTOMMARGIN, 150
END
END
#endif // APSTUDIO_INVOKED

View File

@ -21,6 +21,7 @@
#define IDC_BACKWARD 1008
#define IDC_FORWARD 1009
#define IDC_TESTDESCRIPTION 1010
#define IDC_TESTURL 1011
// Next default values for new objects
//
@ -28,7 +29,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 135
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1011
#define _APS_NEXT_CONTROL_VALUE 1012
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif