tiorte.pp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. { checks if the correct RTE's are generated for invalid io operations }
  2. {$i-}
  3. const
  4. TMP_DIRECTORY = 'temp2';
  5. has_fails : boolean = false;
  6. procedure test(value, required: longint);
  7. begin
  8. if value <> required then
  9. begin
  10. writeln('Got ',value,' instead of ',required);
  11. has_fails:=true;
  12. {halt(1);}
  13. end;
  14. end;
  15. procedure test_read_text;
  16. var
  17. f: text;
  18. s: string;
  19. begin
  20. { to avoid influence of previous runs/procedures }
  21. fillchar(f,sizeof(f),0);
  22. write('Reading from not opened text file...');
  23. read(f,s);
  24. test(ioresult,103);
  25. readln(f);
  26. test(ioresult,103);
  27. writeln(' Passed!');
  28. write('Seekeoln from not opened text file...');
  29. seekeoln(f);
  30. test(ioresult,103);
  31. writeln(' Passed!');
  32. write('Seekeof from not opened text file...');
  33. seekeof(f);
  34. test(ioresult,103);
  35. writeln(' Passed!');
  36. assign(f,'inoutrte.$$$');
  37. rewrite(f);
  38. test(ioresult,0);
  39. write('Reading from write-only (rewritten) text file...');
  40. read(f,s);
  41. test(ioresult,104);
  42. readln(f);
  43. test(ioresult,104);
  44. writeln(' Passed!');
  45. write('Seekeoln from write-only (rewritten) text file...');
  46. seekeoln(f);
  47. test(ioresult,104);
  48. writeln(' Passed!');
  49. write('Seekeof from write-only (rewritten) text file...');
  50. seekeof(f);
  51. test(ioresult,104);
  52. writeln(' Passed!');
  53. close(f);
  54. test(ioresult,0);
  55. append(f);
  56. test(ioresult,0);
  57. write('Reading from write-only (appended) text file...');
  58. read(f,s);
  59. test(ioresult,104);
  60. readln(f);
  61. test(ioresult,104);
  62. writeln(' Passed!');
  63. write('Seekeoln from write-only (appended) text file...');
  64. seekeoln(f);
  65. test(ioresult,104);
  66. writeln(' Passed!');
  67. write('Seekeof from write-only (appended) text file...');
  68. seekeof(f);
  69. test(ioresult,104);
  70. writeln(' Passed!');
  71. close(f);
  72. test(ioresult,0);
  73. erase(f);
  74. test(ioresult,0);
  75. end;
  76. procedure test_read_typed;
  77. var
  78. f: file of byte;
  79. s: byte;
  80. begin
  81. { to avoid influence of previous runs/procedures }
  82. fillchar(f,sizeof(f),0);
  83. write('Reading from not opened typed file...');
  84. read(f,s);
  85. test(ioresult,103);
  86. writeln(' Passed!');
  87. { with filemode 2, the file is read-write }
  88. filemode := 1;
  89. assign(f,'inoutrte.$$$');
  90. rewrite(f);
  91. test(ioresult, 0);
  92. write(f,s);
  93. test(ioresult, 0);
  94. close(f);
  95. test(ioresult, 0);
  96. reset(f);
  97. test(ioresult, 0);
  98. write('Reading from write-only typed file...');
  99. read(f,s);
  100. test(ioresult,104);
  101. writeln(' Passed!');
  102. filemode := 2;
  103. close(f);
  104. test(ioresult, 0);
  105. erase(f);
  106. test(ioresult, 0);
  107. end;
  108. procedure test_read_untyped;
  109. var
  110. f: file;
  111. r: longint;
  112. s: byte;
  113. begin
  114. { to avoid influence of previous runs/procedures }
  115. fillchar(f,sizeof(f),0);
  116. write('Reading from not opened untyped file...');
  117. blockread(f,s,1,r);
  118. test(ioresult,103);
  119. writeln(' Passed!');
  120. { with filemode 2, the file is read-write }
  121. filemode := 1;
  122. assign(f,'inoutrte.$$$');
  123. rewrite(f);
  124. test(ioresult, 0);
  125. blockwrite(f,s,1);
  126. test(ioresult, 0);
  127. close(f);
  128. test(ioresult, 0);
  129. reset(f);
  130. test(ioresult, 0);
  131. write('Reading from write-only utyped file...');
  132. blockread(f,s,1,r);
  133. test(ioresult,104);
  134. writeln(' Passed!');
  135. filemode := 2;
  136. close(f);
  137. test(ioresult, 0);
  138. erase(f);
  139. test(ioresult, 0);
  140. end;
  141. procedure test_write_text;
  142. var f: text;
  143. s: string;
  144. begin
  145. { to avoid influence of previous runs/procedures }
  146. fillchar(f,sizeof(f),0);
  147. write('Writing to not opened text file...');
  148. write(f,s);
  149. test(ioresult,103);
  150. writeln(f);
  151. test(ioresult,103);
  152. writeln(' Passed!');
  153. assign(f,'inoutrte.$$$');
  154. rewrite(f);
  155. close(f);
  156. test(ioresult,0);
  157. reset(f);
  158. test(ioresult,0);
  159. write('Writing to read-only text file...');
  160. write(f,s);
  161. test(ioresult,105);
  162. writeln(f);
  163. test(ioresult,105);
  164. Writeln(' Passed!');
  165. close(f);
  166. test(ioresult,0);
  167. erase(f);
  168. test(ioresult,0);
  169. end;
  170. procedure test_write_typed;
  171. var f: file of byte;
  172. s: byte;
  173. begin
  174. { to avoid influence of previous runs/procedures }
  175. fillchar(f,sizeof(f),0);
  176. write('Writing to not opened typed file...');
  177. write(f,s);
  178. test(ioresult,103);
  179. writeln(' Passed!');
  180. assign(f,'inoutrte.$$$');
  181. rewrite(f);
  182. close(f);
  183. test(ioresult,0);
  184. filemode := 0;
  185. reset(f);
  186. test(ioresult,0);
  187. write('Writing to read-only typed file...');
  188. write(f,s);
  189. test(ioresult,105);
  190. Writeln(' Passed!');
  191. filemode := 2;
  192. close(f);
  193. test(ioresult,0);
  194. erase(f);
  195. test(ioresult,0);
  196. end;
  197. procedure test_write_untyped;
  198. var f: file;
  199. r: longint;
  200. s: byte;
  201. begin
  202. { to avoid influence of previous runs/procedures }
  203. fillchar(f,sizeof(f),0);
  204. write('Writing to not opened untyped file...');
  205. blockwrite(f,s,1,r);
  206. test(ioresult,103);
  207. writeln(' Passed!');
  208. assign(f,'inoutrte.$$$');
  209. rewrite(f);
  210. close(f);
  211. test(ioresult,0);
  212. filemode := 0;
  213. reset(f);
  214. test(ioresult,0);
  215. write('Writing to read-only untyped file...');
  216. blockwrite(f,s,1,r);
  217. test(ioresult,105);
  218. Writeln(' Passed!');
  219. filemode := 2;
  220. close(f);
  221. test(ioresult,0);
  222. erase(f);
  223. test(ioresult,0);
  224. end;
  225. procedure test_close_text;
  226. var f: text;
  227. begin
  228. { to avoid influence of previous runs/procedures }
  229. fillchar(f,sizeof(f),0);
  230. write('Testing closing of not opened text file...');
  231. close(f);
  232. test(ioresult,103);
  233. writeln(' Passed!');
  234. end;
  235. procedure test_close_typed;
  236. var f: file of byte;
  237. begin
  238. { to avoid influence of previous runs/procedures }
  239. fillchar(f,sizeof(f),0);
  240. write('Testing closing of not opened typed file...');
  241. close(f);
  242. test(ioresult,103);
  243. writeln(' Passed!');
  244. end;
  245. procedure test_close_untyped;
  246. var f: file;
  247. begin
  248. { to avoid influence of previous runs/procedures }
  249. fillchar(f,sizeof(f),0);
  250. write('Testing closing of not opened untyped file...');
  251. close(f);
  252. test(ioresult,103);
  253. writeln(' Passed!');
  254. end;
  255. procedure test_fileroutines;
  256. var
  257. F: File;
  258. L: longint;
  259. begin
  260. { get the file position of a non-existent file }
  261. write('Testing Filepos on non initialized file...');
  262. l:=FilePos(F);
  263. test(IOresult,103);
  264. writeln(' Passed!');
  265. write('Testing Filesize on non initialized file...');
  266. l:=FileSize(F);
  267. test(IOresult,103);
  268. writeln(' Passed!');
  269. end;
  270. procedure test_directory;
  271. var
  272. F: File;
  273. { test directory I/O }
  274. begin
  275. { test on non-existant directory }
  276. write('Testing change directory on non-existent file...');
  277. ChDir('notexist');
  278. test(IOResult,3);
  279. { test on a file }
  280. ChDir('testdir.pas');
  281. test(IOResult,3);
  282. Writeln(' Passed!');
  283. { test on non-existant directory }
  284. {$ifdef go32v2}
  285. ChDir('Y:\test.dir');
  286. test(IOResult,15);
  287. {$endif}
  288. { make a stub directory for testing purposes }
  289. Mkdir(TMP_DIRECTORY);
  290. test(IOResult,0);
  291. { try to recreate the directory .... }
  292. write('Testing make directory on already existent dir...');
  293. MkDir(TMP_DIRECTORY);
  294. test(IOResult,5);
  295. Writeln(' Passed!');
  296. { try to erase the directory, using file access }
  297. write('Testing erase of directory...');
  298. Assign(F,TMP_DIRECTORY);
  299. Erase(F);
  300. test(IOResult,2);
  301. Writeln(' Passed!');
  302. { now really remove the directory }
  303. RmDir(TMP_DIRECTORY);
  304. test(IOResult,0);
  305. { remove non-existant directory }
  306. write('Testing remove directory of non-existent file...');
  307. RmDir('testdir.exe');
  308. { TP here returns 5 , not 2 }
  309. test(IOResult,2);
  310. Writeln(' Passed!');
  311. { erase non-existant file }
  312. write('Testing erase of non-existent file...');
  313. Assign(F,'notexist.txt');
  314. Erase(F);
  315. test(IOResult,2);
  316. WriteLn(' Passed!');
  317. { try to erase the current directory }
  318. write('Trying to erase current directory...');
  319. RmDir('.');
  320. test(IOResult, 16);
  321. WriteLn(' Passed!');
  322. { try to erase the previous directory }
  323. write('Trying to erase parent directory...');
  324. RmDir('..');
  325. test(IOResult, 5);
  326. WriteLn(' Passed!');
  327. end;
  328. begin
  329. test_read_text;
  330. test_read_typed;
  331. test_read_untyped;
  332. test_write_text;
  333. test_write_typed;
  334. test_write_untyped;
  335. test_close_text;
  336. test_close_typed;
  337. test_close_untyped;
  338. test_directory;
  339. test_fileroutines;
  340. if has_fails then
  341. halt(1);
  342. end.
  343. {
  344. $Log$
  345. Revision 1.6 2002-10-15 12:05:49 pierre
  346. - * changed so that all tests are done even after a failure
  347. Revision 1.5 2002/09/07 15:40:56 peter
  348. * old logs removed and tabs fixed
  349. Revision 1.4 2002/03/09 23:17:35 carl
  350. * removing current directory should return 16
  351. Revision 1.3 2002/03/05 21:53:18 carl
  352. + tests on removing current directory and parent directory
  353. }