Module: wine Branch: master Commit: 2d76bf2e69fc4b082030e0238f3aa17e273cf00e URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d76bf2e69fc4b082030e0238f...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Mar 3 12:38:39 2010 +0300
shlwapi/tests: Some tests for PathGetDriveNumber.
---
dlls/shlwapi/tests/path.c | 106 ++++++++++++++++++++++++++++++-------------- 1 files changed, 72 insertions(+), 34 deletions(-)
diff --git a/dlls/shlwapi/tests/path.c b/dlls/shlwapi/tests/path.c index e52502f..3e83a45 100644 --- a/dlls/shlwapi/tests/path.c +++ b/dlls/shlwapi/tests/path.c @@ -28,12 +28,12 @@ #include "shlwapi.h" #include "wininet.h"
-static HMODULE hShlwapi; static HRESULT (WINAPI *pPathIsValidCharA)(char,DWORD); static HRESULT (WINAPI *pPathIsValidCharW)(WCHAR,DWORD); static LPWSTR (WINAPI *pPathCombineW)(LPWSTR, LPCWSTR, LPCWSTR); static HRESULT (WINAPI *pPathCreateFromUrlA)(LPCSTR, LPSTR, LPDWORD, DWORD); static HRESULT (WINAPI *pPathCreateFromUrlW)(LPCWSTR, LPWSTR, LPDWORD, DWORD); +static BOOL (WINAPI *pPathAppendA)(LPSTR, LPCSTR);
/* ################ */
@@ -300,6 +300,15 @@ static void test_PathIsValidCharA(void) BOOL ret; unsigned int c;
+ /* For whatever reason, PathIsValidCharA and PathAppendA share the same + * ordinal number in some native versions. Check this to prevent a crash. + */ + if (!pPathIsValidCharA || pPathIsValidCharA == (void*)pPathAppendA) + { + win_skip("PathIsValidCharA isn't available\n"); + return; + } + for (c = 0; c < 0x7f; c++) { ret = pPathIsValidCharA( c, ~0U ); @@ -318,6 +327,12 @@ static void test_PathIsValidCharW(void) BOOL ret; unsigned int c;
+ if (!pPathIsValidCharW) + { + win_skip("PathIsValidCharW isn't available\n"); + return; + } + for (c = 0; c < 0x7f; c++) { ret = pPathIsValidCharW( c, ~0U ); @@ -392,7 +407,13 @@ static void test_PathCombineW(void) WCHAR wbuf[MAX_PATH+1], wstr1[MAX_PATH] = {'C',':','\',0}, wstr2[MAX_PATH]; static const WCHAR expout[] = {'C',':','\','A','A',0}; int i; - + + if (!pPathCombineW) + { + win_skip("PathCombineW isn't available\n"); + return; + } + wszString2 = HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR));
/* NULL test */ @@ -1312,43 +1333,60 @@ static void test_PathUnquoteSpaces(void) } }
+static void test_PathGetDriveNumber(void) +{ + static const CHAR test1A[] = "a:\test.file"; + static const CHAR test2A[] = "file:////b:\test.file"; + static const CHAR test3A[] = "file:///c:\test.file"; + static const CHAR test4A[] = "file:\\c:\test.file"; + int ret; + + SetLastError(0xdeadbeef); + ret = PathGetDriveNumberA(NULL); + ok(ret == -1, "got %d\n", ret); + ok(GetLastError() == 0xdeadbeef, "got %d\n", GetLastError()); + + ret = PathGetDriveNumberA(test1A); + ok(ret == 0, "got %d\n", ret); + ret = PathGetDriveNumberA(test2A); + ok(ret == -1, "got %d\n", ret); + ret = PathGetDriveNumberA(test3A); + ok(ret == -1, "got %d\n", ret); + ret = PathGetDriveNumberA(test4A); + ok(ret == -1, "got %d\n", ret); +} + /* ################ */
START_TEST(path) { - hShlwapi = GetModuleHandleA("shlwapi.dll"); - pPathCreateFromUrlA = (void*)GetProcAddress(hShlwapi, "PathCreateFromUrlA"); - pPathCreateFromUrlW = (void*)GetProcAddress(hShlwapi, "PathCreateFromUrlW"); - - test_PathSearchAndQualify(); - test_PathCreateFromUrl(); - test_PathIsUrl(); - - test_PathAddBackslash(); - test_PathMakePretty(); - test_PathMatchSpec(); - - /* For whatever reason, PathIsValidCharA and PathAppendA share the same - * ordinal number in some native versions. Check this to prevent a crash. - */ - pPathIsValidCharA = (void*)GetProcAddress(hShlwapi, (LPSTR)455); - if (pPathIsValidCharA && pPathIsValidCharA != (void*)GetProcAddress(hShlwapi, "PathAppendA")) - { - test_PathIsValidCharA(); + HMODULE hShlwapi = GetModuleHandleA("shlwapi.dll");
- pPathIsValidCharW = (void*)GetProcAddress(hShlwapi, (LPSTR)456); - if (pPathIsValidCharW) test_PathIsValidCharW(); - } + pPathCreateFromUrlA = (void*)GetProcAddress(hShlwapi, "PathCreateFromUrlA"); + pPathCreateFromUrlW = (void*)GetProcAddress(hShlwapi, "PathCreateFromUrlW"); + pPathCombineW = (void*)GetProcAddress(hShlwapi, "PathCombineW"); + pPathIsValidCharA = (void*)GetProcAddress(hShlwapi, (LPSTR)455); + pPathIsValidCharW = (void*)GetProcAddress(hShlwapi, (LPSTR)456); + pPathAppendA = (void*)GetProcAddress(hShlwapi, "PathAppendA");
- pPathCombineW = (void*)GetProcAddress(hShlwapi, "PathCombineW"); - if (pPathCombineW) - test_PathCombineW(); + test_PathSearchAndQualify(); + test_PathCreateFromUrl(); + test_PathIsUrl(); + + test_PathAddBackslash(); + test_PathMakePretty(); + test_PathMatchSpec();
- test_PathCombineA(); - test_PathAppendA(); - test_PathCanonicalizeA(); - test_PathFindExtensionA(); - test_PathBuildRootA(); - test_PathCommonPrefixA(); - test_PathUnquoteSpaces(); + test_PathIsValidCharA(); + test_PathIsValidCharW(); + + test_PathCombineW(); + test_PathCombineA(); + test_PathAppendA(); + test_PathCanonicalizeA(); + test_PathFindExtensionA(); + test_PathBuildRootA(); + test_PathCommonPrefixA(); + test_PathUnquoteSpaces(); + test_PathGetDriveNumber(); }