Piotr Caban : urlmon/tests: Added Uri IMarshal_MarshalInterface tests.

Alexandre Julliard julliard at winehq.org
Mon Jan 16 13:01:33 CST 2012


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Jan 16 15:13:18 2012 +0100

urlmon/tests: Added Uri IMarshal_MarshalInterface tests.

---

 dlls/urlmon/tests/uri.c |   52 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index e570965..4f1db15 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -10691,6 +10691,7 @@ static void test_IPersistStream(void)
         IUri *uri;
         IPersistStream *persist_stream;
         IStream *stream;
+        IMarshal *marshal;
         DWORD props, props_no, dw_data[6];
         WCHAR str_data[1024];
         ULARGE_INTEGER size, max_size;
@@ -10821,6 +10822,57 @@ static void test_IPersistStream(void)
                 wine_dbgstr_w(raw_uri));
         SysFreeString(raw_uri);
 
+        hr = IUri_QueryInterface(uri, &IID_IMarshal, (void**)&marshal);
+        ok(hr == S_OK, "%d) QueryInterface(IID_IMarshal) failed 0x%08x, expected S_OK.\n", i, hr);
+        hr = IStream_Seek(stream, no_off, STREAM_SEEK_SET, NULL);
+        ok(hr == S_OK, "%d) Seek failed 0x%08x, expected S_OK.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_DIFFERENTMACHINE, NULL, MSHLFLAGS_NORMAL);
+        ok(hr == E_INVALIDARG, "%d) MarshalInterface returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_CROSSCTX, NULL, MSHLFLAGS_NORMAL);
+        ok(hr == E_INVALIDARG, "%d) MarshalInterface returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG);
+        ok(hr == E_INVALIDARG, "%d) MarshalInterface returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLEWEAK);
+        ok(hr == E_INVALIDARG, "%d) MarshalInterface returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_LOCAL, NULL, MSHLFLAGS_NOPING);
+        ok(hr == E_INVALIDARG, "%d) MarshalInterface returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_MarshalInterface(marshal, stream, &IID_IUri, (void*)uri,
+                MSHCTX_LOCAL, NULL, MSHLFLAGS_NORMAL);
+        ok(hr == S_OK, "%d) MarshalInterface failed 0x%08x, expected S_OK.\n", i, hr);
+        hr = IMarshal_GetUnmarshalClass(marshal, &IID_IUri, (void*)uri,
+                MSHCTX_CROSSCTX, NULL, MSHLFLAGS_NORMAL, &curi);
+        ok(hr == E_INVALIDARG, "%d) GetUnmarshalClass returned 0x%08x, expected E_INVALIDARG.\n", i, hr);
+        hr = IMarshal_GetUnmarshalClass(marshal, &IID_IUri, (void*)uri,
+                MSHCTX_INPROC, NULL, MSHLFLAGS_NORMAL, &curi);
+        ok(hr == S_OK, "%d) GetUnmarshalClass failed 0x%08x, expected S_OK.\n", i, hr);
+        ok(IsEqualCLSID(&curi, &CLSID_CUri), "%d) GetUnmarshalClass returned incorrect CLSID.\n", i);
+
+        hr = IStream_Seek(stream, no_off, STREAM_SEEK_CUR, &size);
+        ok(hr == S_OK, "%d) Seek failed 0x%08x, expected S_OK.\n", i, hr);
+        hr = IStream_Seek(stream, no_off, STREAM_SEEK_SET, NULL);
+        ok(hr == S_OK, "%d) Seek failed 0x%08x, expected S_OK.\n", i, hr);
+        hr = IStream_Read(stream, (void*)dw_data, 3*sizeof(DWORD), NULL);
+        ok(hr == S_OK, "%d) Read failed 0x%08x, expected S_OK.\n", i, hr);
+        ok(dw_data[0]-2 == U(size).LowPart, "%d) Structure size is %d, expected %d\n",
+                i, dw_data[0]-2, U(size).LowPart);
+        ok(dw_data[1] == MSHCTX_LOCAL, "%d) Incorrect value %d, expected MSHCTX_LOCAL.\n",
+                i, dw_data[1]);
+        ok(dw_data[2] == dw_data[0]-8, "%d) Incorrect value %d, expected %d (PersistStream size).\n",
+                i, dw_data[2], dw_data[0]-8);
+        if(!test->str_props[Uri_PROPERTY_PATH].value[0] &&
+                (test->dword_props[Uri_PROPERTY_SCHEME-Uri_PROPERTY_DWORD_START].value == URL_SCHEME_HTTP
+                 || test->dword_props[Uri_PROPERTY_SCHEME-Uri_PROPERTY_DWORD_START].value == URL_SCHEME_FTP
+                 || test->dword_props[Uri_PROPERTY_SCHEME-Uri_PROPERTY_DWORD_START].value == URL_SCHEME_HTTPS))
+            U(max_size).LowPart += 3*sizeof(DWORD);
+        ok(dw_data[2] == U(max_size).LowPart, "%d) Incorrect value %d, expected %d (PersistStream size).\n",
+                i, dw_data[2], U(max_size).LowPart);
+
+        IMarshal_Release(marshal);
         IStream_Release(stream);
         IPersistStream_Release(persist_stream);
         IUri_Release(uri);




More information about the wine-cvs mailing list