Commit e65195f8 authored by Mike Ruprecht's avatar Mike Ruprecht Committed by Alexandre Julliard

wininet/tests: Add test for FtpFindFirstFile.

parent 67105605
......@@ -25,7 +25,6 @@
* TODO:
* Add W-function tests.
* Add missing function tests:
* FtpFindFirstFile
* FtpGetFileSize
* FtpSetCurrentDirectory
*/
......@@ -723,6 +722,89 @@ static void test_command(HINTERNET hFtp, HINTERNET hConnect)
}
}
static void test_find_first_file(HINTERNET hFtp, HINTERNET hConnect)
{
WIN32_FIND_DATA findData;
HINTERNET hSearch;
HINTERNET hSearch2;
HINTERNET hOpenFile;
/* NULL as the search file ought to return the first file in the directory */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, NULL, &findData, 0, 0);
ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
/* This should fail as the previous handle wasn't closed */
SetLastError(0xdeadbeef);
hSearch2 = FtpFindFirstFileA(hFtp, "welcome.msg", &findData, 0, 0);
todo_wine ok ( hSearch2 == NULL, "Expected FtpFindFirstFileA to fail\n" );
todo_wine ok ( GetLastError() == ERROR_FTP_TRANSFER_IN_PROGRESS,
"Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", GetLastError() );
InternetCloseHandle(hSearch2); /* Just in case */
InternetCloseHandle(hSearch);
/* Try a valid filename in a subdirectory search */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "pub/wine", &findData, 0, 0);
todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
InternetCloseHandle(hSearch);
/* Try a valid filename in a subdirectory wildcard search */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "pub/w*", &findData, 0, 0);
todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
InternetCloseHandle(hSearch);
/* Try an invalid wildcard search */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "*/w*", &findData, 0, 0);
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
InternetCloseHandle(hSearch); /* Just in case */
/* Try FindFirstFile between FtpOpenFile and InternetCloseHandle */
SetLastError(0xdeadbeef);
hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0);
ok ( hOpenFile != NULL, "Expected FtpOpenFileA to succeed\n" );
ok ( GetLastError() == ERROR_SUCCESS ||
broken(GetLastError() == ERROR_FILE_NOT_FOUND), /* Win98 */
"Expected ERROR_SUCCESS, got %u\n", GetLastError() );
/* This should fail as the OpenFile handle wasn't closed */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "welcome.msg", &findData, 0, 0);
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
ok ( GetLastError() == ERROR_FTP_TRANSFER_IN_PROGRESS,
"Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", GetLastError() );
InternetCloseHandle(hSearch); /* Just in case */
InternetCloseHandle(hOpenFile);
/* Test using a nonexistent filename */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "this_file_should_not_exist", &findData, 0, 0);
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
todo_wine ok ( GetLastError() == ERROR_INTERNET_EXTENDED_ERROR,
"Expected ERROR_INTERNET_EXTENDED_ERROR, got %d\n", GetLastError() );
InternetCloseHandle(hSearch); /* Just in case */
/* Test using a nonexistent filename and a wildcard */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hFtp, "this_file_should_not_exist*", &findData, 0, 0);
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
todo_wine ok ( GetLastError() == ERROR_NO_MORE_FILES,
"Expected ERROR_NO_MORE_FILES, got %d\n", GetLastError() );
InternetCloseHandle(hSearch); /* Just in case */
/* Test using an invalid handle type */
SetLastError(0xdeadbeef);
hSearch = FtpFindFirstFileA(hConnect, "welcome.msg", &findData, 0, 0);
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE,
"Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError() );
InternetCloseHandle(hSearch); /* Just in case */
}
static void test_get_current_dir(HINTERNET hFtp, HINTERNET hConnect)
{
BOOL bRet;
......@@ -853,6 +935,7 @@ START_TEST(ftp)
test_removedir(hFtp, hHttp);
test_renamefile(hFtp, hHttp);
test_command(hFtp, hHttp);
test_find_first_file(hFtp, hHttp);
test_get_current_dir(hFtp, hHttp);
InternetCloseHandle(hHttp);
......
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