2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / ce / ce2411a.ada
blob9f735df682cfd684f6f74662170915ce7a90b80a
1 -- CE2411A.ADA
3 -- Grant of Unlimited Rights
4 --
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
14 -- to do so.
16 -- DISCLAIMER
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
24 --*
25 -- OBJECTIVE:
26 -- CHECK THAT INDEX RETURNS THE CORRECT INDEX POSITION AND THAT
27 -- SET_INDEX CORRECTLY SETS THE INDEX POSITION IN A DIRECT FILE.
29 -- APPLICABILITY CRITERIA:
30 -- THIS TEST IS ONLY APPLICABLE TO IMPLEMENTATIONS WHICH SUPPORT
31 -- DIRECT FILES.
33 -- HISTORY:
34 -- TBN 10/01/86
35 -- JLH 08/07/87 REVISED EXTERNAL FILE NAME, REMOVED CHECK FOR
36 -- NAME_ERROR ON OPEN CALLS, AND REMOVED
37 -- UNNECESSARY CODE.
39 WITH DIRECT_IO;
40 WITH REPORT; USE REPORT;
41 PROCEDURE CE2411A IS
43 PACKAGE DIR_IO IS NEW DIRECT_IO (INTEGER);
44 USE DIR_IO;
46 FILE1 : FILE_TYPE;
47 INCOMPLETE : EXCEPTION;
49 BEGIN
50 TEST ("CE2411A", "CHECK THAT INDEX RETURNS THE CORRECT INDEX " &
51 "POSITION AND THAT SET_INDEX CORRECTLY SETS " &
52 "THE INDEX POSITION IN A DIRECT FILE");
55 -- INITIALIZE TEST FILE
57 BEGIN
58 CREATE (FILE1, OUT_FILE, LEGAL_FILE_NAME);
59 EXCEPTION
60 WHEN NAME_ERROR =>
61 NOT_APPLICABLE ("NAME_ERROR RAISED DURING CREATE " &
62 "WITH OUT_FILE MODE FOR DIR_IO");
63 RAISE INCOMPLETE;
64 WHEN USE_ERROR =>
65 NOT_APPLICABLE ("USE_ERROR RAISED DURING CREATE " &
66 "WITH OUT_FILE MODE FOR DIR_IO");
67 RAISE INCOMPLETE;
68 WHEN OTHERS =>
69 FAILED ("UNKNOWN EXCEPTION RAISED DURING CREATE");
70 RAISE INCOMPLETE;
71 END;
73 BEGIN
74 IF INDEX (FILE1) /= 1 THEN
75 FAILED ("STARTING INDEX POSITION IS INCORRECT - 1");
76 RAISE INCOMPLETE;
77 END IF;
78 FOR I IN 1 .. 10 LOOP
79 WRITE (FILE1, I);
80 END LOOP;
81 IF INDEX (FILE1) /= 11 THEN
82 FAILED ("INDEX DOES NOT RETURN CORRECT POSITION - 2");
83 END IF;
84 WRITE (FILE1, 20, 20);
85 IF INDEX (FILE1) /= 21 THEN
86 FAILED ("INDEX DOES NOT RETURN CORRECT POSITION - 3");
87 END IF;
88 SET_INDEX (FILE1, 11);
89 IF INDEX (FILE1) /= 11 THEN
90 FAILED ("SET_INDEX DOES NOT CORRECTLY SET POSITION - 4");
91 END IF;
92 WRITE (FILE1, 11);
93 IF INDEX (FILE1) /= 12 THEN
94 FAILED ("INDEX DOES NOT RETURN CORRECT POSITION - 5");
95 END IF;
96 END;
98 CLOSE (FILE1);
100 BEGIN
101 OPEN (FILE1, IN_FILE, LEGAL_FILE_NAME);
102 EXCEPTION
103 WHEN USE_ERROR =>
104 NOT_APPLICABLE ("USE_ERROR RAISED DURING OPEN INFILE " &
105 "FOR DIR_IO");
106 RAISE INCOMPLETE;
107 WHEN OTHERS =>
108 FAILED ("UNKNOWN EXCEPTION RAISED DURING OPEN INFILE");
109 RAISE INCOMPLETE;
110 END;
112 DECLARE
113 NUM : INTEGER;
114 BEGIN
115 IF INDEX (FILE1) /= 1 THEN
116 FAILED ("STARTING INDEX POSITION IS INCORRECT - 7");
117 RAISE INCOMPLETE;
118 END IF;
119 FOR I IN 1 .. 10 LOOP
120 READ (FILE1, NUM);
121 IF NUM /= I THEN
122 FAILED ("FILE CONTAINS INCORRECT DATA - 8");
123 END IF;
124 IF INDEX (FILE1) /= POSITIVE_COUNT(I + 1) THEN
125 FAILED ("INDEX DOES NOT RETURN THE CORRECT " &
126 "POSITION - 9");
127 END IF;
128 END LOOP;
129 SET_INDEX (FILE1, 20);
130 IF INDEX (FILE1) /= 20 THEN
131 FAILED ("SET_INDEX DOES NOT CORRECTLY SET POSITION - " &
132 "10");
133 END IF;
134 READ (FILE1, NUM, 20);
135 IF NUM /= 20 THEN
136 FAILED ("FILE CONTAINS INCORRECT DATA - 11");
137 END IF;
138 IF INDEX (FILE1) /= 21 THEN
139 FAILED ("INDEX DOES NOT RETURN CORRECT POSITION - 12");
140 END IF;
141 SET_INDEX (FILE1, 1);
142 IF INDEX (FILE1) /= 1 THEN
143 FAILED ("SET_INDEX DOES NOT CORRECTLY SET POSITION - " &
144 "13");
145 END IF;
146 END;
148 CLOSE (FILE1);
150 BEGIN
151 OPEN (FILE1, INOUT_FILE, LEGAL_FILE_NAME);
152 EXCEPTION
153 WHEN USE_ERROR =>
154 NOT_APPLICABLE ("USE_ERROR RAISED DURING OPEN " &
155 "INOUT_FILE FOR DIR_IO");
156 RAISE INCOMPLETE;
157 WHEN OTHERS =>
158 FAILED ("UNKNOWN EXCEPTION RAISED DURING OPEN INOUT");
159 RAISE INCOMPLETE;
160 END;
162 DECLARE
163 NUM : INTEGER;
164 BEGIN
165 IF INDEX (FILE1) /= 1 THEN
166 FAILED ("STARTING INDEX POSITION IS INCORRECT - 15");
167 RAISE INCOMPLETE;
168 END IF;
169 FOR I IN 1 .. 10 LOOP
170 READ (FILE1, NUM);
171 IF NUM /= I THEN
172 FAILED ("FILE CONTAINS INCORRECT DATA - 16");
173 END IF;
174 IF INDEX (FILE1) /= POSITIVE_COUNT(I + 1) THEN
175 FAILED ("INDEX DOES NOT RETURN THE CORRECT " &
176 "POSITION - 17");
177 END IF;
178 END LOOP;
179 SET_INDEX (FILE1, 20);
180 IF INDEX (FILE1) /= 20 THEN
181 FAILED ("SET_INDEX DOES NOT CORRECTLY SET POSITION - " &
182 "18");
183 END IF;
184 WRITE (FILE1, 12, 12);
185 IF INDEX (FILE1) /= 13 THEN
186 FAILED ("INDEX DOES NOT RETURN CORRECT POSITION - 19");
187 END IF;
188 SET_INDEX (FILE1, 1);
189 IF INDEX (FILE1) /= 1 THEN
190 FAILED ("SET_INDEX DOES NOT CORRECTLY SET POSITION - " &
191 "20");
192 END IF;
193 END;
195 BEGIN
196 DELETE (FILE1);
197 EXCEPTION
198 WHEN USE_ERROR =>
199 NULL;
200 END;
202 RESULT;
204 EXCEPTION
205 WHEN INCOMPLETE =>
206 RESULT;
207 END CE2411A;