tfilename.pp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. program filefunctest;
  2. {$IFDEF FPC}
  3. {$mode objfpc}{$H+}
  4. {$ENDIF}
  5. uses
  6. SysUtils;
  7. var
  8. err : boolean;
  9. procedure TestFuncs(testidx:integer;const res,expected: string);
  10. begin
  11. if res<>expected then
  12. begin
  13. Writeln('FAILURE at ',testidx:5,' got "',res,'", expected "',expected,'" ');
  14. err:=true;
  15. end;
  16. end;
  17. begin
  18. // Default Unix
  19. AllowDirectorySeparators:=['/','\'];
  20. AllowDriveSeparators:=[];
  21. TestFuncs(1,ExtractFilePath('./:'),'./');
  22. TestFuncs(2,ExtractFileName('./:'),':');
  23. TestFuncs(3,ExtractFileDrive('./:'),'');
  24. TestFuncs(4,ExtractFilePath('C:/blah:blah'),'C:/');
  25. TestFuncs(5,ExtractFileName('C:/blah:blah'),'blah:blah');
  26. TestFuncs(6,ExtractFileDrive('C:/blah:blah'),'');
  27. TestFuncs(7,ExtractFilePath('./\'),'./\');
  28. TestFuncs(8,ExtractFileName('./\'),'');
  29. TestFuncs(9,ExtractFileDrive('./\'),'');
  30. TestFuncs(10,ExtractFilePath('./c:'),'./');
  31. TestFuncs(11,ExtractFileName('./c:'),'c:');
  32. TestFuncs(12,ExtractFileDrive('./c:'),'');
  33. TestFuncs(13,ExtractFilePath('\\server\share\file'),'\\server\share\');
  34. TestFuncs(14,ExtractFileName('\\server\share\file'),'file');
  35. TestFuncs(15,ExtractFileDrive('\\server\share\file'),'\\server');
  36. // Kylix compatibility mode
  37. AllowDirectorySeparators:=['/'];
  38. AllowDriveSeparators:=[];
  39. TestFuncs(101,ExtractFilePath('./:'),'./');
  40. TestFuncs(102,ExtractFileName('./:'),':');
  41. TestFuncs(103,ExtractFileDrive('./:'),'');
  42. TestFuncs(104,ExtractFilePath('C:/blah:blah'),'C:/');
  43. TestFuncs(105,ExtractFileName('C:/blah:blah'),'blah:blah');
  44. TestFuncs(106,ExtractFileDrive('C:/blah:blah'),'');
  45. TestFuncs(107,ExtractFilePath('./\'),'./');
  46. TestFuncs(108,ExtractFileName('./\'),'\');
  47. TestFuncs(109,ExtractFileDrive('./\'),'');
  48. TestFuncs(110,ExtractFilePath('./c:'),'./');
  49. TestFuncs(111,ExtractFileName('./c:'),'c:');
  50. TestFuncs(112,ExtractFileDrive('./c:'),'');
  51. TestFuncs(113,ExtractFilePath('\\server\share\file'),'');
  52. TestFuncs(114,ExtractFileName('\\server\share\file'),'\\server\share\file');
  53. TestFuncs(115,ExtractFileDrive('\\server\share\file'),'');
  54. // Default Windows/DOS/SO2
  55. AllowDirectorySeparators:=['/','\'];
  56. AllowDriveSeparators:=[':'];
  57. TestFuncs(201,ExtractFilePath('./:'),'./:');
  58. TestFuncs(202,ExtractFileName('./:'),'');
  59. TestFuncs(203,ExtractFileDrive('./:'),'');
  60. TestFuncs(204,ExtractFilePath('C:/blah:blah'),'C:/blah:');
  61. TestFuncs(205,ExtractFileName('C:/blah:blah'),'blah');
  62. TestFuncs(206,ExtractFileDrive('C:/blah:blah'),'C:');
  63. TestFuncs(207,ExtractFilePath('./\'),'./\');
  64. TestFuncs(208,ExtractFileName('./\'),'');
  65. TestFuncs(209,ExtractFileDrive('./\'),'');
  66. TestFuncs(210,ExtractFilePath('./c:'),'./c:');
  67. TestFuncs(211,ExtractFileName('./c:'),'');
  68. TestFuncs(212,ExtractFileDrive('./c:'),'');
  69. TestFuncs(213,ExtractFilePath('\\server\share\file'),'\\server\share\');
  70. TestFuncs(214,ExtractFileName('\\server\share\file'),'file');
  71. TestFuncs(215,ExtractFileDrive('\\server\share\file'),'\\server');
  72. // Windows/DOS/SO2 Delphi Compatibility
  73. AllowDirectorySeparators:=['\'];
  74. AllowDriveSeparators:=[':'];
  75. TestFuncs(301,ExtractFilePath('./:'),'./:');
  76. TestFuncs(302,ExtractFileName('./:'),'');
  77. TestFuncs(303,ExtractFileDrive('./:'),'');
  78. TestFuncs(304,ExtractFilePath('C:/blah:blah'),'C:/blah:');
  79. TestFuncs(305,ExtractFileName('C:/blah:blah'),'blah');
  80. TestFuncs(306,ExtractFileDrive('C:/blah:blah'),'C:');
  81. TestFuncs(307,ExtractFilePath('./\'),'./\');
  82. TestFuncs(308,ExtractFileName('./\'),'');
  83. TestFuncs(309,ExtractFileDrive('./\'),'');
  84. TestFuncs(310,ExtractFilePath('./c:'),'./c:');
  85. TestFuncs(311,ExtractFileName('./c:'),'');
  86. TestFuncs(312,ExtractFileDrive('./c:'),'');
  87. TestFuncs(313,ExtractFilePath('\\server\share\file'),'\\server\share\');
  88. TestFuncs(314,ExtractFileName('\\server\share\file'),'file');
  89. TestFuncs(315,ExtractFileDrive('\\server\share\file'),'\\server');
  90. if err then
  91. halt(1);
  92. end.