|
@@ -0,0 +1,117 @@
|
|
|
|
+program filefunctest;
|
|
|
|
+
|
|
|
|
+{$IFDEF FPC}
|
|
|
|
+ {$mode objfpc}{$H+}
|
|
|
|
+{$ENDIF}
|
|
|
|
+
|
|
|
|
+uses
|
|
|
|
+ SysUtils;
|
|
|
|
+
|
|
|
|
+var
|
|
|
|
+ err : boolean;
|
|
|
|
+procedure TestFuncs(testidx:integer;const res,expected: string);
|
|
|
|
+begin
|
|
|
|
+ if res<>expected then
|
|
|
|
+ begin
|
|
|
|
+ Writeln('FAILURE at ',testidx:5,' got "',res,'", expected "',expected,'" ');
|
|
|
|
+ err:=true;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ // Default Unix
|
|
|
|
+ AllowDirectorySeparators:=['/','\'];
|
|
|
|
+ AllowDriveSeparators:=[];
|
|
|
|
+ TestFuncs(1,ExtractFilePath('./:'),'./');
|
|
|
|
+ TestFuncs(2,ExtractFileName('./:'),':');
|
|
|
|
+ TestFuncs(3,ExtractFileDrive('./:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(4,ExtractFilePath('C:/blah:blah'),'C:/');
|
|
|
|
+ TestFuncs(5,ExtractFileName('C:/blah:blah'),'blah:blah');
|
|
|
|
+ TestFuncs(6,ExtractFileDrive('C:/blah:blah'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(7,ExtractFilePath('./\'),'./\');
|
|
|
|
+ TestFuncs(8,ExtractFileName('./\'),'');
|
|
|
|
+ TestFuncs(9,ExtractFileDrive('./\'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(10,ExtractFilePath('./c:'),'./');
|
|
|
|
+ TestFuncs(11,ExtractFileName('./c:'),'c:');
|
|
|
|
+ TestFuncs(12,ExtractFileDrive('./c:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(13,ExtractFilePath('\\server\share\file'),'\\server\share\');
|
|
|
|
+ TestFuncs(14,ExtractFileName('\\server\share\file'),'file');
|
|
|
|
+ TestFuncs(15,ExtractFileDrive('\\server\share\file'),'\\server');
|
|
|
|
+
|
|
|
|
+ // Kylix compatibility mode
|
|
|
|
+ AllowDirectorySeparators:=['/'];
|
|
|
|
+ AllowDriveSeparators:=[];
|
|
|
|
+ TestFuncs(101,ExtractFilePath('./:'),'./');
|
|
|
|
+ TestFuncs(102,ExtractFileName('./:'),':');
|
|
|
|
+ TestFuncs(103,ExtractFileDrive('./:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(104,ExtractFilePath('C:/blah:blah'),'C:/');
|
|
|
|
+ TestFuncs(105,ExtractFileName('C:/blah:blah'),'blah:blah');
|
|
|
|
+ TestFuncs(106,ExtractFileDrive('C:/blah:blah'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(107,ExtractFilePath('./\'),'./');
|
|
|
|
+ TestFuncs(108,ExtractFileName('./\'),'\');
|
|
|
|
+ TestFuncs(109,ExtractFileDrive('./\'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(110,ExtractFilePath('./c:'),'./');
|
|
|
|
+ TestFuncs(111,ExtractFileName('./c:'),'c:');
|
|
|
|
+ TestFuncs(112,ExtractFileDrive('./c:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(113,ExtractFilePath('\\server\share\file'),'');
|
|
|
|
+ TestFuncs(114,ExtractFileName('\\server\share\file'),'\\server\share\file');
|
|
|
|
+ TestFuncs(115,ExtractFileDrive('\\server\share\file'),'');
|
|
|
|
+
|
|
|
|
+ // Default Windows/DOS/SO2
|
|
|
|
+ AllowDirectorySeparators:=['/','\'];
|
|
|
|
+ AllowDriveSeparators:=[':'];
|
|
|
|
+ TestFuncs(201,ExtractFilePath('./:'),'./:');
|
|
|
|
+ TestFuncs(202,ExtractFileName('./:'),'');
|
|
|
|
+ TestFuncs(203,ExtractFileDrive('./:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(204,ExtractFilePath('C:/blah:blah'),'C:/blah:');
|
|
|
|
+ TestFuncs(205,ExtractFileName('C:/blah:blah'),'blah');
|
|
|
|
+ TestFuncs(206,ExtractFileDrive('C:/blah:blah'),'C:');
|
|
|
|
+
|
|
|
|
+ TestFuncs(207,ExtractFilePath('./\'),'./\');
|
|
|
|
+ TestFuncs(208,ExtractFileName('./\'),'');
|
|
|
|
+ TestFuncs(209,ExtractFileDrive('./\'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(210,ExtractFilePath('./c:'),'./c:');
|
|
|
|
+ TestFuncs(211,ExtractFileName('./c:'),'');
|
|
|
|
+ TestFuncs(212,ExtractFileDrive('./c:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(213,ExtractFilePath('\\server\share\file'),'\\server\share\');
|
|
|
|
+ TestFuncs(214,ExtractFileName('\\server\share\file'),'file');
|
|
|
|
+ TestFuncs(215,ExtractFileDrive('\\server\share\file'),'\\server');
|
|
|
|
+
|
|
|
|
+ // Windows/DOS/SO2 Delphi Compatibility
|
|
|
|
+ AllowDirectorySeparators:=['\'];
|
|
|
|
+ AllowDriveSeparators:=[':'];
|
|
|
|
+ TestFuncs(301,ExtractFilePath('./:'),'./:');
|
|
|
|
+ TestFuncs(302,ExtractFileName('./:'),'');
|
|
|
|
+ TestFuncs(303,ExtractFileDrive('./:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(304,ExtractFilePath('C:/blah:blah'),'C:/blah:');
|
|
|
|
+ TestFuncs(305,ExtractFileName('C:/blah:blah'),'blah');
|
|
|
|
+ TestFuncs(306,ExtractFileDrive('C:/blah:blah'),'C:');
|
|
|
|
+
|
|
|
|
+ TestFuncs(307,ExtractFilePath('./\'),'./\');
|
|
|
|
+ TestFuncs(308,ExtractFileName('./\'),'');
|
|
|
|
+ TestFuncs(309,ExtractFileDrive('./\'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(310,ExtractFilePath('./c:'),'./c:');
|
|
|
|
+ TestFuncs(311,ExtractFileName('./c:'),'');
|
|
|
|
+ TestFuncs(312,ExtractFileDrive('./c:'),'');
|
|
|
|
+
|
|
|
|
+ TestFuncs(313,ExtractFilePath('\\server\share\file'),'\\server\share\');
|
|
|
|
+ TestFuncs(314,ExtractFileName('\\server\share\file'),'file');
|
|
|
|
+ TestFuncs(315,ExtractFileDrive('\\server\share\file'),'\\server');
|
|
|
|
+
|
|
|
|
+ if err then
|
|
|
|
+ halt(1);
|
|
|
|
+end.
|
|
|
|
+
|