Some additional path unit testing
Duane Clark
dclark at akamail.com
Sun Jun 30 20:47:29 CDT 2002
The function GetFullPathNameA supports various combinations of input
names with drive letters, so test for some of them.
Also, Xilinx tools generate path names with a mix of Unix and DOS path
formats, which Windows handles fine, so test for them too.
Changelog: Add drive letter and Unix path tests of GetFullPathNameA.
-------------- next part --------------
Index: dlls/kernel/tests/path.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/tests/path.c,v
retrieving revision 1.5
diff -u -r1.5 path.c
--- dlls/kernel/tests/path.c 22 Jun 2002 00:08:10 -0000 1.5
+++ dlls/kernel/tests/path.c 1 Jul 2002 01:35:04 -0000
@@ -342,8 +342,11 @@
"GetTempPathA returned a path that did not end in '\\'");
lstrcpyA(tmpstr,"aaaaaaaa");
len1=GetTempPathA(len,tmpstr);
- ok(len1==len+1,
- "GetTempPathA should return string length %ld instead of %ld",len+1,len1);
+ todo_wine {
+ ok(len1==len+1,
+ "GetTempPathA should return string length %ld \"%s\" instead of %ld \"%s\"",
+ len+1, tmppath ,len1, tmpstr);
+ }
if(WIN2K_PLUS(version)) {
/* in Win2k, the path won't be modified, but in win98, wine it is */
todo_wine {
@@ -483,6 +486,7 @@
CHAR curdir_short[MAX_PATH],
longdir_short[MAX_PATH];
CHAR tmpstr[MAX_PATH],tmpstr1[MAX_PATH];
+ LPSTR strptr; /*ptr to the filename portion of the path */
DWORD len;
INT i;
CHAR dir[MAX_PATH],eight[MAX_PATH],three[MAX_PATH];
@@ -656,6 +660,59 @@
"GetLongPathA returned %ld and not 'ERROR_FILE_NOT_FOUND'",
passfail.longerror);
}
+/* Test GetFullPathNameA with drive letters */
+ sprintf(tmpstr,"C:\\%s\\%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+/* Without a leading slash, insert the current directory if on the current drive */
+ sprintf(tmpstr,"C:%s\\%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ sprintf(tmpstr,"%s\\%s\\%s",curdir,SHORTDIR,SHORTFILE);
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+/* Otherwise insert the missing leading slash */
+ sprintf(tmpstr,"D:%s\\%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ sprintf(tmpstr,"D:\\%s\\%s",SHORTDIR,SHORTFILE);
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+/* Xilinx tools like to mix Unix and DOS formats, which Windows handles fine.
+ So test for them. */
+ sprintf(tmpstr,"C:/%s\\%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ sprintf(tmpstr,"C:\\%s\\%s",SHORTDIR,SHORTFILE);
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+/**/
+ sprintf(tmpstr,"C:%s/%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ sprintf(tmpstr,"%s\\%s\\%s",curdir,SHORTDIR,SHORTFILE);
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+/* Windows will insert a drive letter in front of an absolute UNIX path, but
+ Wine probably shouldn't. */
+ sprintf(tmpstr,"/%s/%s",SHORTDIR,SHORTFILE);
+ ok(GetFullPathNameA(tmpstr,MAX_PATH,tmpstr1,&strptr),"GetFullPathNameA failed");
+ todo_wine {
+ sprintf(tmpstr,"C:\\%s\\%s",SHORTDIR,SHORTFILE);
+ ok(lstrcmpiA(tmpstr,tmpstr1)==0,
+ "GetLongPathNameA returned '%s' instead of '%s'",tmpstr1,tmpstr);
+ }
+/* This passes in Wine because it still contains the pointer from the previous test */
+ ok(lstrcmpiA(SHORTFILE,strptr)==0,
+ "GetLongPathNameA returned part '%s' instead of '%s'",strptr,SHORTFILE);
+
/* Now try some relative paths */
ok(GetShortPathNameA(LONGDIR,tmpstr,MAX_PATH),"GetShortPathNameA failed");
test_SplitShortPathA(tmpstr,dir,eight,three);
More information about the wine-patches
mailing list