Jacek Caban : mshtml: Added script execution time tests.

Alexandre Julliard julliard at winehq.org
Mon Jan 31 11:26:13 CST 2011


Module: wine
Branch: master
Commit: bfebbbb13e20addc8acd08b3ab829318ea03b679
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bfebbbb13e20addc8acd08b3ab829318ea03b679

Author: Jacek Caban <jacek at 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)




More information about the wine-cvs mailing list