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
|
MODULE testdelete ;
(* A test module to test file creation and deletion using base
PIM libraries. *)
IMPORT FIO, SFIO, DynamicStrings, StringFileSysOp ;
FROM libc IMPORT printf, exit ;
FROM FormatStrings IMPORT Sprintf1 ;
CONST
MaxFile = 10 ;
VAR
files: ARRAY [0..MaxFile] OF FIO.File ;
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 ;
s: DynamicStrings.String ;
BEGIN
FOR i := 1 TO HIGH (files) DO
s := DynamicStrings.InitString ("file%03d") ;
s := Sprintf1 (s, i) ;
files[i] := SFIO.OpenToWrite (s) ;
s := DynamicStrings.KillString (s) ;
s := DynamicStrings.InitString ("some text inside file %d\n") ;
s := Sprintf1 (s, i) ;
s := DynamicStrings.KillString (SFIO.WriteS (files[i], s)) ;
FIO.Close (files[i])
END
END CreateFiles ;
(*
DeleteFiles - delete every file in files.
*)
PROCEDURE DeleteFiles ;
VAR
i: CARDINAL ;
s: DynamicStrings.String ;
BEGIN
(* Open the files first. *)
FOR i := 1 TO HIGH (files) DO
s := DynamicStrings.InitString ("file%03d") ;
s := Sprintf1 (s, i) ;
files[i] := SFIO.OpenToRead (s) ;
Assert (StringFileSysOp.Exists (s), __LINE__) ;
Assert (StringFileSysOp.IsFile (s), __LINE__) ;
s := DynamicStrings.KillString (s)
END ;
(* Now delete them. *)
FOR i := 1 TO HIGH (files) DO
s := SFIO.GetFileName (files[i]) ;
Assert (StringFileSysOp.Exists (s), __LINE__) ;
Assert (StringFileSysOp.IsFile (s), __LINE__) ;
Assert (StringFileSysOp.Unlink (s), __LINE__) ;
Assert (NOT StringFileSysOp.Exists (s), __LINE__) ;
FIO.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 testdelete.
|