Thomas Mullaly : urlmon/tests: Added tests for IUriBuilder_RemoveProperties .
Alexandre Julliard
julliard at winehq.org
Tue Aug 24 11:09:20 CDT 2010
Module: wine
Branch: master
Commit: 84f6bb3e3f22eee70fca1602a546dd8e93d97bc6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=84f6bb3e3f22eee70fca1602a546dd8e93d97bc6
Author: Thomas Mullaly <thomas.mullaly at gmail.com>
Date: Mon Aug 23 18:59:52 2010 -0400
urlmon/tests: Added tests for IUriBuilder_RemoveProperties.
---
dlls/urlmon/tests/uri.c | 134 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 134 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index 6bb05b7..84f89d1 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -3805,6 +3805,37 @@ static const uri_builder_test uri_builder_tests[] = {
}
};
+typedef struct _uri_builder_remove_test {
+ const char *uri;
+ DWORD create_flags;
+ HRESULT create_builder_expected;
+ BOOL create_builder_todo;
+
+ DWORD remove_properties;
+ HRESULT remove_expected;
+ BOOL remove_todo;
+
+ const char *expected_uri;
+ DWORD expected_flags;
+ HRESULT expected_hres;
+ BOOL expected_todo;
+} uri_builder_remove_test;
+
+static const uri_builder_remove_test uri_builder_remove_tests[] = {
+ { "http://google.com/test?test=y#Frag",0,S_OK,FALSE,
+ Uri_HAS_FRAGMENT|Uri_HAS_PATH|Uri_HAS_QUERY,S_OK,TRUE,
+ "http://google.com/",0,S_OK,TRUE
+ },
+ { "http://user:[email protected]/",0,S_OK,FALSE,
+ Uri_HAS_USER_NAME|Uri_HAS_PASSWORD,S_OK,TRUE,
+ "http://winehq.org/",0,S_OK,TRUE
+ },
+ { "zip://google.com?Test=x",0,S_OK,FALSE,
+ Uri_HAS_HOST,S_OK,TRUE,
+ "zip:/?Test=x",0,S_OK,TRUE
+ }
+};
+
static inline LPWSTR a2w(LPCSTR str) {
LPWSTR ret = NULL;
@@ -6452,6 +6483,106 @@ static void test_IUriBuilder_IUriProperty(void) {
if(builder) IUriBuilder_Release(builder);
}
+static void test_IUriBuilder_RemoveProperties(void) {
+ IUriBuilder *builder = NULL;
+ HRESULT hr;
+ DWORD i;
+
+ 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)) {
+ /* Properties that can't be removed. */
+ const DWORD invalid = Uri_HAS_ABSOLUTE_URI|Uri_HAS_DISPLAY_URI|Uri_HAS_RAW_URI|Uri_HAS_HOST_TYPE|
+ Uri_HAS_SCHEME|Uri_HAS_ZONE;
+
+ for(i = Uri_PROPERTY_STRING_START; i <= Uri_PROPERTY_DWORD_LAST; ++i) {
+ hr = IUriBuilder_RemoveProperties(builder, i << 1);
+ if((i << 1) & invalid) {
+ todo_wine {
+ ok(hr == E_INVALIDARG,
+ "Error: IUriBuilder_RemoveProperties returned 0x%08x, expected 0x%08x with prop=%d.\n",
+ hr, E_INVALIDARG, i);
+ }
+ } else {
+ todo_wine {
+ ok(hr == S_OK,
+ "Error: IUriBuilder_RemoveProperties returned 0x%08x, expected 0x%08x with prop=%d.\n",
+ hr, S_OK, i);
+ }
+ }
+ }
+ }
+ if(builder) IUriBuilder_Release(builder);
+
+ for(i = 0; i < sizeof(uri_builder_remove_tests)/sizeof(uri_builder_remove_tests[0]); ++i) {
+ uri_builder_remove_test test = uri_builder_remove_tests[i];
+ IUri *uri = NULL;
+ LPWSTR uriW;
+
+ uriW = a2w(test.uri);
+ hr = pCreateUri(uriW, test.create_flags, 0, &uri);
+ if(SUCCEEDED(hr)) {
+ builder = NULL;
+
+ hr = pCreateIUriBuilder(uri, 0, 0, &builder);
+ if(test.create_builder_todo) {
+ todo_wine {
+ ok(hr == test.create_builder_expected,
+ "Error: CreateIUriBuilder returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.create_builder_expected, i);
+ }
+ } else {
+ ok(hr == test.create_builder_expected,
+ "Error: CreateIUriBuilder returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.create_builder_expected, i);
+ }
+ if(SUCCEEDED(hr)) {
+ hr = IUriBuilder_RemoveProperties(builder, test.remove_properties);
+ if(test.remove_todo) {
+ todo_wine {
+ ok(hr == test.remove_expected,
+ "Error: IUriBuilder_RemoveProperties returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.remove_expected, i);
+ }
+ } else {
+ ok(hr == test.remove_expected,
+ "Error: IUriBuilder returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.remove_expected, i);
+ }
+ if(SUCCEEDED(hr)) {
+ IUri *result = NULL;
+
+ hr = IUriBuilder_CreateUri(builder, test.expected_flags, 0, 0, &result);
+ if(test.expected_todo) {
+ todo_wine {
+ ok(hr == test.expected_hres,
+ "Error: IUriBuilder_CreateUri returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.expected_hres, i);
+ }
+ } else {
+ ok(hr == test.expected_hres,
+ "Error: IUriBuilder_CreateUri returned 0x%08x, expected 0x%08x on test %d.\n",
+ hr, test.expected_hres, i);
+ }
+ if(SUCCEEDED(hr)) {
+ BSTR received = NULL;
+
+ hr = IUri_GetAbsoluteUri(result, &received);
+ ok(!strcmp_aw(test.expected_uri, received),
+ "Error: Expected %s but got %s instead on test %d.\n",
+ test.expected_uri, wine_dbgstr_w(received), i);
+ SysFreeString(received);
+ }
+ if(result) IUri_Release(result);
+ }
+ }
+ if(builder) IUriBuilder_Release(builder);
+ }
+ if(uri) IUri_Release(uri);
+ heap_free(uriW);
+ }
+}
+
START_TEST(uri) {
HMODULE hurlmon;
@@ -6524,4 +6655,7 @@ START_TEST(uri) {
trace("test IUriBuilder_IUriProperty...\n");
test_IUriBuilder_IUriProperty();
+
+ trace("test IUriBuilder_RemoveProperties...\n");
+ test_IUriBuilder_RemoveProperties();
}
More information about the wine-cvs
mailing list