2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / c3 / c35502c.ada
bloba635e68fb142280cf60dbfb12dc2dd58196b01df
1 -- C35502C.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 -- CHECK THAT THE ATTRIBUTES 'IMAGE' AND 'VALUE' YIELD THE CORRECT
26 -- RESULTS WHEN THE PREFIX IS AN ENUMERATION TYPE OTHER THAN A BOOLEAN
27 -- OR A CHARACTER TYPE.
28 -- SUBTESTS ARE:
29 -- PART (A). TESTS FOR IMAGE.
30 -- PART (B). TESTS FOR VALUE.
32 -- RJW 5/07/86
34 WITH REPORT; USE REPORT;
36 PROCEDURE C35502C IS
38 TYPE ENUM IS (A, BC, ABC, A_B_C, abcd);
39 SUBTYPE SUBENUM IS ENUM RANGE A .. BC;
41 TYPE NEWENUM IS NEW ENUM;
43 FUNCTION IDENT (X : ENUM) RETURN ENUM IS
44 BEGIN
45 IF EQUAL (ENUM'POS (X), ENUM'POS(X)) THEN
46 RETURN X;
47 END IF;
48 RETURN ENUM'FIRST;
49 END IDENT;
51 BEGIN
53 TEST( "C35502C" , "CHECK THAT THE ATTRIBUTES 'IMAGE' AND " &
54 "'VALUE' YIELD THE CORRECT RESULTS " &
55 "WHEN THE PREFIX IS AN ENUMERATION TYPE " &
56 "OTHER THAN A BOOLEAN OR A CHARACTER TYPE" );
58 -- PART (A).
60 BEGIN
62 IF ENUM'IMAGE ( IDENT(ABC) ) /= "ABC" THEN
63 FAILED ( "INCORRECT ENUM'IMAGE FOR ABC" );
64 END IF;
65 IF ENUM'IMAGE ( IDENT(ABC) )'FIRST /= 1 THEN
66 FAILED ( "INCORRECT LOWER BOUND FOR ABC IN ENUM" );
67 END IF;
69 IF ENUM'IMAGE ( IDENT(A_B_C) ) /= "A_B_C" THEN
70 FAILED ( "INCORRECT ENUM'IMAGE FOR A_B_C" );
71 END IF;
72 IF ENUM'IMAGE ( IDENT(A_B_C) )'FIRST /= 1 THEN
73 FAILED ( "INCORRECT LOWER BOUND FOR A_B_C IN ENUM" );
74 END IF;
76 IF SUBENUM'IMAGE ( IDENT(A_B_C) ) /= "A_B_C" THEN
77 FAILED ( "INCORRECT SUBENUM'IMAGE FOR A_B_C" );
78 END IF;
79 IF SUBENUM'IMAGE ( IDENT(ABC) )'FIRST /= 1 THEN
80 FAILED ( "INCORRECT LOWER BOUND FOR ABC " &
81 "IN SUBENUM" );
82 END IF;
84 IF NEWENUM'IMAGE ( ABC ) /= IDENT_STR("ABC") THEN
85 FAILED ( "INCORRECT NEWENUM'IMAGE FOR ABC" );
86 END IF;
87 IF NEWENUM'IMAGE ( ABC )'FIRST /= IDENT_INT(1) THEN
88 FAILED ( "INCORRECT LOWER BOUND FOR ABC" &
89 "IN NEWENUM" );
90 END IF;
92 IF ENUM'IMAGE ( IDENT(abcd) ) /= "ABCD" THEN
93 FAILED ( "INCORRECT ENUM'IMAGE FOR abcd" );
94 END IF;
95 IF ENUM'IMAGE ( IDENT(abcd) )'FIRST /= 1 THEN
96 FAILED ( "INCORRECT LOWER BOUND FOR abcd IN ENUM" );
97 END IF;
99 END;
101 -----------------------------------------------------------------------
103 -- PART (B).
105 BEGIN
106 IF ENUM'VALUE (IDENT_STR("ABC")) /= ABC THEN
107 FAILED ( "INCORRECT VALUE FOR ""ABC""" );
108 END IF;
109 EXCEPTION
110 WHEN OTHERS =>
111 FAILED ( "EXCEPTION RAISED - VALUE FOR ""ABC""" );
112 END;
114 BEGIN
115 IF ENUM'VALUE (IDENT_STR("abc")) /= abc THEN
116 FAILED ( "INCORRECT VALUE FOR ""abc""" );
117 END IF;
118 EXCEPTION
119 WHEN OTHERS =>
120 FAILED ( "EXCEPTION RAISED - VALUE FOR ""abc""" );
121 END;
123 BEGIN
124 IF ENUM'VALUE ("ABC") /= ABC THEN
125 FAILED ( "INCORRECT VALUE FOR ABC" );
126 END IF;
127 EXCEPTION
128 WHEN OTHERS =>
129 FAILED ( "EXCEPTION RAISED - VALUE FOR ABC" );
130 END;
132 BEGIN
133 IF NEWENUM'VALUE (IDENT_STR("abcd")) /= abcd THEN
134 FAILED ( "INCORRECT VALUE FOR ""abcd""" );
135 END IF;
136 EXCEPTION
137 WHEN OTHERS =>
138 FAILED ( "EXCEPTION RAISED - VALUE FOR ""abcd""" );
139 END;
141 BEGIN
142 IF NEWENUM'VALUE (IDENT_STR("ABCD")) /= abcd THEN
143 FAILED ( "INCORRECT VALUE FOR ""ABCD""" );
144 END IF;
145 EXCEPTION
146 WHEN OTHERS =>
147 FAILED ( "EXCEPTION RAISED - VALUE FOR ""ABCD""" );
148 END;
150 BEGIN
151 IF NEWENUM'VALUE ("abcd") /= abcd THEN
152 FAILED ( "INCORRECT VALUE FOR abcd" );
153 END IF;
154 EXCEPTION
155 WHEN OTHERS =>
156 FAILED ( "EXCEPTION RAISED - VALUE FOR abcd" );
157 END;
159 BEGIN
160 IF SUBENUM'VALUE (IDENT_STR("A_B_C")) /= A_B_C THEN
161 FAILED ( "INCORRECT VALUE FOR ""A_B_C""" );
162 END IF;
163 EXCEPTION
164 WHEN OTHERS =>
165 FAILED ( "EXCEPTION RAISED - VALUE FOR ""A_B_C""" );
166 END;
168 BEGIN
169 IF ENUM'VALUE (IDENT_STR("ABC ")) /= ABC THEN
170 FAILED ( "INCORRECT VALUE WITH TRAILING BLANKS" );
171 END IF;
172 EXCEPTION
173 WHEN OTHERS =>
174 FAILED ( "EXCEPTION RAISED - VALUE WITH " &
175 "TRAILING BLANKS" );
176 END;
178 BEGIN
179 IF NEWENUM'VALUE (IDENT_STR(" A_B_C")) /= A_B_C THEN
180 FAILED ( "INCORRECT VALUE WITH LEADING BLANKS" );
181 END IF;
182 EXCEPTION
183 WHEN OTHERS =>
184 FAILED ( "EXCEPTION RAISED - VALUE WITH LEADING " &
185 "BLANKS" );
186 END;
188 BEGIN
189 IF ENUM'VALUE (IDENT_STR("A_BC")) /= ABC THEN
190 FAILED ( "NO EXCEPTION RAISED - ""A_BC"" - 1" );
191 ELSE
192 FAILED ( "NO EXCEPTION RAISED - ""A_BC"" - 2" );
193 END IF;
194 EXCEPTION
195 WHEN CONSTRAINT_ERROR =>
196 NULL;
197 WHEN OTHERS =>
198 FAILED ( "WRONG EXCEPTION RAISED - ""A_BC""" );
199 END;
201 BEGIN
202 IF ENUM'VALUE (IDENT_STR("A BC")) /= ABC THEN
203 FAILED ( "NO EXCEPTION RAISED - ""A BC"" - 1" );
204 ELSE
205 FAILED ( "NO EXCEPTION RAISED - ""A BC"" - 2" );
206 END IF;
207 EXCEPTION
208 WHEN CONSTRAINT_ERROR =>
209 NULL;
210 WHEN OTHERS =>
211 FAILED ( "WRONG EXCEPTION RAISED - ""A BC""" );
212 END;
214 BEGIN
215 IF ENUM'VALUE (IDENT_STR("A&BC")) /= ABC THEN
216 FAILED ( "NO EXCEPTION RAISED - ""A&BC"" - 1" );
217 ELSE
218 FAILED ( "NO EXCEPTION RAISED - ""A&BC"" - 2" );
219 END IF;
220 EXCEPTION
221 WHEN CONSTRAINT_ERROR =>
222 NULL;
223 WHEN OTHERS =>
224 FAILED ( "WRONG EXCEPTION RAISED - ""A&BC""" );
225 END;
227 BEGIN
228 IF ENUM'VALUE (IDENT_CHAR(ASCII.HT) & "BC") /= BC THEN
229 FAILED ( "NO EXCEPTION RAISED - LEADING 'HT' - 1" );
230 ELSE
231 FAILED ( "NO EXCEPTION RAISED - LEADING 'HT' - 2" );
232 END IF;
233 EXCEPTION
234 WHEN CONSTRAINT_ERROR =>
235 NULL;
236 WHEN OTHERS =>
237 FAILED ( "WRONG EXCEPTION RAISED - LEADING 'HT'" );
238 END;
240 BEGIN
241 IF NEWENUM'VALUE ("A" & (IDENT_CHAR(ASCII.HT))) /= A THEN
242 FAILED ( "NO EXCEPTION RAISED - TRAILING 'HT' - 1" );
243 ELSE
244 FAILED ( "NO EXCEPTION RAISED - TRAILING 'HT' - 2" );
245 END IF;
246 EXCEPTION
247 WHEN CONSTRAINT_ERROR =>
248 NULL;
249 WHEN OTHERS =>
250 FAILED ( "WRONG EXCEPTION RAISED - TRAILING 'HT'" );
251 END;
253 BEGIN
254 IF ENUM'VALUE (IDENT_STR("B__C")) /= BC THEN
255 FAILED ( "NO EXCEPTION RAISED - " &
256 "CONSECUTIVE UNDERSCORES - 1" );
257 ELSE
258 FAILED ( "NO EXCEPTION RAISED - " &
259 "CONSECUTIVE UNDERSCORES - 2" );
260 END IF;
261 EXCEPTION
262 WHEN CONSTRAINT_ERROR =>
263 NULL;
264 WHEN OTHERS =>
265 FAILED ( "WRONG EXCEPTION RAISED - " &
266 "CONSECUTIVE UNDERSCORES" );
267 END;
269 BEGIN
270 IF NEWENUM'VALUE (IDENT_STR("BC_")) /= BC THEN
271 FAILED ( "NO EXCEPTION RAISED - " &
272 "TRAILING UNDERSCORE - 1" );
273 ELSE
274 FAILED ( "NO EXCEPTION RAISED - " &
275 "TRAILING UNDERSCORE - 2" );
276 END IF;
277 EXCEPTION
278 WHEN CONSTRAINT_ERROR =>
279 NULL;
280 WHEN OTHERS =>
281 FAILED ( "WRONG EXCEPTION RAISED - " &
282 "TRAILING UNDERSCORE" );
283 END;
285 BEGIN
286 IF SUBENUM'VALUE (IDENT_STR("_BC")) /= BC THEN
287 FAILED ( "NO EXCEPTION RAISED - " &
288 "LEADING UNDERSCORE - 1" );
289 ELSE
290 FAILED ( "NO EXCEPTION RAISED - " &
291 "LEADING UNDERSCORE - 2" );
292 END IF;
293 EXCEPTION
294 WHEN CONSTRAINT_ERROR =>
295 NULL;
296 WHEN OTHERS =>
297 FAILED ( "WRONG EXCEPTION RAISED - " &
298 "LEADING UNDERSCORE" );
299 END;
301 BEGIN
302 IF SUBENUM'VALUE (IDENT_STR("0BC")) /= BC THEN
303 FAILED ( "NO EXCEPTION RAISED - " &
304 "FIRST CHARACTER IS A DIGIT - 1" );
305 ELSE
306 FAILED ( "NO EXCEPTION RAISED - " &
307 "FIRST CHARACTER IS A DIGIT - 2" );
308 END IF;
309 EXCEPTION
310 WHEN CONSTRAINT_ERROR =>
311 NULL;
312 WHEN OTHERS =>
313 FAILED ( "WRONG EXCEPTION RAISED - " &
314 "FIRST CHARACTER IS A DIGIT" );
315 END;
317 RESULT;
318 END C35502C;