Module: wine Branch: master Commit: 9816ec856f969cd8589dc0785d6ac65b8b65502e URL: http://source.winehq.org/git/wine.git/?a=commit;h=9816ec856f969cd8589dc0785d...
Author: Thomas Mullaly thomas.mullaly@gmail.com Date: Wed Aug 18 20:31:29 2010 -0400
urlmon/tests: Added tests for IUriBuilder_GetFragment.
---
dlls/urlmon/tests/uri.c | 135 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/uri.c | 13 +++++ 2 files changed, 148 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c index 743c42c..fb105f7 100644 --- a/dlls/urlmon/tests/uri.c +++ b/dlls/urlmon/tests/uri.c @@ -5314,6 +5314,135 @@ static void test_IUriBuilder_CreateInvalidArgs(void) { if(builder) IUriBuilder_Release(builder); }
+/* Tests invalid args to the "Get*" functions. */ +static void test_IUriBuilder_GetInvalidArgs(void) { + IUriBuilder *builder = NULL; + HRESULT hr; + + hr = pCreateIUriBuilder(NULL, 0, 0, &builder); + ok(hr == S_OK, "Error: CreateIUriBuilder returned 0x%08x, expected 0x%08x.\n", hr, S_OK); + if(SUCCEEDED(hr)) { + LPCWSTR received = (void*) 0xdeadbeef; + DWORD len = -1; + + hr = IUriBuilder_GetFragment(builder, NULL, NULL); + ok(hr == E_POINTER, "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x.\n", + hr, E_POINTER); + hr = IUriBuilder_GetFragment(builder, NULL, &received); + ok(hr == E_POINTER, "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x.\n", + hr, E_POINTER); + ok(!received, "Error: Expected received to be NULL, but was %p instead.\n", received); + hr = IUriBuilder_GetFragment(builder, &len, NULL); + ok(hr == E_POINTER, "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x.\n", + hr, E_POINTER); + ok(!len, "Error: Expected len to be 0, but was %d instead.\n", len); + } + if(builder) IUriBuilder_Release(builder); +} + +static void test_IUriBuilder_GetFragment(IUriBuilder *builder, const uri_builder_test *test, + DWORD test_index) { + HRESULT hr; + DWORD i; + LPCWSTR received = NULL; + DWORD len = -1; + const uri_builder_property *prop = NULL; + + /* Check if the property was set earlier. */ + for(i = 0; i < sizeof(test->properties)/sizeof(test->properties[0]); ++i) { + if(test->properties[i].change && test->properties[i].property == Uri_PROPERTY_FRAGMENT) + prop = &(test->properties[i]); + } + + if(prop) { + /* Use expected_value unless it's NULL, then use value. */ + LPCSTR expected = prop->expected_value ? prop->expected_value : prop->value; + hr = IUriBuilder_GetFragment(builder, &len, &received); + if(prop->todo) { + todo_wine { + ok(hr == (expected ? S_OK : S_FALSE), + "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x on uri_builder_tests[%d].\n", + hr, (expected ? S_OK : S_FALSE), test_index); + } + todo_wine { + ok(!strcmp_aw(expected, received), "Error: Expected %s but got %s on uri_builder_tests[%d].\n", + expected, wine_dbgstr_w(received), test_index); + } + todo_wine { + ok(lstrlen(expected) == len, + "Error: Expected the length to be %d, but was %d instead on uri_builder_tests[%d].\n", + lstrlen(expected), len, test_index); + } + } else { + ok(hr == (expected ? S_OK : S_FALSE), + "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x on uri_builder_tests[%d].\n", + hr, (expected ? S_OK : S_FALSE), test_index); + ok(!strcmp_aw(expected, received), "Error: Expected %s but got %s on uri_builder_tests[%d].\n", + expected, wine_dbgstr_w(received), test_index); + ok(lstrlen(expected) == len, + "Error: Expected the length to be %d, but was %d instead on uri_builder_tests[%d].\n", + lstrlen(expected), len, test_index); + } + } else { + /* The property wasn't set earlier, so it should return whatever + * the base IUri contains (if anything). + */ + IUri *uri = NULL; + hr = IUriBuilder_GetIUri(builder, &uri); + todo_wine { + ok(hr == S_OK, + "Error: IUriBuilder_GetIUri returned 0x%08x, expected 0x%08x on uri_builder_tests[%d].\n", + hr, S_OK, test_index); + } + if(SUCCEEDED(hr)) { + BOOL has_prop = FALSE; + BSTR expected = NULL; + + hr = IUri_GetFragment(uri, &expected); + ok(SUCCEEDED(hr), + "Error: Expected IUri_GetFragment to succeed, but got 0x%08x instead on uri_builder_tests[%d].\n", + hr, test_index); + has_prop = hr == S_OK; + + hr = IUriBuilder_GetFragment(builder, &len, &received); + if(has_prop) { + todo_wine { + ok(hr == S_OK, + "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x on uri_builder_tests[%d].\n", + hr, S_OK, test_index); + } + if(SUCCEEDED(hr)) { + todo_wine { + ok(!lstrcmpW(expected, received), + "Error: Expected %s but got %s instead on uri_builder_tests[%d].\n", + wine_dbgstr_w(expected), wine_dbgstr_w(received), test_index); + } + todo_wine { + ok(lstrlenW(expected) == len, + "Error: Expected the length to be %d, but was %d instead on uri_builder_tests[%d].\n", + lstrlenW(expected), len, test_index); + } + } + } else { + todo_wine { + ok(hr == S_FALSE, + "Error: IUriBuilder_GetFragment returned 0x%08x, expected 0x%08x on uri_builder_tests[%d].\n", + hr, S_FALSE, test_index); + } + todo_wine { + ok(!received, "Error: Expected received to be NULL on uri_builder_tests[%d].\n", test_index); + } + todo_wine { + ok(!len, "Error: Expected the length to be 0, but was %d instead on uri_builder_tests[%d].\n", + len, test_index); + } + } + SysFreeString(expected); + } + if(uri) IUri_Release(uri); + } +} + /* Tests IUriBuilder functions. */ static void test_IUriBuilder(void) { HRESULT hr; @@ -5367,6 +5496,9 @@ static void test_IUriBuilder(void) { } }
+ /* Test the "Get*" functions. */ + test_IUriBuilder_GetFragment(builder, &test, i); + test_IUriBuilder_CreateUri(builder, &test, i); test_IUriBuilder_CreateUriSimple(builder, &test, i); test_IUriBuilder_CreateUriWithFlags(builder, &test, i); @@ -5440,4 +5572,7 @@ START_TEST(uri) {
trace("test IUriBuilder...\n"); test_IUriBuilder(); + + trace("test IUriBuilder_GetInvalidArgs...\n"); + test_IUriBuilder_GetInvalidArgs(); } diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c index 8aa130a..52b4271 100644 --- a/dlls/urlmon/uri.c +++ b/dlls/urlmon/uri.c @@ -4195,6 +4195,19 @@ static HRESULT WINAPI UriBuilder_SetIUri(IUriBuilder *iface, IUri *pIUri) static HRESULT WINAPI UriBuilder_GetFragment(IUriBuilder *iface, DWORD *pcchFragment, LPCWSTR *ppwzFragment) { UriBuilder *This = URIBUILDER_THIS(iface); + TRACE("(%p)->(%p %p)\n", This, pcchFragment, ppwzFragment); + + if(!pcchFragment) { + if(ppwzFragment) + *ppwzFragment = NULL; + return E_POINTER; + } + + if(!ppwzFragment) { + *pcchFragment = 0; + return E_POINTER; + } + FIXME("(%p)->(%p %p)\n", This, pcchFragment, ppwzFragment); return E_NOTIMPL; }