tdos.pp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. {
  2. $Id$
  3. Program to test DOS unit by Peter Vreman.
  4. Only main TP functions are tested (nothing with Interrupts/Break/Verify).
  5. }
  6. {$V-}
  7. program tesidos;
  8. uses dos;
  9. { These should be defined for each operating system to be tested }
  10. { NOEXESUFFIX = No .EXE to prepend to prefix the file with to get }
  11. { a file executable. }
  12. {$ifdef unix}
  13. {$DEFINE NOEXESUFFIX}
  14. {$endif}
  15. {$ifdef amiga}
  16. {$DEFINE NOEXESUFFIX}
  17. {$endif}
  18. const
  19. exedir : string = '';
  20. procedure TestInfo;
  21. var
  22. dt : DateTime;
  23. ptime : longint;
  24. wday : word;
  25. HSecs : word;
  26. begin
  27. writeln;
  28. writeln('Info Functions');
  29. writeln('**************');
  30. writeln('Dosversion : ',lo(DosVersion),'.',hi(DosVersion));
  31. GetDate(Dt.Year,Dt.Month,Dt.Day,wday);
  32. writeln('Current Date (MM-DD-YYYY) : ',Dt.Month,'-',Dt.Day,'-',Dt.Year,' weekday ',wday);
  33. GetTime(Dt.Hour,Dt.Min,Dt.Sec,HSecs);
  34. writeln('Current Time (HH:MM:SS) : ',Dt.Hour,':',Dt.Min,':',Dt.Sec,' hsecs ',HSecs);
  35. PackTime(Dt,ptime);
  36. writeln('Packed like dos: ',ptime);
  37. UnpackTime(ptime,DT);
  38. writeln('Unpacked again (MM-DD-YYYY) ',Dt.Month,'-',Dt.Day,'-',Dt.Year,' ',Dt.Hour,':',Dt.Min,':',Dt.Sec);
  39. writeln;
  40. end;
  41. procedure TestEnvironment;
  42. var
  43. i : longint;
  44. begin
  45. writeln;
  46. writeln('Environment Functions');
  47. writeln('*********************');
  48. writeln('Amount of environment strings : ',EnvCount);
  49. writeln('GetEnv TERM : ',GetEnv('TERM'));
  50. writeln('GetEnv HOST : ',GetEnv('HOST'));
  51. writeln('GetEnv PATH : ',GetEnv('PATH'));
  52. writeln('GetEnv SHELL: ',GetEnv('SHELL'));
  53. write(' all Environment Strings using EnvStr()');
  54. for i:=1 to EnvCount do
  55. writeln(EnvStr(i));
  56. end;
  57. procedure TestExec;
  58. begin
  59. writeln;
  60. writeln('Exec Functions');
  61. writeln('**************');
  62. write('Going to Exec of ''hello -good -day''');
  63. SwapVectors;
  64. {$ifdef noexesuffix}
  65. Exec(exedir+'hello','-good -day');
  66. {$else}
  67. Exec(exedir+'hello.exe','-good -day');
  68. {$endif}
  69. SwapVectors;
  70. writeln('Exit should be 213 : ',DosExitCode);
  71. writeln('Error code should be 0 : ',DosError);
  72. end;
  73. procedure TestDisk;
  74. var
  75. Dir : SearchRec;
  76. DT : DateTime;
  77. begin
  78. writeln;
  79. writeln('Disk Functions');
  80. writeln('**************');
  81. writeln('DiskFree 0 : ',DiskFree(0));
  82. writeln('DiskSize 0 : ',DiskSize(0));
  83. {writeln('DiskSize 1 : ',DiskSize(1)); this is a: on dos ??! }
  84. writeln('DiskSize 3 : ',DiskSize(3)); { this is c: on dos }
  85. {$IFDEF Unix}
  86. AddDisk('/fd0');
  87. writeln('DiskSize 4 : ',DiskSize(4));
  88. {$ENDIF}
  89. write('FindFirst/FindNext Test');
  90. FindFirst('*.*',$20,Dir);
  91. while (DosError=0) do
  92. begin
  93. UnpackTime(dir.Time,DT);
  94. Writeln(dir.Name,' ',dir.Size,' ',DT.Year,'-',DT.Month,'-',DT.Day);
  95. FindNext(Dir);
  96. end;
  97. end;
  98. procedure TestFile;
  99. var
  100. test,
  101. name,dir,ext : string;
  102. begin
  103. writeln;
  104. writeln('File(name) Functions');
  105. writeln('********************');
  106. {$ifdef unix }
  107. test:='/usr/local/bin/ppc.so';
  108. writeln('FSplit(',test,')');
  109. FSplit(test,dir,name,ext);
  110. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  111. test:='/usr/bin.1/ppc';
  112. writeln('FSplit(',test,')');
  113. FSplit(test,dir,name,ext);
  114. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  115. test:='mtools.tar.gz';
  116. writeln('FSplit(',test,')');
  117. FSplit(test,dir,name,ext);
  118. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  119. Writeln('Expanded dos.pp : ',FExpand('dos.pp'));
  120. Writeln('Expanded ../dos.pp : ',FExpand('../dos.pp'));
  121. Writeln('Expanded /usr/local/dos.pp : ',FExpand('/usr/local/dos.pp'));
  122. Writeln('Expanded ../dos/./../././dos.pp : ',FExpand('../dos/./../././dos.pp'));
  123. test:='../;/usr/;/usr/bin/;/usr/bin;/bin/;';
  124. {$else not linux }
  125. test:='\usr\local\bin\ppc.so';
  126. writeln('FSplit(',test,')');
  127. FSplit(test,dir,name,ext);
  128. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  129. test:='\usr\bin.1\ppc';
  130. writeln('FSplit(',test,')');
  131. FSplit(test,dir,name,ext);
  132. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  133. test:='mtools.tar.gz';
  134. writeln('FSplit(',test,')');
  135. FSplit(test,dir,name,ext);
  136. writeln('dir: ',dir,' name: ',name,' ext: ',ext);
  137. Writeln('Expanded dos.pp : ',FExpand('dos.pp'));
  138. Writeln('Expanded ..\dos.pp : ',FExpand('..\dos.pp'));
  139. Writeln('Expanded \usr\local\dos.pp : ',FExpand('\usr\local\dos.pp'));
  140. Writeln('Expanded ..\dos\.\..\.\.\dos.pp : ',FExpand('..\dos\.\..\.\.\dos.pp'));
  141. test:='..\;\usr\;\usr\bin\;\usr\bin;\bin\;';
  142. {$endif not linux}
  143. test:=test+getenv('PATH');
  144. {$ifdef NOEXESUFFIX}
  145. Writeln('FSearch ls: ',FSearch('ls',test));
  146. {$else not noexesuffix}
  147. Writeln('FSearch ls: ',FSearch('ls.exe',test));
  148. {$endif not noexesuffix}
  149. Writeln('Empty FSearch (should return empty string):',FSearch('',test));
  150. end;
  151. var
  152. name,dir,ext : string;
  153. begin
  154. FSplit(paramstr(0),dir,name,ext);
  155. exedir:=dir;
  156. TestInfo;
  157. TestEnvironment;
  158. TestExec;
  159. TestDisk;
  160. TestFile;
  161. end.
  162. {
  163. $Log$
  164. Revision 1.8 2002-11-18 09:49:49 pierre
  165. * tried to make as many as possible tests non interactive
  166. Revision 1.7 2002/10/20 11:47:39 carl
  167. * add format date to make test clearer
  168. Revision 1.6 2002/09/07 15:40:56 peter
  169. * old logs removed and tabs fixed
  170. Revision 1.5 2002/07/06 11:46:08 carl
  171. + fsearch testing added
  172. Revision 1.4 2002/06/01 19:08:52 marco
  173. * Renamefest
  174. }