Paul Vriens : wininet/ftp.c: Add tests to show the order of parameter checking.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 13 11:07:42 CST 2007


Module: wine
Branch: master
Commit: 00b7b29c3a18f864aa6130c72bed7274673fc339
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=00b7b29c3a18f864aa6130c72bed7274673fc339

Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date:   Mon Feb 12 10:55:13 2007 +0100

wininet/ftp.c: Add tests to show the order of parameter checking.

---

 dlls/wininet/tests/ftp.c |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/dlls/wininet/tests/ftp.c b/dlls/wininet/tests/ftp.c
index f0c59ba..ae33560 100644
--- a/dlls/wininet/tests/ftp.c
+++ b/dlls/wininet/tests/ftp.c
@@ -237,21 +237,29 @@ static void test_getfile(void)
     BOOL      bRet;
     HINTERNET hInternet, hFtp, hConnect;
 
-    /* Invalid internet handle, the other is a valid parameter */
+    /* The order of checking is:
+     *
+     *   All parameters except 'session handle' and 'condition flags'
+     *   Session handle
+     *   Session handle type
+     *   Condition flags
+     */
+
+    /* Test to show existence of local file is tested first (together with 'remote file') */
     SetLastError(0xdeadbeef);
-    bRet = FtpGetFileA(NULL, "welcome.msg", "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_UNKNOWN, 0);
+    bRet = FtpGetFileA(NULL, NULL, "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_UNKNOWN, 0);
     ok ( bRet == FALSE, "Expected FtpGetFileA to fail\n");
     todo_wine
-    ok ( GetLastError() == ERROR_INVALID_HANDLE,
-        "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError());
+    ok ( GetLastError() == ERROR_INVALID_PARAMETER,
+        "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
 
-    /* Test to show that FtpGetFileA checks the parameters before the handle */
+    /* Test to show session handle is checked before 'condition flags' */
     SetLastError(0xdeadbeef);
-    bRet = FtpGetFileA(NULL, NULL, NULL, FALSE, 0, 5, 0);
+    bRet = FtpGetFileA(NULL, "welcome.msg", "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, 5, 0);
     ok ( bRet == FALSE, "Expected FtpGetFileA to fail\n");
     todo_wine
-    ok ( GetLastError() == ERROR_INVALID_PARAMETER,
-        "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+    ok ( GetLastError() == ERROR_INVALID_HANDLE,
+        "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError());
 
     hInternet = InternetOpen(NULL, 0, NULL, NULL, 0);
     hFtp = InternetConnect(hInternet, "ftp.winehq.org", INTERNET_DEFAULT_FTP_PORT, "anonymous", "IEUser@", INTERNET_SERVICE_FTP, 0, 0);
@@ -378,7 +386,15 @@ static void test_getfile(void)
 
     hConnect = InternetConnect(hInternet, "www.winehq.org", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
 
-    /* One small test to show that handle type is checked before parameters */
+    /* Test to show existence of local file is tested before 'session handle type' */
+    SetLastError(0xdeadbeef);
+    bRet = FtpGetFileA(hConnect, NULL, "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_UNKNOWN, 0);
+    ok ( bRet == FALSE, "Expected FtpGetFileA to fail\n");
+    todo_wine
+    ok ( GetLastError() == ERROR_INVALID_PARAMETER,
+        "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+    /* Test to show that 'session handle type' is checked before 'condition flags' */
     SetLastError(0xdeadbeef);
     bRet = FtpGetFileA(hConnect, "welcome.msg", "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, 5, 0);
     ok ( bRet == FALSE, "Expected FtpGetFileA to fail\n");




More information about the wine-cvs mailing list