mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-06 19:07:59 +02:00
162 lines
5.3 KiB
ObjectPascal
162 lines
5.3 KiB
ObjectPascal
program filefunctest;
|
|
|
|
{$IFDEF FPC}
|
|
{$mode objfpc}{$H+}
|
|
{$ENDIF}
|
|
|
|
uses
|
|
SysUtils;
|
|
|
|
|
|
type
|
|
tsingletestresults = array[1..5] of string;
|
|
tresults = array[1..5] of tsingletestresults;
|
|
const
|
|
{$ifdef unix}
|
|
results: tresults =
|
|
(
|
|
(
|
|
'ExtractFilePath on ''./:'' = ''./''',
|
|
'ExtractFileName on ''./:'' = '':''',
|
|
'ExtractFileDrive on ''./:'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./:'' = ''./:/''',
|
|
'ExcludeTrailingPathDelimiter on ''./:'' = ''./:'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''C:/blah:blah'' = ''C:/''',
|
|
'ExtractFileName on ''C:/blah:blah'' = ''blah:blah''',
|
|
'ExtractFileDrive on ''C:/blah:blah'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''C:/blah:blah'' = ''C:/blah:blah/''',
|
|
'ExcludeTrailingPathDelimiter on ''C:/blah:blah'' = ''C:/blah:blah'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''./\'' = ''./''',
|
|
'ExtractFileName on ''./\'' = ''\''',
|
|
'ExtractFileDrive on ''./\'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./\'' = ''./\/''',
|
|
'ExcludeTrailingPathDelimiter on ''./\'' = ''./\'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''./c:'' = ''./''',
|
|
'ExtractFileName on ''./c:'' = ''c:''',
|
|
'ExtractFileDrive on ''./c:'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./c:'' = ''./c:/''',
|
|
'ExcludeTrailingPathDelimiter on ''./c:'' = ''./c:'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''\\server\share\file'' = ''''',
|
|
'ExtractFileName on ''\\server\share\file'' = ''\\server\share\file''',
|
|
'ExtractFileDrive on ''\\server\share\file'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''\\server\share\file'' = ''\\server\share\file/''',
|
|
'ExcludeTrailingPathDelimiter on ''\\server\share\file'' = ''\\server\share\file'''
|
|
)
|
|
);
|
|
{$else}
|
|
results: tresults =
|
|
(
|
|
(
|
|
'ExtractFilePath on ''./:'' = ''./:''',
|
|
'ExtractFileName on ''./:'' = ''''',
|
|
'ExtractFileDrive on ''./:'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./:'' = ''./:\''',
|
|
'ExcludeTrailingPathDelimiter on ''./:'' = ''./:'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''C:/blah:blah'' = ''C:/blah:''',
|
|
'ExtractFileName on ''C:/blah:blah'' = ''blah''',
|
|
'ExtractFileDrive on ''C:/blah:blah'' = ''C:''',
|
|
'IncludeTrailingPathDelimiter on ''C:/blah:blah'' = ''C:/blah:blah\''',
|
|
'ExcludeTrailingPathDelimiter on ''C:/blah:blah'' = ''C:/blah:blah'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''./\'' = ''./\''',
|
|
'ExtractFileName on ''./\'' = ''''',
|
|
'ExtractFileDrive on ''./\'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./\'' = ''./\''',
|
|
'ExcludeTrailingPathDelimiter on ''./\'' = ''./'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''./c:'' = ''./c:''',
|
|
'ExtractFileName on ''./c:'' = ''''',
|
|
'ExtractFileDrive on ''./c:'' = ''''',
|
|
'IncludeTrailingPathDelimiter on ''./c:'' = ''./c:\''',
|
|
'ExcludeTrailingPathDelimiter on ''./c:'' = ''./c:'''
|
|
),
|
|
|
|
(
|
|
'ExtractFilePath on ''\\server\share\file'' = ''\\server\share\''',
|
|
'ExtractFileName on ''\\server\share\file'' = ''file''',
|
|
'ExtractFileDrive on ''\\server\share\file'' = ''\\server\share''',
|
|
'IncludeTrailingPathDelimiter on ''\\server\share\file'' = ''\\server\share\file\''',
|
|
'ExcludeTrailingPathDelimiter on ''\\server\share\file'' = ''\\server\share\file'''
|
|
)
|
|
);
|
|
{$endif}
|
|
|
|
procedure TestFuncs(const strPath: string; const results: tsingletestresults);
|
|
begin
|
|
WriteLn(Format('ExtractFilePath on ''%s'' = ''%s''',
|
|
[strPath, ExtractFilePath(strPath)]));
|
|
WriteLn(Format('ExtractFileName on ''%s'' = ''%s''',
|
|
[strPath, ExtractFileName(strPath)]));
|
|
WriteLn(Format('ExtractFileDrive on ''%s'' = ''%s''',
|
|
[strPath, ExtractFileDrive(strPath)]));
|
|
WriteLn(Format('IncludeTrailingPathDelimiter on ''%s'' = ''%s''',
|
|
[strPath, IncludeTrailingPathDelimiter(strPath)]));
|
|
WriteLn(Format('ExcludeTrailingPathDelimiter on ''%s'' = ''%s''',
|
|
[strPath, ExcludeTrailingPathDelimiter(strPath)]));
|
|
|
|
if (Format('ExtractFilePath on ''%s'' = ''%s''',[strPath, ExtractFilePath(strPath)]) <> results[1]) then
|
|
begin
|
|
writeln('ExtractFilePath: ',ExtractFilePath(strPath));
|
|
halt(1);
|
|
end;
|
|
|
|
if (Format('ExtractFileName on ''%s'' = ''%s''',[strPath, ExtractFileName(strPath)]) <> results[2]) then
|
|
begin
|
|
writeln('ExtractFileName: ',ExtractFileName(strPath));
|
|
halt(2);
|
|
end;
|
|
|
|
if (Format('ExtractFileDrive on ''%s'' = ''%s''',[strPath, ExtractFileDrive(strPath)]) <> results[3]) then
|
|
begin
|
|
writeln('ExtractFileDrive: ',ExtractFileDrive(strPath));
|
|
halt(3);
|
|
end;
|
|
|
|
if (Format('IncludeTrailingPathDelimiter on ''%s'' = ''%s''',[strPath, IncludeTrailingPathDelimiter(strPath)]) <> results[4]) then
|
|
begin
|
|
writeln('IncludeTrailingPathDelimiter: ',IncludeTrailingPathDelimiter(strPath));
|
|
halt(4);
|
|
end;
|
|
|
|
if (Format('ExcludeTrailingPathDelimiter on ''%s'' = ''%s''',[strPath, ExcludeTrailingPathDelimiter(strPath)]) <> results[5]) then
|
|
begin
|
|
writeln('ExcludeTrailingPathDelimiter: ',ExcludeTrailingPathDelimiter(strPath));
|
|
halt(5);
|
|
end;
|
|
|
|
WriteLn;
|
|
end;
|
|
|
|
begin
|
|
{$ifdef unix}
|
|
{ make settings Kylix-compatible }
|
|
AllowDriveSeparators:=[];
|
|
AllowDirectorySeparators:=['/'];
|
|
{$endif}
|
|
TestFuncs('./:',results[1]);
|
|
TestFuncs('C:/blah:blah',results[2]);
|
|
TestFuncs('./\',results[3]);
|
|
TestFuncs('./c:',results[4]);
|
|
TestFuncs('\\server\share\file',results[5]);
|
|
writeln('ok');
|
|
end.
|