wininet [1/2]: Add test for FtpGetCurrentDirectoryA

Zac Brown zac at zacbrown.org
Wed Nov 28 22:52:26 CST 2007


Hi,

Changelog:
* Add test for FtpGetCurrentDirectoryA in wininet/tests/ftp.c




diff --git a/dlls/wininet/tests/ftp.c b/dlls/wininet/tests/ftp.c
index 6d03fb8..d6bb7af 100644
--- a/dlls/wininet/tests/ftp.c
+++ b/dlls/wininet/tests/ftp.c
@@ -691,6 +691,67 @@ static void test_command(HINTERNET hFtp, HINTERNET hConnect)
     }
 }

+static void test_get_current_dir(HINTERNET hFtp, HINTERNET hConnect)
+{
+    BOOL    bRet;
+    LPSTR  testDir = "/pub";
+    LPSTR 	lpszCurrentDirectory[MAX_PATH];
+    DWORD 	dwCurrentDirectory = MAX_PATH;
+
+    /* change directories to get a more interesting pwd */
+    bRet = FtpCommandA(hFtp, FALSE, FTP_TRANSFER_TYPE_ASCII, "CWD pub/", 0, NULL);
+    if(bRet == FALSE)
+    {
+        trace("Failed to change directories in test_get_current_dir(HINTERNET hFtp).\n");
+        return;
+    }
+
+    /* test with all NULL arguments */
+    SetLastError(0xdeadbeef);
+    bRet = FtpGetCurrentDirectoryA( NULL, NULL, 0 );
+    ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+    ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got:
%d\n", GetLastError());
+
+	/* test with NULL parameters instead of expected LPSTR/LPDWORD */
+    SetLastError(0xdeadbeef);
+    bRet = FtpGetCurrentDirectoryA( hFtp, NULL, 0 );
+    ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+    ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got: %d\n", GetLastError());
+
+	/* test with no valid handle and valid parameters */
+    SetLastError(0xdeadbeef);
+    bRet = FtpGetCurrentDirectoryA( NULL, lpszCurrentDirectory, &dwCurrentDirectory );
+    ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+    ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got:
%d\n", GetLastError());
+
+	/* test with invalid dwCurrentDirectory and all other parameters correct */
+	SetLastError(0xdeadbeef);
+	bRet = FtpGetCurrentDirectoryA( hFtp, lpszCurrentDirectory, 0 );
+	ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+	ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got: %d\n", GetLastError());
+	
+	/* test with invalid lpszCurrentDirectory and all other parameters correct */
+	SetLastError(0xdeadbeef);
+	bRet = FtpGetCurrentDirectoryA( hFtp, NULL, &dwCurrentDirectory );
+	ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+	ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got: %d\n", GetLastError());
+
+    /* test for the current directory with legitimate values*/
+    SetLastError(0xdeadbeef);
+    bRet = FtpGetCurrentDirectoryA( hFtp, lpszCurrentDirectory, &dwCurrentDirectory );
+    ok ( bRet == TRUE, "Expected FtpGetCurrentDirectoryA to pass\n" );
+    ok ( lstrcmpA((LPCSTR)lpszCurrentDirectory, (LPCSTR)testDir), "Expected returned value \"%s\" to match \"%s\" \n",
(char*)lpszCurrentDirectory, (char*)testDir);
+    ok ( GetLastError() == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got: %d\n", GetLastError());
+
+	/* test to show it checks the handle type */
+	SetLastError(0xdeadbeef);
+	bRet = FtpGetCurrentDirectoryA( hConnect, lpszCurrentDirectory, &dwCurrentDirectory );
+	ok ( bRet == FALSE, "Expected FtpGetCurrentDirectoryA to fail\n" );
+	ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE,
+		"Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got: %d\n", GetLastError());
+
+}
+
 START_TEST(ftp)
 {
     HANDLE hInternet, hFtp, hHttp;
@@ -733,6 +794,7 @@ START_TEST(ftp)
     test_removedir(hFtp, hHttp);
     test_renamefile(hFtp, hHttp);
     test_command(hFtp, hHttp);
+    test_get_current_dir(hFtp, hHttp);

     InternetCloseHandle(hHttp);
     InternetCloseHandle(hFtp);
-- 
1.5.2.5



More information about the wine-patches mailing list