Commit df614332 authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

urlmon/tests: Windows 10 has changed the behaviour of domain detection.

The changes seem to be for the better, so the new values are not marked as broken. Signed-off-by: 's avatarHuw Davies <huw@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent e0ad2c3e
......@@ -115,6 +115,8 @@ typedef struct _uri_str_property {
HRESULT expected;
BOOL todo;
const char* broken_value;
const char* value2;
HRESULT expected2;
} uri_str_property;
typedef struct _uri_dword_property {
......@@ -1957,7 +1959,7 @@ static const uri_properties uri_tests[] = {
{"http://google.com.uk/",S_OK,FALSE},
{"google.com.uk",S_OK,FALSE},
{"http://google.com.uk/",S_OK,FALSE},
{"google.com.uk",S_OK,FALSE},
{"google.com.uk",S_OK,FALSE,NULL,"com.uk",S_OK}, /* cf. google.co.uk below */
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE},
{"google.com.uk",S_OK,FALSE},
......@@ -1977,6 +1979,31 @@ static const uri_properties uri_tests[] = {
{URLZONE_INVALID,E_NOTIMPL,FALSE}
}
},
{ "http://google.co.uk", 0, S_OK, FALSE,
{
{"http://google.co.uk/",S_OK,FALSE},
{"google.co.uk",S_OK,FALSE},
{"http://google.co.uk/",S_OK,FALSE},
{"google.co.uk",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE},
{"google.co.uk",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,FALSE},
{"/",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"http://google.co.uk",S_OK,FALSE},
{"http",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE}
},
{
{Uri_HOST_DNS,S_OK,FALSE},
{80,S_OK,FALSE},
{URL_SCHEME_HTTP,S_OK,FALSE},
{URLZONE_INVALID,E_NOTIMPL,FALSE}
}
},
{ "http://google.com.com", 0, S_OK, FALSE,
{
{"http://google.com.com/",S_OK,FALSE},
......@@ -2007,7 +2034,7 @@ static const uri_properties uri_tests[] = {
{"http://google.uk.1/",S_OK,FALSE},
{"google.uk.1",S_OK,FALSE},
{"http://google.uk.1/",S_OK,FALSE},
{"google.uk.1",S_OK,FALSE},
{"google.uk.1",S_OK,FALSE,NULL,"uk.1",S_OK},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE},
{"google.uk.1",S_OK,FALSE},
......@@ -2083,7 +2110,7 @@ static const uri_properties uri_tests[] = {
{"http://.uk/",S_OK,FALSE},
{".uk",S_OK,FALSE},
{"http://.uk/",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE,NULL,".uk",S_OK},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE},
{".uk",S_OK,FALSE},
......@@ -2108,7 +2135,7 @@ static const uri_properties uri_tests[] = {
{"http://www.co.google.com.[]/",S_OK,FALSE},
{"www.co.google.com.[]",S_OK,FALSE},
{"http://www.co.google.com.[]/",S_OK,FALSE},
{"google.com.[]",S_OK,FALSE},
{"google.com.[]",S_OK,FALSE,NULL,"com.[]",S_OK},
{"",S_FALSE,FALSE},
{"",S_FALSE,FALSE},
{"www.co.google.com.[]",S_OK,FALSE},
......@@ -7318,6 +7345,7 @@ typedef struct _uri_parse_test {
const char *property;
HRESULT expected;
BOOL todo;
const char *property2;
} uri_parse_test;
static const uri_parse_test uri_parse_tests[] = {
......@@ -7381,7 +7409,7 @@ static const uri_parse_test uri_parse_tests[] = {
{"file://server/test",0,PARSE_SITE,0,"server",S_OK,FALSE},
/* PARSE_DOMAIN tests. */
{"http://google.com.uk/",0,PARSE_DOMAIN,0,"google.com.uk",S_OK,FALSE},
{"http://google.com.uk/",0,PARSE_DOMAIN,0,"google.com.uk",S_OK,FALSE,"com.uk"},
{"http://google.com.com/",0,PARSE_DOMAIN,0,"com.com",S_OK,FALSE},
{"test/test",Uri_CREATE_ALLOW_RELATIVE,PARSE_DOMAIN,0,"",S_OK,FALSE},
{"file://server/test",0,PARSE_DOMAIN,0,"",S_OK,FALSE},
......@@ -7615,9 +7643,12 @@ static void test_IUri_GetPropertyBSTR(void) {
hr = IUri_GetPropertyBSTR(uri, j, &received, 0);
todo_wine_if(prop.todo) {
ok(hr == prop.expected, "GetPropertyBSTR returned 0x%08x, expected 0x%08x. On uri_tests[%d].str_props[%d].\n",
ok(hr == prop.expected ||
(prop.value2 && hr == prop.expected2),
"GetPropertyBSTR returned 0x%08x, expected 0x%08x. On uri_tests[%d].str_props[%d].\n",
hr, prop.expected, i, j);
ok(!strcmp_aw(prop.value, received) || broken(prop.broken_value && !strcmp_aw(prop.broken_value, received)),
ok(!strcmp_aw(prop.value, received) || (prop.value2 && !strcmp_aw(prop.value2, received)) ||
broken(prop.broken_value && !strcmp_aw(prop.broken_value, received)),
"Expected %s but got %s on uri_tests[%d].str_props[%d].\n",
prop.value, wine_dbgstr_w(received), i, j);
}
......@@ -7800,9 +7831,11 @@ static void test_IUri_GetStrProperties(void) {
prop = test.str_props[Uri_PROPERTY_DOMAIN];
hr = IUri_GetDomain(uri, &received);
todo_wine_if(prop.todo) {
ok(hr == prop.expected, "Error: GetDomain returned 0x%08x, expected 0x%08x on uri_tests[%d].\n",
ok(hr == prop.expected || (prop.value2 && hr == prop.expected2),
"Error: GetDomain returned 0x%08x, expected 0x%08x on uri_tests[%d].\n",
hr, prop.expected, i);
ok(!strcmp_aw(prop.value, received), "Error: Expected %s but got %s on uri_tests[%d].\n",
ok(!strcmp_aw(prop.value, received) || (prop.value2 && !strcmp_aw(prop.value2, received)),
"Error: Expected %s but got %s on uri_tests[%d].\n",
prop.value, wine_dbgstr_w(received), i);
}
SysFreeString(received);
......@@ -8080,9 +8113,11 @@ static void test_IUri_GetPropertyLength(void) {
hr = IUri_GetPropertyLength(uri, j, &receivedLen, 0);
todo_wine_if(prop.todo) {
ok(hr == prop.expected, "Error: GetPropertyLength returned 0x%08x, expected 0x%08x on uri_tests[%d].str_props[%d].\n",
ok(hr == prop.expected || (prop.value2 && hr == prop.expected2),
"Error: GetPropertyLength returned 0x%08x, expected 0x%08x on uri_tests[%d].str_props[%d].\n",
hr, prop.expected, i, j);
ok(receivedLen == expectedLen || broken(prop.broken_value && receivedLen == lstrlenA(prop.broken_value)),
ok(receivedLen == expectedLen || (prop.value2 && receivedLen == lstrlenA(prop.value2)) ||
broken(prop.broken_value && receivedLen == lstrlenA(prop.broken_value)),
"Error: Expected a length of %d but got %d on uri_tests[%d].str_props[%d].\n",
expectedLen, receivedLen, i, j);
}
......@@ -8095,18 +8130,25 @@ static void test_IUri_GetPropertyLength(void) {
}
}
static DWORD compute_expected_props(uri_properties *test)
static DWORD compute_expected_props(uri_properties *test, DWORD *mask)
{
DWORD ret = 0, i;
*mask = 0;
for(i=Uri_PROPERTY_STRING_START; i <= Uri_PROPERTY_STRING_LAST; i++) {
if(test->str_props[i-Uri_PROPERTY_STRING_START].expected == S_OK)
ret |= 1<<i;
if(test->str_props[i-Uri_PROPERTY_STRING_START].value2 == NULL ||
test->str_props[i-Uri_PROPERTY_STRING_START].expected ==
test->str_props[i-Uri_PROPERTY_STRING_START].expected2)
*mask |= 1<<i;
}
for(i=Uri_PROPERTY_DWORD_START; i <= Uri_PROPERTY_DWORD_LAST; i++) {
if(test->dword_props[i-Uri_PROPERTY_DWORD_START].expected == S_OK)
ret |= 1<<i;
*mask |= 1<<i;
}
return ret;
......@@ -8136,22 +8178,24 @@ static void test_IUri_GetProperties(void) {
ok(hr == test.create_expected, "Error: CreateUri returned 0x%08x, expected 0x%08x.\n", hr, test.create_expected);
if(SUCCEEDED(hr)) {
DWORD received = 0, expected_props;
DWORD received = 0, expected_props, mask;
DWORD j;
hr = IUri_GetProperties(uri, &received);
ok(hr == S_OK, "Error: GetProperties returned 0x%08x, expected 0x%08x.\n", hr, S_OK);
expected_props = compute_expected_props(&test);
expected_props = compute_expected_props(&test, &mask);
for(j = 0; j <= Uri_PROPERTY_DWORD_LAST; ++j) {
/* (1 << j) converts a Uri_PROPERTY to its corresponding Uri_HAS_* flag mask. */
if(mask & (1 << j)) {
if(expected_props & (1 << j))
ok(received & (1 << j), "Error: Expected flag for property %d on uri_tests[%d].\n", j, i);
else
ok(!(received & (1 << j)), "Error: Received flag for property %d when not expected on uri_tests[%d].\n", j, i);
}
}
}
if(uri) IUri_Release(uri);
......@@ -8184,9 +8228,9 @@ static void test_IUri_HasProperty(void) {
ok(hr == test.create_expected, "Error: CreateUri returned 0x%08x, expected 0x%08x.\n", hr, test.create_expected);
if(SUCCEEDED(hr)) {
DWORD expected_props, j;
DWORD expected_props, j, mask;
expected_props = compute_expected_props(&test);
expected_props = compute_expected_props(&test, &mask);
for(j = 0; j <= Uri_PROPERTY_DWORD_LAST; ++j) {
/* Assign -1, then explicitly test for TRUE or FALSE later. */
......@@ -8196,6 +8240,7 @@ static void test_IUri_HasProperty(void) {
ok(hr == S_OK, "Error: HasProperty returned 0x%08x, expected 0x%08x for property %d on uri_tests[%d].\n",
hr, S_OK, j, i);
if(mask & (1 << j)) {
if(expected_props & (1 << j)) {
ok(received == TRUE, "Error: Expected to have property %d on uri_tests[%d].\n", j, i);
} else {
......@@ -8203,6 +8248,7 @@ static void test_IUri_HasProperty(void) {
}
}
}
}
if(uri) IUri_Release(uri);
......@@ -10518,10 +10564,10 @@ static void test_CoInternetParseIUri(void) {
hr, test.expected, i);
if(SUCCEEDED(hr)) {
DWORD len = lstrlenA(test.property);
ok(!strcmp_aw(test.property, result),
ok(!strcmp_aw(test.property, result) || (test.property2 && !strcmp_aw(test.property2, result)),
"Error: Expected %s but got %s instead on uri_parse_tests[%d].\n",
test.property, wine_dbgstr_w(result), i);
ok(len == result_len,
ok(len == result_len || (test.property2 && lstrlenA(test.property2) == result_len),
"Error: Expected %d, but got %d instead on uri_parse_tests[%d].\n",
len, result_len, i);
} else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment