Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / ada / acats / tests / cd / cd2a24e.ada
blobfcb0087b0c6da4f7f38e8a2b240fbbd5b6305204
1 -- CD2A24E.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 IF A SIZE CLAUSE AND AN ENUMERATION
27 -- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE,
28 -- AND THE SMALLEST SIZE APPROPRIATE FOR AN UNSIGNED REPRESENTATION
29 -- IS SPECIFIED, THEN OPERATIONS ON THE TYPE ARE NOT AFFECTED.
31 -- HISTORY:
32 -- JET 08/19/87 CREATED ORIGINAL TEST.
33 -- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
34 -- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES.
36 WITH REPORT; USE REPORT;
37 PROCEDURE CD2A24E IS
39 BASIC_SIZE : CONSTANT := 3;
41 TYPE CHECK_TYPE IS (ZERO, ONE, TWO);
43 FOR CHECK_TYPE USE (ZERO => 3, ONE => 4,
44 TWO => 5);
46 FOR CHECK_TYPE'SIZE USE BASIC_SIZE;
48 C0 : CHECK_TYPE := ZERO;
49 C1 : CHECK_TYPE := ONE;
50 C2 : CHECK_TYPE := TWO;
52 TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE;
53 CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO);
55 TYPE REC_TYPE IS RECORD
56 COMP0 : CHECK_TYPE := ZERO;
57 COMP1 : CHECK_TYPE := ONE;
58 COMP2 : CHECK_TYPE := TWO;
59 END RECORD;
61 CHREC : REC_TYPE;
63 FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
64 BEGIN
65 IF EQUAL (3, 3) THEN
66 RETURN CH;
67 ELSE
68 RETURN ONE;
69 END IF;
70 END IDENT;
72 PROCEDURE PROC (CI0, CI2 : CHECK_TYPE;
73 CIO1, CIO2 : IN OUT CHECK_TYPE;
74 CO2 : OUT CHECK_TYPE) IS
75 BEGIN
76 IF NOT ((CI0 < IDENT (ONE)) AND
77 (IDENT (CI2) > IDENT (CIO1)) AND
78 (CIO1 <= IDENT (ONE)) AND(IDENT (TWO) = CI2)) THEN
79 FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " &
80 "- 1");
81 END IF;
83 IF CHECK_TYPE'POS (CI0) /= IDENT_INT (0) OR
84 CHECK_TYPE'POS (CIO1) /= IDENT_INT (1) OR
85 CHECK_TYPE'POS (CI2) /= IDENT_INT (2) THEN
86 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 1");
87 END IF;
89 IF CHECK_TYPE'SUCC (CI0) /= IDENT (CIO1) OR
90 CHECK_TYPE'SUCC (CIO1) /= IDENT (CI2) THEN
91 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 1");
92 END IF;
94 IF CHECK_TYPE'IMAGE (CI0) /= IDENT_STR ("ZERO") OR
95 CHECK_TYPE'IMAGE (CIO1) /= IDENT_STR ("ONE") OR
96 CHECK_TYPE'IMAGE (CI2) /= IDENT_STR ("TWO") THEN
97 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 1");
98 END IF;
101 CO2 := TWO;
103 END PROC;
105 BEGIN
106 TEST ("CD2A24E", "CHECK THAT IF A SIZE CLAUSE AND AN ENUMERATION " &
107 "REPRESENTATION CLAUSE ARE GIVEN FOR AN " &
108 "ENUMERATION TYPE, AND THE SMALLEST SIZE " &
109 "APPROPRIATE FOR AN UNSIGNED REPRESENTATION " &
110 "IS SPECIFIED, THEN OPERATIONS ON THE TYPE " &
111 "ARE NOT AFFECTED");
113 PROC (ZERO, TWO, C1, C2, C2);
115 IF C1 /= ONE OR C2 /= TWO THEN
116 FAILED ("INCORRECT VALUE RETURNED BY PROCEDURE");
117 END IF;
119 IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
120 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
121 END IF;
123 IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
124 FAILED ("INCORRECT VALUE FOR C0'SIZE");
125 END IF;
127 IF NOT ((IDENT (C1) IN C1 .. C2) AND
128 (C0 NOT IN IDENT (ONE) .. C2)) THEN
129 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2");
130 END IF;
132 IF CHECK_TYPE'FIRST /= IDENT (ZERO) THEN
133 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST - 2");
134 END IF;
136 IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR
137 CHECK_TYPE'VAL (1) /= IDENT (C1) OR
138 CHECK_TYPE'VAL (2) /= IDENT (C2) THEN
139 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 2");
140 END IF;
142 IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR
143 CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN
144 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 2");
145 END IF;
147 IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR
148 CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR
149 CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN
150 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 2");
151 END IF;
153 IF CHARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN
154 FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE");
155 END IF;
157 IF NOT ((CHARRAY (0) < IDENT (ONE)) AND
158 (IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND
159 (CHARRAY (1) <= IDENT (ONE)) AND
160 (IDENT (TWO) = CHARRAY (2))) THEN
161 FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3");
162 END IF;
164 IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND
165 (CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN
166 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3");
167 END IF;
169 IF CHECK_TYPE'POS (CHARRAY (0)) /= IDENT_INT (0) OR
170 CHECK_TYPE'POS (CHARRAY (1)) /= IDENT_INT (1) OR
171 CHECK_TYPE'POS (CHARRAY (2)) /= IDENT_INT (2) THEN
172 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 3");
173 END IF;
175 IF CHECK_TYPE'SUCC (CHARRAY (0)) /= IDENT (CHARRAY (1)) OR
176 CHECK_TYPE'SUCC (CHARRAY (1)) /= IDENT (CHARRAY (2)) THEN
177 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 3");
178 END IF;
180 IF CHECK_TYPE'IMAGE (CHARRAY (0)) /= IDENT_STR ("ZERO") OR
181 CHECK_TYPE'IMAGE (CHARRAY (1)) /= IDENT_STR ("ONE") OR
182 CHECK_TYPE'IMAGE (CHARRAY (2)) /= IDENT_STR ("TWO") THEN
183 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 3");
184 END IF;
186 IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN
187 FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE");
188 END IF;
190 IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND
191 (IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND
192 (CHREC.COMP1 <= IDENT (ONE)) AND
193 (IDENT (TWO) = CHREC.COMP2)) THEN
194 FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4");
195 END IF;
197 IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND
198 (CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN
199 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4");
200 END IF;
202 IF CHECK_TYPE'VAL (0) /= IDENT (CHREC.COMP0) OR
203 CHECK_TYPE'VAL (1) /= IDENT (CHREC.COMP1) OR
204 CHECK_TYPE'VAL (2) /= IDENT (CHREC.COMP2) THEN
205 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 4");
206 END IF;
208 IF CHECK_TYPE'PRED (CHREC.COMP1) /= IDENT (CHREC.COMP0) OR
209 CHECK_TYPE'PRED (CHREC.COMP2) /= IDENT (CHREC.COMP1) THEN
210 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 4");
211 END IF;
213 IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHREC.COMP0) OR
214 CHECK_TYPE'VALUE ("ONE") /= IDENT (CHREC.COMP1) OR
215 CHECK_TYPE'VALUE ("TWO") /= IDENT (CHREC.COMP2) THEN
216 FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 4");
217 END IF;
219 RESULT;
220 END CD2A24E;