Nikolay Sivov : shlwapi/tests: Some tests for PathGetDriveNumber.
Alexandre Julliard
julliard at winehq.org
Wed Mar 3 11:15:45 CST 2010
Module: wine
Branch: master
Commit: 2d76bf2e69fc4b082030e0238f3aa17e273cf00e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d76bf2e69fc4b082030e0238f3aa17e273cf00e
Author: Nikolay Sivov <nsivov at 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();
}
More information about the wine-cvs
mailing list