Commit 406fe0ef authored by Christian Costa's avatar Christian Costa Committed by Vitaly Lipatov

shdocvw: Check precisely ParseURLFromOutsideSourceX returned values in tests and…

shdocvw: Check precisely ParseURLFromOutsideSourceX returned values in tests and make code clearer about that. (try 3) Try 3: - fix test check for ansi version - fix error message for both versions Try 2: - improve comments
parent 0ecb7ab5
......@@ -344,8 +344,7 @@ DWORD WINAPI ParseURLFromOutsideSourceW(LPCWSTR url, LPWSTR out, LPDWORD plen, L
HRESULT hr;
DWORD needed;
DWORD len;
DWORD res = 0;
DWORD res;
TRACE("(%s, %p, %p, %p) len: %ld, unknown: 0x%lx\n", debugstr_w(url), out, plen, unknown,
plen ? *plen : 0, unknown ? *unknown : 0);
......@@ -371,10 +370,12 @@ DWORD WINAPI ParseURLFromOutsideSourceW(LPCWSTR url, LPWSTR out, LPDWORD plen, L
needed = lstrlenW(buffer_out)+1;
TRACE("got 0x%lx with %s (need %ld)\n", hr, debugstr_w(buffer_out), needed);
res = 0;
if (*plen >= needed) {
if (out != NULL) {
lstrcpyW(out, buffer_out);
res++;
/* On success, 1 is returned for unicode version */
res = 1;
}
needed--;
}
......@@ -417,6 +418,7 @@ DWORD WINAPI ParseURLFromOutsideSourceA(LPCSTR url, LPSTR out, LPDWORD plen, LPD
if (*plen >= needed) {
if (out != NULL) {
WideCharToMultiByte(CP_ACP, 0, buffer, -1, out, *plen, NULL, NULL);
/* On success, string size including terminating 0 is returned for ansi version */
res = needed;
}
needed--;
......
......@@ -212,13 +212,13 @@ static void test_ParseURLFromOutsideSourceA(void)
buffer[sizeof(buffer)-1] = '\0';
len = sizeof(buffer);
dummy = 0;
/* on success, len+1 is returned. No idea, if someone depend on this */
/* on success, string size including terminating 0 is returned for ansi version */
res = pParseURLFromOutsideSourceA(ParseURL_table[i].url, buffer, &len, &dummy);
/* len does not include the terminating 0, when buffer is large enough */
ok( res != 0 && len == ParseURL_table[i].len &&
ok( res == (ParseURL_table[i].len+1) && len == ParseURL_table[i].len &&
!lstrcmpA(buffer, ParseURL_table[i].newurl),
"#%d: got %ld and %ld with '%s' (expected '!=0' and %ld with '%s')\n",
i, res, len, buffer, ParseURL_table[i].len, ParseURL_table[i].newurl);
"#%d: got %ld and %ld with '%s' (expected %ld and %ld with '%s')\n",
i, res, len, buffer, ParseURL_table[i].len+1, ParseURL_table[i].len, ParseURL_table[i].newurl);
/* use the size test only for the first examples */
......@@ -308,11 +308,12 @@ static void test_ParseURLFromOutsideSourceW(void)
/* len is in characters */
len = ARRAY_SIZE(bufferW);
dummy = 0;
/* on success, 1 is returned for unicode version */
res = pParseURLFromOutsideSourceW(urlW, bufferW, &len, &dummy);
WideCharToMultiByte(CP_ACP, 0, bufferW, -1, bufferA, sizeof(bufferA), NULL, NULL);
ok( res != 0 && len == ParseURL_table[0].len &&
ok( res == 1 && len == ParseURL_table[0].len &&
!lstrcmpA(bufferA, ParseURL_table[0].newurl),
"got %ld and %ld with '%s' (expected '!=0' and %ld with '%s')\n",
"got %ld and %ld with '%s' (expected 1 and %ld with '%s')\n",
res, len, bufferA, ParseURL_table[0].len, ParseURL_table[0].newurl);
......
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