[PATCH v2 2/3] ntdll/tests: Use wide character string literals in test_RtlDosPathNameToNtPathName_U().

Zebediah Figura z.figura12 at gmail.com
Thu Mar 5 11:14:09 CST 2020


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 dlls/ntdll/tests/path.c | 199 ++++++++++++++++++++--------------------
 1 file changed, 98 insertions(+), 101 deletions(-)

diff --git a/dlls/ntdll/tests/path.c b/dlls/ntdll/tests/path.c
index 2dc1ccd9910..2f082b9cdd6 100644
--- a/dlls/ntdll/tests/path.c
+++ b/dlls/ntdll/tests/path.c
@@ -395,10 +395,9 @@ static void test_RtlGetFullPathName_U(void)
 
 static void test_RtlDosPathNameToNtPathName_U(void)
 {
-    static const WCHAR broken_global_prefix[] = {'\\','?','?','\\','C',':','\\','?','?'};
+    static const WCHAR broken_global_prefix[] = L"\\??\\C:\\??";
 
     char curdir[MAX_PATH];
-    WCHAR path[MAX_PATH];
     UNICODE_STRING nameW;
     WCHAR *file_part;
     NTSTATUS status;
@@ -407,96 +406,96 @@ static void test_RtlDosPathNameToNtPathName_U(void)
 
     static const struct
     {
-        const char *dos;
-        const char *nt;
+        const WCHAR *dos;
+        const WCHAR *nt;
         int file_offset;    /* offset to file part */
     }
     tests[] =
     {
-        { "c:\\",           "\\??\\c:\\",                  -1 },
-        { "c:/",            "\\??\\c:\\",                  -1 },
-        { "c:/foo",         "\\??\\c:\\foo",                7 },
-        { "c:/foo.",        "\\??\\c:\\foo",                7 },
-        { "c:/foo/",        "\\??\\c:\\foo\\",             -1 },
-        { "c:/foo//",       "\\??\\c:\\foo\\",             -1 },
-        { "C:/foo",         "\\??\\C:\\foo",                7 },
-        { "C:/foo/bar",     "\\??\\C:\\foo\\bar",          11 },
-        { "C:/foo/bar",     "\\??\\C:\\foo\\bar",          11 },
-        { "c:.",            "\\??\\C:\\windows",            7 },
-        { "c:foo",          "\\??\\C:\\windows\\foo",      15 },
-        { "c:foo/bar",      "\\??\\C:\\windows\\foo\\bar", 19 },
-        { "c:./foo",        "\\??\\C:\\windows\\foo",      15 },
-        { "c:/./foo",       "\\??\\c:\\foo",                7 },
-        { "c:/foo/.",       "\\??\\c:\\foo",                7 },
-        { "c:/foo/./bar",   "\\??\\c:\\foo\\bar",          11 },
-        { "c:/foo/../bar",  "\\??\\c:\\bar",                7 },
-        { "\\foo",          "\\??\\C:\\foo",                7 },
-        { "foo",            "\\??\\C:\\windows\\foo",      15 },
-        { ".",              "\\??\\C:\\windows",            7 },
-        { "./",             "\\??\\C:\\windows\\",         -1 },
-        { "..",             "\\??\\C:\\",                  -1 },
-        { "...",            "\\??\\C:\\windows\\",         -1 },
-        { "./foo",          "\\??\\C:\\windows\\foo",      15 },
-        { "foo/..",         "\\??\\C:\\windows",            7 },
-        { "AUX" ,           "\\??\\AUX",                   -1 },
-        { "COM1" ,          "\\??\\COM1",                  -1 },
-        { "?<>*\"|:",       "\\??\\C:\\windows\\?<>*\"|:", 15 },
-
-        { "\\\\foo",        "\\??\\UNC\\foo",              -1 },
-        { "//foo",          "\\??\\UNC\\foo",              -1 },
-        { "\\/foo",         "\\??\\UNC\\foo",              -1 },
-        { "//",             "\\??\\UNC\\",                 -1 },
-        { "//foo/",         "\\??\\UNC\\foo\\",            -1 },
-
-        { "//.",            "\\??\\",                      -1 },
-        { "//./",           "\\??\\",                      -1 },
-        { "//.//",          "\\??\\",                      -1 },
-        { "//./foo",        "\\??\\foo",                    4 },
-        { "//./foo/",       "\\??\\foo\\",                 -1 },
-        { "//./foo/bar",    "\\??\\foo\\bar",               8 },
-        { "//./foo/.",      "\\??\\foo",                    4 },
-        { "//./foo/..",     "\\??\\",                      -1 },
-
-        { "//?",            "\\??\\",                      -1 },
-        { "//?/",           "\\??\\",                      -1 },
-        { "//?//",          "\\??\\",                      -1 },
-        { "//?/foo",        "\\??\\foo",                    4 },
-        { "//?/foo/",       "\\??\\foo\\",                 -1 },
-        { "//?/foo/bar",    "\\??\\foo\\bar",               8 },
-        { "//?/foo/.",      "\\??\\foo",                    4 },
-        { "//?/foo/..",     "\\??\\",                      -1 },
-
-        { "\\\\?",           "\\??\\",                     -1 },
-        { "\\\\?\\",         "\\??\\",                     -1 },
-
-        { "\\\\?\\/",        "\\??\\/",                     4 },
-        { "\\\\?\\foo",      "\\??\\foo",                   4 },
-        { "\\\\?\\foo/",     "\\??\\foo/",                  4 },
-        { "\\\\?\\foo/bar",  "\\??\\foo/bar",               4 },
-        { "\\\\?\\foo/.",    "\\??\\foo/.",                 4 },
-        { "\\\\?\\foo/..",   "\\??\\foo/..",                4 },
-        { "\\\\?\\\\",       "\\??\\\\",                   -1 },
-        { "\\\\?\\\\\\",     "\\??\\\\\\",                 -1 },
-        { "\\\\?\\foo\\",    "\\??\\foo\\",                -1 },
-        { "\\\\?\\foo\\bar", "\\??\\foo\\bar",              8 },
-        { "\\\\?\\foo\\.",   "\\??\\foo\\.",                8 },
-        { "\\\\?\\foo\\..",  "\\??\\foo\\..",               8 },
-
-        { "\\??",           "\\??\\C:\\??",                 7 },
-        { "\\??\\",         "\\??\\C:\\??\\",              -1 },
-
-        { "\\??\\/",        "\\??\\/",                      4 },
-        { "\\??\\foo",      "\\??\\foo",                    4 },
-        { "\\??\\foo/",     "\\??\\foo/",                   4 },
-        { "\\??\\foo/bar",  "\\??\\foo/bar",                4 },
-        { "\\??\\foo/.",    "\\??\\foo/.",                  4 },
-        { "\\??\\foo/..",   "\\??\\foo/..",                 4 },
-        { "\\??\\\\",       "\\??\\\\",                    -1 },
-        { "\\??\\\\\\",     "\\??\\\\\\",                  -1 },
-        { "\\??\\foo\\",    "\\??\\foo\\",                 -1 },
-        { "\\??\\foo\\bar", "\\??\\foo\\bar",               8 },
-        { "\\??\\foo\\.",   "\\??\\foo\\.",                 8 },
-        { "\\??\\foo\\..",  "\\??\\foo\\..",                8 },
+        {L"c:\\",           L"\\??\\c:\\",                  -1},
+        {L"c:/",            L"\\??\\c:\\",                  -1},
+        {L"c:/foo",         L"\\??\\c:\\foo",                7},
+        {L"c:/foo.",        L"\\??\\c:\\foo",                7},
+        {L"c:/foo/",        L"\\??\\c:\\foo\\",             -1},
+        {L"c:/foo//",       L"\\??\\c:\\foo\\",             -1},
+        {L"C:/foo",         L"\\??\\C:\\foo",                7},
+        {L"C:/foo/bar",     L"\\??\\C:\\foo\\bar",          11},
+        {L"C:/foo/bar",     L"\\??\\C:\\foo\\bar",          11},
+        {L"c:.",            L"\\??\\C:\\windows",            7},
+        {L"c:foo",          L"\\??\\C:\\windows\\foo",      15},
+        {L"c:foo/bar",      L"\\??\\C:\\windows\\foo\\bar", 19},
+        {L"c:./foo",        L"\\??\\C:\\windows\\foo",      15},
+        {L"c:/./foo",       L"\\??\\c:\\foo",                7},
+        {L"c:/foo/.",       L"\\??\\c:\\foo",                7},
+        {L"c:/foo/./bar",   L"\\??\\c:\\foo\\bar",          11},
+        {L"c:/foo/../bar",  L"\\??\\c:\\bar",                7},
+        {L"\\foo",          L"\\??\\C:\\foo",                7},
+        {L"foo",            L"\\??\\C:\\windows\\foo",      15},
+        {L".",              L"\\??\\C:\\windows",            7},
+        {L"./",             L"\\??\\C:\\windows\\",         -1},
+        {L"..",             L"\\??\\C:\\",                  -1},
+        {L"...",            L"\\??\\C:\\windows\\",         -1},
+        {L"./foo",          L"\\??\\C:\\windows\\foo",      15},
+        {L"foo/..",         L"\\??\\C:\\windows",            7},
+        {L"AUX" ,           L"\\??\\AUX",                   -1},
+        {L"COM1" ,          L"\\??\\COM1",                  -1},
+        {L"?<>*\"|:",       L"\\??\\C:\\windows\\?<>*\"|:", 15},
+
+        {L"\\\\foo",        L"\\??\\UNC\\foo",              -1},
+        {L"//foo",          L"\\??\\UNC\\foo",              -1},
+        {L"\\/foo",         L"\\??\\UNC\\foo",              -1},
+        {L"//",             L"\\??\\UNC\\",                 -1},
+        {L"//foo/",         L"\\??\\UNC\\foo\\",            -1},
+
+        {L"//.",            L"\\??\\",                      -1},
+        {L"//./",           L"\\??\\",                      -1},
+        {L"//.//",          L"\\??\\",                      -1},
+        {L"//./foo",        L"\\??\\foo",                    4},
+        {L"//./foo/",       L"\\??\\foo\\",                 -1},
+        {L"//./foo/bar",    L"\\??\\foo\\bar",               8},
+        {L"//./foo/.",      L"\\??\\foo",                    4},
+        {L"//./foo/..",     L"\\??\\",                      -1},
+
+        {L"//?",            L"\\??\\",                      -1},
+        {L"//?/",           L"\\??\\",                      -1},
+        {L"//?//",          L"\\??\\",                      -1},
+        {L"//?/foo",        L"\\??\\foo",                    4},
+        {L"//?/foo/",       L"\\??\\foo\\",                 -1},
+        {L"//?/foo/bar",    L"\\??\\foo\\bar",               8},
+        {L"//?/foo/.",      L"\\??\\foo",                    4},
+        {L"//?/foo/..",     L"\\??\\",                      -1},
+
+        {L"\\\\?",          L"\\??\\",                      -1},
+        {L"\\\\?\\",        L"\\??\\",                      -1},
+
+        {L"\\\\?\\/",       L"\\??\\/",                      4},
+        {L"\\\\?\\foo",     L"\\??\\foo",                    4},
+        {L"\\\\?\\foo/",    L"\\??\\foo/",                   4},
+        {L"\\\\?\\foo/bar", L"\\??\\foo/bar",                4},
+        {L"\\\\?\\foo/.",   L"\\??\\foo/.",                  4},
+        {L"\\\\?\\foo/..",  L"\\??\\foo/..",                 4},
+        {L"\\\\?\\\\",      L"\\??\\\\",                    -1},
+        {L"\\\\?\\\\\\",    L"\\??\\\\\\",                  -1},
+        {L"\\\\?\\foo\\",   L"\\??\\foo\\",                 -1},
+        {L"\\\\?\\foo\\bar",L"\\??\\foo\\bar",               8},
+        {L"\\\\?\\foo\\.",  L"\\??\\foo\\.",                 8},
+        {L"\\\\?\\foo\\..", L"\\??\\foo\\..",                8},
+
+        {L"\\??",           L"\\??\\C:\\??",                 7},
+        {L"\\??\\",         L"\\??\\C:\\??\\",              -1},
+
+        {L"\\??\\/",        L"\\??\\/",                      4},
+        {L"\\??\\foo",      L"\\??\\foo",                    4},
+        {L"\\??\\foo/",     L"\\??\\foo/",                   4},
+        {L"\\??\\foo/bar",  L"\\??\\foo/bar",                4},
+        {L"\\??\\foo/.",    L"\\??\\foo/.",                  4},
+        {L"\\??\\foo/..",   L"\\??\\foo/..",                 4},
+        {L"\\??\\\\",       L"\\??\\\\",                    -1},
+        {L"\\??\\\\\\",     L"\\??\\\\\\",                  -1},
+        {L"\\??\\foo\\",    L"\\??\\foo\\",                 -1},
+        {L"\\??\\foo\\bar", L"\\??\\foo\\bar",               8},
+        {L"\\??\\foo\\.",   L"\\??\\foo\\.",                 8},
+        {L"\\??\\foo\\..",  L"\\??\\foo\\..",                8},
     };
 
     GetCurrentDirectoryA(sizeof(curdir), curdir);
@@ -528,35 +527,33 @@ static void test_RtlDosPathNameToNtPathName_U(void)
 
     for (i = 0; i < ARRAY_SIZE(tests); ++i)
     {
-        MultiByteToWideChar(CP_ACP, 0, tests[i].dos, -1, path, ARRAY_SIZE(path));
-        ret = pRtlDosPathNameToNtPathName_U(path, &nameW, &file_part, NULL);
-        ok(ret == TRUE, "%s: Got %d.\n", tests[i].dos, ret);
+        ret = pRtlDosPathNameToNtPathName_U(tests[i].dos, &nameW, &file_part, NULL);
+        ok(ret == TRUE, "%s: Got %d.\n", debugstr_w(tests[i].dos), ret);
 
         if (pRtlDosPathNameToNtPathName_U_WithStatus)
         {
             RtlFreeUnicodeString(&nameW);
-            status = pRtlDosPathNameToNtPathName_U_WithStatus(path, &nameW, &file_part, NULL);
-            ok(status == STATUS_SUCCESS, "%s: Got status %#x.\n", tests[i].dos, status);
+            status = pRtlDosPathNameToNtPathName_U_WithStatus(tests[i].dos, &nameW, &file_part, NULL);
+            ok(status == STATUS_SUCCESS, "%s: Got status %#x.\n", debugstr_w(tests[i].dos), status);
         }
 
-        if (!strncmp(tests[i].dos, "\\??\\", 4) && tests[i].dos[4] &&
-            broken(!memcmp(nameW.Buffer, broken_global_prefix, sizeof(broken_global_prefix))))
+        if (!wcsncmp(tests[i].dos, L"\\??\\", 4) && tests[i].dos[4] &&
+            broken(!wcsncmp(nameW.Buffer, broken_global_prefix, wcslen(broken_global_prefix))))
         {
             /* Windows version prior to 2003 don't interpret the \??\ prefix */
             continue;
         }
 
-        MultiByteToWideChar(CP_ACP, 0, tests[i].nt, -1, path, ARRAY_SIZE(path));
-        ok(!lstrcmpW(nameW.Buffer, path), "%s: Expected %s, got %s.\n",
-            tests[i].dos, tests[i].nt, wine_dbgstr_w(nameW.Buffer));
+        ok(!wcscmp(nameW.Buffer, tests[i].nt), "%s: Expected %s, got %s.\n",
+            debugstr_w(tests[i].dos), debugstr_w(tests[i].nt), debugstr_w(nameW.Buffer));
 
         if (tests[i].file_offset > 0)
             ok(file_part == nameW.Buffer + tests[i].file_offset,
-                "%s: Expected file part %s, got %s.\n", tests[i].dos,
-                wine_dbgstr_w(nameW.Buffer + tests[i].file_offset), wine_dbgstr_w(file_part));
+                "%s: Expected file part %s, got %s.\n", debugstr_w(tests[i].dos),
+                debugstr_w(nameW.Buffer + tests[i].file_offset), debugstr_w(file_part));
         else
             ok(file_part == NULL, "%s: Expected NULL file part, got %s.\n",
-                tests[i].dos, wine_dbgstr_w(file_part));
+                debugstr_w(tests[i].dos), debugstr_w(file_part));
 
         RtlFreeUnicodeString(&nameW);
     }
-- 
2.25.1




More information about the wine-devel mailing list