Module: wine Branch: master Commit: bfebbbb13e20addc8acd08b3ab829318ea03b679 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bfebbbb13e20addc8acd08b3ab...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Jan 31 00:32:04 2011 +0100
mshtml: Added script execution time tests.
---
dlls/mshtml/tests/exectest.html | 32 ++++++++++++++++++++++++++++++++ dlls/mshtml/tests/rsrc.rc | 3 +++ dlls/mshtml/tests/script.c | 22 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/dlls/mshtml/tests/exectest.html b/dlls/mshtml/tests/exectest.html new file mode 100644 index 0000000..42fa38a --- /dev/null +++ b/dlls/mshtml/tests/exectest.html @@ -0,0 +1,32 @@ +<html> +<body> +Script execution test +<div id="b1"></div> +<div id="b2"></div> +<div id="b3"></div> +<script> +function ok(b, msg) { + return external.ok(b, msg); +} + +var executed = false; +var len = document.getElementsByTagName('div').length; +ok(len === 3, "init length = " + len); + +document.write("<script>" + + "var len = document.getElementsByTagName('div').length;" + + "external.todo_wine_ok(len === 3, 'unexpected length ' + len);" + + "executed = true;" + + "<" + "/script>"); + +len = document.getElementsByTagName('script').length; +external.todo_wine_ok(len === 2, "script col length = " + len); +external.todo_wine_ok(executed, "writen script not executed"); + +external.reportSuccess(); +</script> +<div id="a1"></div> +<div id="a2"></div> +<div id="b3"></div> +</body> +</html> diff --git a/dlls/mshtml/tests/rsrc.rc b/dlls/mshtml/tests/rsrc.rc index 70925ca..d6c0ffd 100644 --- a/dlls/mshtml/tests/rsrc.rc +++ b/dlls/mshtml/tests/rsrc.rc @@ -16,5 +16,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+/* @makedep: exectest.html */ +exectest.html HTML "exectest.html" + /* @makedep: jstest.html */ jstest.html HTML "jstest.html" diff --git a/dlls/mshtml/tests/script.c b/dlls/mshtml/tests/script.c index af51b78..f9aafbb 100644 --- a/dlls/mshtml/tests/script.c +++ b/dlls/mshtml/tests/script.c @@ -139,6 +139,7 @@ DEFINE_EXPECT(external_success); #define DISPID_EXTERNAL_OK 0x300000 #define DISPID_EXTERNAL_TRACE 0x300001 #define DISPID_EXTERNAL_REPORTSUCCESS 0x300002 +#define DISPID_EXTERNAL_TODO_WINE_OK 0x300003
static const GUID CLSID_TestScript = {0x178fc163,0xf585,0x4e24,{0x9c,0x13,0x4b,0xb7,0xfa,0xf8,0x07,0x46}}; @@ -493,6 +494,10 @@ static HRESULT WINAPI externalDisp_GetDispID(IDispatchEx *iface, BSTR bstrName, *pid = DISPID_EXTERNAL_REPORTSUCCESS; return S_OK; } + if(!strcmp_wa(bstrName, "todo_wine_ok")) { + *pid = DISPID_EXTERNAL_TODO_WINE_OK; + return S_OK; + }
ok(0, "unexpected name %s\n", wine_dbgstr_w(bstrName)); return DISP_E_UNKNOWNNAME; @@ -546,6 +551,22 @@ static HRESULT WINAPI externalDisp_InvokeEx(IDispatchEx *iface, DISPID id, LCID
return S_OK;
+ case DISPID_EXTERNAL_TODO_WINE_OK: + ok(wFlags == INVOKE_FUNC || wFlags == (INVOKE_FUNC|INVOKE_PROPERTYGET), "wFlags = %x\n", wFlags); + ok(pdp != NULL, "pdp == NULL\n"); + ok(pdp->rgvarg != NULL, "rgvarg == NULL\n"); + ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n"); + ok(pdp->cArgs == 2, "cArgs = %d\n", pdp->cArgs); + ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); + ok(pei != NULL, "pei == NULL\n"); + + ok(V_VT(pdp->rgvarg) == VT_BSTR, "V_VT(psp->rgvargs) = %d\n", V_VT(pdp->rgvarg)); + ok(V_VT(pdp->rgvarg+1) == VT_BOOL, "V_VT(psp->rgvargs+1) = %d\n", V_VT(pdp->rgvarg)); + todo_wine + ok(V_BOOL(pdp->rgvarg+1), "%s\n", wine_dbgstr_w(V_BSTR(pdp->rgvarg))); + + return S_OK; + default: ok(0, "unexpected call\n"); return E_NOTIMPL; @@ -2561,6 +2582,7 @@ static void run_js_script(const char *test_name) static void run_js_tests(void) { run_js_script("jstest.html"); + run_js_script("exectest.html"); }
static BOOL init_registry(BOOL init)