aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gm2/pimlib/run/pass/testdelete.mod
blob: 8afdc445cae26e78ac11017998c3808be967a4b5 (plain)
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.