MODULE testdelete2 ; (* A test module to test file creation and deletion using ISO libraries. *) IMPORT DynamicStrings, StringFileSysOp, FileSysOp, SeqFile, TextIO, Strings, IOChanUtils ; FROM libc IMPORT printf, exit ; FROM FormatStrings IMPORT Sprintf1 ; CONST MaxFile = 10 ; VAR files: ARRAY [0..MaxFile] OF SeqFile.ChanId ; PROCEDURE Assert (condition: BOOLEAN; line: CARDINAL) ; BEGIN IF NOT condition THEN printf ("%s:%d: assert failed\n", __FILE__, line) ; exit (1) END END Assert ; (* CreateFiles - create MaxFile files saving the file handle into files. *) PROCEDURE CreateFiles ; VAR i : CARDINAL ; name: ARRAY [0..10] OF CHAR ; ch : CHAR ; res : SeqFile.OpenResults ; BEGIN FOR i := 1 TO HIGH (files) DO Strings.Assign ('file', name) ; ch := CHR (ORD ('0')+i-1) ; name[4] := ch ; name[5] := 0C ; SeqFile.OpenWrite (files[i], name, SeqFile.text+SeqFile.write, res) ; TextIO.WriteString (files[i], "some text inside file ") ; TextIO.WriteLn (files[i]) ; SeqFile.Close (files[i]) END END CreateFiles ; (* DeleteFiles - delete every file in files. *) PROCEDURE DeleteFiles ; VAR i : CARDINAL ; name: ARRAY [0..10] OF CHAR ; s : DynamicStrings.String ; ch : CHAR ; res : SeqFile.OpenResults ; BEGIN (* Open the files first. *) FOR i := 1 TO HIGH (files) DO Strings.Assign ('file', name) ; ch := CHR (ORD ('0')+i-1) ; name[4] := ch ; name[5] := 0C ; SeqFile.OpenRead (files[i], name, SeqFile.text, res) ; Assert (FileSysOp.Exists (name), __LINE__) ; Assert (FileSysOp.IsFile (name), __LINE__) END ; (* Now delete them. *) FOR i := 1 TO HIGH (files) DO s := IOChanUtils.GetFileName (files[i]) ; Assert (StringFileSysOp.Exists (s), __LINE__) ; Assert (StringFileSysOp.IsFile (s), __LINE__) ; Assert (StringFileSysOp.Unlink (s), __LINE__) ; Assert (NOT StringFileSysOp.Exists (s), __LINE__) ; SeqFile.Close (files[i]) ; s := DynamicStrings.KillString (s) END END DeleteFiles ; (* Init - *) PROCEDURE Init ; BEGIN CreateFiles ; DeleteFiles ; printf ("all tests passed\n") END Init ; BEGIN Init END testdelete2.