From 18c7070b7f47a908567c737808c1cfeeead7e11c Mon Sep 17 00:00:00 2001 From: Thomas Mullaly Date: Thu, 7 Oct 2010 19:22:44 -0400 Subject: [PATCH] urlmon/tests: Added basic tests for CoInternetCombineIUri. --- dlls/urlmon/tests/uri.c | 36 ++++++++++++++++++++++++++++++++++++ dlls/urlmon/uri.c | 10 ++++++++++ 2 files changed, 46 insertions(+) diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c index 93493a8e3a6..39cfaaaee10 100644 --- a/dlls/urlmon/tests/uri.c +++ b/dlls/urlmon/tests/uri.c @@ -36,6 +36,7 @@ static HRESULT (WINAPI *pCreateUri)(LPCWSTR, DWORD, DWORD_PTR, IUri**); static HRESULT (WINAPI *pCreateUriWithFragment)(LPCWSTR, LPCWSTR, DWORD, DWORD_PTR, IUri**); static HRESULT (WINAPI *pCreateIUriBuilder)(IUri*, DWORD, DWORD_PTR, IUriBuilder**); +static HRESULT (WINAPI *pCoInternetCombineIUri)(IUri*,IUri*,DWORD,IUri**,DWORD_PTR); static const WCHAR http_urlW[] = { 'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q', '.','o','r','g','/',0}; @@ -8633,6 +8634,37 @@ static void test_IUriBuilder_Misc(void) { if(uri) IUri_Release(uri); } +static void test_CoInternetCombineIUri(void) { + HRESULT hr; + IUri *base, *relative, *result; + + base = NULL; + hr = pCreateUri(http_urlW, 0, 0, &base); + ok(SUCCEEDED(hr), "Error: Expected CreateUri to succeed, got 0x%08x.\n", hr); + if(SUCCEEDED(hr)) { + result = (void*) 0xdeadbeef; + hr = pCoInternetCombineIUri(base, NULL, 0, &result, 0); + ok(hr == E_INVALIDARG, "Error: CoInternetCombineIUri returned 0x%08x, expected 0x%08x.\n", hr, E_INVALIDARG); + ok(!result, "Error: Expected 'result' to be NULL, was %p.\n", result); + } + + relative = NULL; + hr = pCreateUri(http_urlW, 0, 0, &relative); + ok(SUCCEEDED(hr), "Error: Expected CreateUri to succeed, got 0x%08x.\n", hr); + if(SUCCEEDED(hr)) { + result = (void*) 0xdeadbeef; + hr = pCoInternetCombineIUri(NULL, relative, 0, &result, 0); + ok(hr == E_INVALIDARG, "Error: CoInternetCombineIUri returned 0x%08x, expected 0x%08x.\n", hr, E_INVALIDARG); + ok(!result, "Error: Expected 'result' to be NULL, was %p.\n", result); + } + + hr = pCoInternetCombineIUri(base, relative, 0, NULL, 0); + ok(hr == E_INVALIDARG, "Error: CoInternetCombineIUri returned 0x%08x, expected 0x%08x.\n", hr, E_INVALIDARG); + + if(base) IUri_Release(base); + if(relative) IUri_Release(relative); +} + START_TEST(uri) { HMODULE hurlmon; @@ -8640,6 +8672,7 @@ START_TEST(uri) { pCreateUri = (void*) GetProcAddress(hurlmon, "CreateUri"); pCreateUriWithFragment = (void*) GetProcAddress(hurlmon, "CreateUriWithFragment"); pCreateIUriBuilder = (void*) GetProcAddress(hurlmon, "CreateIUriBuilder"); + pCoInternetCombineIUri = (void*) GetProcAddress(hurlmon, "CoInternetCombineIUri"); if(!pCreateUri) { win_skip("CreateUri is not present, skipping tests.\n"); @@ -8711,4 +8744,7 @@ START_TEST(uri) { trace("test IUriBuilder miscellaneous...\n"); test_IUriBuilder_Misc(); + + trace("test CoInternetCombineIUri...\n"); + test_CoInternetCombineIUri(); } diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index 99906d20647..e6304e81cec 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -5595,6 +5595,16 @@ HRESULT WINAPI CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserve HRESULT WINAPI CoInternetCombineIUri(IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved) { + TRACE("(%p %p %x %p %x)\n", pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, (DWORD)dwReserved); + + if(!ppCombinedUri) + return E_INVALIDARG; + + if(!pBaseUri || !pRelativeUri) { + *ppCombinedUri = NULL; + return E_INVALIDARG; + } + FIXME("(%p %p %x %p %x): stub\n", pBaseUri, pRelativeUri, dwCombineFlags, ppCombinedUri, (DWORD)dwReserved); return E_NOTIMPL; }