Sebastian Lackner : kernel32/tests: Add a lot of picky GetVolumePathName tests.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jun 23 09:17:15 CDT 2015


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

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Tue Sep  2 05:23:37 2014 +0200

kernel32/tests: Add a lot of picky GetVolumePathName tests.

---

 dlls/kernel32/tests/volume.c | 95 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)

diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index 4349ec4..b7369a6 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -683,6 +683,94 @@ static void test_GetVolumePathNameA(void)
             "\\??\\ReallyBogus", "%CurrentDrive%\\", sizeof(volume_path),
             NO_ERROR, NO_ERROR
         },
+        { /* test 20 */
+            "C:", "C:", 2,
+            ERROR_FILENAME_EXCED_RANGE, NO_ERROR
+        },
+        { /* test 21 */
+            "C:", "C:", 3,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 22 */
+            "C:\\", "C:", 2,
+            ERROR_FILENAME_EXCED_RANGE, NO_ERROR
+        },
+        { /* test 23 */
+            "C:\\", "C:", 3,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 24 */
+            "C::", "C:", 2,
+            ERROR_FILENAME_EXCED_RANGE, NO_ERROR
+        },
+        { /* test 25 */
+            "C::", "C:", 3,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 26 */
+            "C::", "C:\\", 4,
+            NO_ERROR, ERROR_MORE_DATA
+        },
+        { /* test 27 */
+            "C:\\windows\\system32\\AnInvalidFolder", "C:", 3,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 28 */
+            "\\\\?\\C:\\AnInvalidFolder", "\\\\?\\C:", 3,
+            ERROR_FILENAME_EXCED_RANGE, NO_ERROR
+        },
+        { /* test 29 */
+            "\\\\?\\C:\\AnInvalidFolder", "\\\\?\\C:", 6,
+            ERROR_FILENAME_EXCED_RANGE, NO_ERROR
+        },
+        { /* test 30 */
+            "\\\\?\\C:\\AnInvalidFolder", "\\\\?\\C:", 7,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 31 */
+            "\\\\?\\c:\\AnInvalidFolder", "\\\\?\\c:", 7,
+            NO_ERROR, ERROR_FILENAME_EXCED_RANGE
+        },
+        { /* test 32 */
+            "C:/", "C:\\", 4,
+            NO_ERROR, ERROR_MORE_DATA
+        },
+        { /* test 33 */
+            "M:/", "", 4,
+            ERROR_FILE_NOT_FOUND, ERROR_MORE_DATA
+        },
+        { /* test 34 */
+            "C:ABC:DEF:\\AnInvalidFolder", "C:\\", 4,
+            NO_ERROR, ERROR_MORE_DATA
+        },
+        { /* test 35 */
+            "?:ABC:DEF:\\AnInvalidFolder", "?:\\" /* win2k, winxp */, sizeof(volume_path),
+            ERROR_FILE_NOT_FOUND, NO_ERROR
+        },
+        { /* test 36 */
+            "relative/path", "%CurrentDrive%\\", sizeof(volume_path),
+            NO_ERROR, NO_ERROR
+        },
+        { /* test 37 */
+            "/unix-style/absolute/path", "%CurrentDrive%\\", sizeof(volume_path),
+            NO_ERROR, NO_ERROR
+        },
+        { /* test 38 */
+            "\\??\\C:\\NonExistent", "%CurrentDrive%\\", sizeof(volume_path),
+            NO_ERROR, NO_ERROR
+        },
+        { /* test 39 */
+            "\\??\\M:\\NonExistent", "%CurrentDrive%\\", sizeof(volume_path),
+            NO_ERROR, NO_ERROR
+        },
+        { /* test 40 */
+            "somefile:def", "%CurrentDrive%\\", sizeof(volume_path),
+            NO_ERROR, NO_ERROR
+        },
+        { /* test 41 */
+            "s:omefile", "S:\\" /* win2k, winxp */, sizeof(volume_path),
+            ERROR_FILE_NOT_FOUND, NO_ERROR
+        },
     };
     BOOL ret, success;
     DWORD error;
@@ -709,6 +797,9 @@ static void test_GetVolumePathNameA(void)
         BOOL expected_ret = test_paths[i].error == NO_ERROR ? TRUE : FALSE;
 
         volume_path[0] = 0;
+        if (test_paths[i].path_len < sizeof(volume_path))
+            volume_path[ test_paths[i].path_len ] = 0x11;
+
         SetLastError( 0xdeadbeef );
         ret = pGetVolumePathNameA( test_paths[i].file_name, output, test_paths[i].path_len );
         error = GetLastError();
@@ -734,6 +825,10 @@ static void test_GetVolumePathNameA(void)
             ok(success, "GetVolumePathName test %d unexpectedly returned error 0x%x (expected 0x%x).\n",
                         i, error, test_paths[i].error);
         }
+
+        if (test_paths[i].path_len < sizeof(volume_path))
+            ok(volume_path[ test_paths[i].path_len ] == 0x11,
+               "GetVolumePathName test %d corrupted byte after end of buffer.\n", i);
     }
 }
 




More information about the wine-cvs mailing list