Jacek Caban : mshtml: Removed code duplication in frame collection tests.

Alexandre Julliard julliard at winehq.org
Wed Feb 8 17:45:29 CST 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Feb  8 15:57:53 2012 +0100

mshtml: Removed code duplication in frame collection tests.

---

 dlls/mshtml/tests/dom.c |   94 ++++++++++++-----------------------------------
 1 files changed, 24 insertions(+), 70 deletions(-)

diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index a847998..6ceb9ea 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -5832,27 +5832,12 @@ static void test_frame(IDispatch *disp, const char *exp_id)
     IHTMLDocument2_Release(top_doc);
 }
 
-static void test_frameset(IHTMLDocument2 *doc)
+static void test_frames_collection(IHTMLFramesCollection2 *frames, const char *frid)
 {
-    IHTMLWindow2 *window;
-    IHTMLFramesCollection2 *frames;
-    IHTMLElement *elem;
-    IHTMLFrameBase *fbase;
-    LONG length;
     VARIANT index_var, result_var;
-    BSTR str;
+    LONG length;
     HRESULT hres;
 
-    window = get_doc_window(doc);
-
-    /* test using IHTMLFramesCollection object */
-
-    hres = IHTMLWindow2_get_frames(window, &frames);
-    ok(hres == S_OK, "IHTMLWindow2_get_frames failed: 0x%08x\n", hres);
-    IHTMLWindow2_Release(window);
-    if(FAILED(hres))
-        return;
-
     /* test result length */
     hres = IHTMLFramesCollection2_get_length(frames, &length);
     ok(hres == S_OK, "IHTMLFramesCollection2_get_length failed: 0x%08x\n", hres);
@@ -5888,12 +5873,12 @@ static void test_frameset(IHTMLDocument2 *doc)
 
     /* string argument (element id lookup) */
     V_VT(&index_var) = VT_BSTR;
-    V_BSTR(&index_var) = a2bstr("fr1");
+    V_BSTR(&index_var) = a2bstr(frid);
     hres = IHTMLFramesCollection2_item(frames, &index_var, &result_var);
     ok(hres == S_OK, "IHTMLFramesCollection2_item failed: 0x%08x\n", hres);
     if(SUCCEEDED(hres)) {
         ok(V_VT(&result_var) == VT_DISPATCH, "result type should have been VT_DISPATCH, was: 0x%x\n", V_VT(&result_var));
-        test_frame(V_DISPATCH(&result_var), "fr1");
+        test_frame(V_DISPATCH(&result_var), frid);
     }
     VariantClear(&result_var);
     VariantClear(&index_var);
@@ -5905,63 +5890,31 @@ static void test_frameset(IHTMLDocument2 *doc)
     ok(hres == E_INVALIDARG, "IHTMLFramesCollection2_item should have"
            "failed with E_INVALIDARG, instead: 0x%08x\n", hres);
     VariantClear(&result_var);
+}
 
-    IHTMLFramesCollection2_Release(frames);
-
-    /* test using IHTMLWindow2 inheritance */
-
-    /* test result length */
-    hres = IHTMLWindow2_get_length(window, &length);
-    ok(hres == S_OK, "IHTMLWindow2_get_length failed: 0x%08x\n", hres);
-    ok(length == 3, "IHTMLWindow2_get_length should have been 3, was: %d\n", length);
+static void test_frameset(IHTMLDocument2 *doc)
+{
+    IHTMLWindow2 *window;
+    IHTMLFramesCollection2 *frames;
+    IHTMLElement *elem;
+    IHTMLFrameBase *fbase;
+    BSTR str;
+    HRESULT hres;
 
-    /* test first frame */
-    V_VT(&index_var) = VT_I4;
-    V_I4(&index_var) = 0;
-    hres = IHTMLWindow2_item(window, &index_var, &result_var);
-    ok(hres == S_OK, "IHTMLWindow2_item failed: 0x%08x\n", hres);
-    if(SUCCEEDED(hres)) {
-        ok(V_VT(&result_var) == VT_DISPATCH, "result type should have been VT_DISPATCH, was: 0x%x\n", V_VT(&result_var));
-        test_frame((IDispatch*)V_DISPATCH(&result_var), "fr1");
-    }
-    VariantClear(&result_var);
+    window = get_doc_window(doc);
 
-    /* test second frame */
-    V_I4(&index_var) = 1;
-    hres = IHTMLWindow2_item(window, &index_var, &result_var);
-    ok(hres == S_OK, "IHTMLWindow2_item failed: 0x%08x\n", hres);
-    if(SUCCEEDED(hres)) {
-        ok(V_VT(&result_var) == VT_DISPATCH, "result type should have been VT_DISPATCH, was: 0x%x\n", V_VT(&result_var));
-        test_frame((IDispatch*)V_DISPATCH(&result_var), "fr2");
-    }
-    VariantClear(&result_var);
+    /* test using IHTMLFramesCollection object */
 
-    /* fail on next frame */
-    V_I4(&index_var) = 3;
-    hres = IHTMLWindow2_item(window, &index_var, &result_var);
-    ok(hres == DISP_E_MEMBERNOTFOUND, "IHTMLWindow2_item should have"
-           "failed with DISP_E_MEMBERNOTFOUND, instead: 0x%08x\n", hres);
-    VariantClear(&result_var);
+    hres = IHTMLWindow2_get_frames(window, &frames);
+    ok(hres == S_OK, "IHTMLWindow2_get_frames failed: 0x%08x\n", hres);
+    if(FAILED(hres))
+        return;
 
-    /* string argument (element id lookup) */
-    V_VT(&index_var) = VT_BSTR;
-    V_BSTR(&index_var) = a2bstr("fr2");
-    hres = IHTMLWindow2_item(window, &index_var, &result_var);
-    ok(hres == S_OK, "IHTMLWindow2_item failed: 0x%08x\n", hres);
-    if(SUCCEEDED(hres)) {
-        ok(V_VT(&result_var) == VT_DISPATCH, "result type should have been VT_DISPATCH, was: 0x%x\n", V_VT(&result_var));
-        test_frame((IDispatch*)V_DISPATCH(&result_var), "fr2");
-    }
-    VariantClear(&result_var);
-    VariantClear(&index_var);
+    test_frames_collection(frames, "fr1");
+    IHTMLFramesCollection2_Release(frames);
 
-    /* invalid argument */
-    V_VT(&index_var) = VT_BOOL;
-    V_BOOL(&index_var) = VARIANT_TRUE;
-    hres = IHTMLWindow2_item(window, &index_var, &result_var);
-    ok(hres == E_INVALIDARG, "IHTMLWindow2_item should have"
-           "failed with E_INVALIDARG, instead: 0x%08x\n", hres);
-    VariantClear(&result_var);
+    /* test using IHTMLWindow2 inheritance */
+    test_frames_collection((IHTMLFramesCollection2*)window, "fr2");
 
     /* getElementById with node name attributes */
     elem = get_doc_elem_by_id(doc, "nm1");
@@ -6018,6 +5971,7 @@ static void test_frameset(IHTMLDocument2 *doc)
 
     IHTMLFrameBase_Release(fbase);
     IHTMLElement_Release(elem);
+    IHTMLWindow2_Release(window);
 }
 
 static IHTMLDocument2 *create_docfrag(IHTMLDocument2 *doc)




More information about the wine-cvs mailing list