summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/units/sysutils/tfilename.pp
blob: 21dfd8b98bfbbb295b92947f737f9df29ae2a9ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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\share');

  // 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\share');

  // 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\share');

  if err then
    halt(1);
end.