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: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Huw Davies 2017-01-25 08:59:56 +00:00 committed by Alexandre Julliard
parent e0ad2c3e5f
commit df6143325a
1 changed files with 72 additions and 26 deletions

View File

@ -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,20 +8178,22 @@ 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(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(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);
}
}
}
@ -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,10 +8240,12 @@ 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(expected_props & (1 << j)) {
ok(received == TRUE, "Error: Expected to have property %d on uri_tests[%d].\n", j, i);
} else {
ok(received == FALSE, "Error: Wasn't expecting to have property %d on uri_tests[%d].\n", 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 {
ok(received == FALSE, "Error: Wasn't expecting to have property %d on uri_tests[%d].\n", j, i);
}
}
}
}
@ -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 {