Module: wine Branch: master Commit: c6a72ce150519b9e1faadc41e53d8dc4f3111334 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c6a72ce150519b9e1faadc41e5...
Author: Piotr Caban piotr@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);