Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / ada / acats / tests / c7 / c74004a.ada
blobf2a016b096b30c40326b76624ee627159d7e620f
1 -- C74004A.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 OPERATIONS DEPENDING ON THE FULL DECLARATION OF A
27 -- PRIVATE TYPE ARE AVAILABLE WITHIN THE PACKAGE BODY.
29 -- HISTORY:
30 -- BCB 04/05/88 CREATED ORIGINAL TEST.
31 -- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
33 WITH REPORT; USE REPORT;
35 PROCEDURE C74004A IS
37 PACKAGE P IS
38 TYPE PR IS PRIVATE;
39 TYPE ARR1 IS LIMITED PRIVATE;
40 TYPE ARR2 IS PRIVATE;
41 TYPE REC (D : INTEGER) IS PRIVATE;
42 TYPE ACC IS PRIVATE;
43 TYPE TSK IS LIMITED PRIVATE;
44 TYPE FLT IS LIMITED PRIVATE;
45 TYPE FIX IS LIMITED PRIVATE;
47 TASK TYPE T IS
48 ENTRY ONE(V : IN OUT INTEGER);
49 END T;
51 PROCEDURE CHECK (V : ARR2);
52 PRIVATE
53 TYPE PR IS NEW INTEGER;
55 TYPE ARR1 IS ARRAY(1..5) OF INTEGER;
57 TYPE ARR2 IS ARRAY(1..5) OF BOOLEAN;
59 TYPE REC (D : INTEGER) IS RECORD
60 COMP1 : INTEGER;
61 COMP2 : BOOLEAN;
62 END RECORD;
64 TYPE ACC IS ACCESS INTEGER;
66 TYPE TSK IS NEW T;
68 TYPE FLT IS DIGITS 5;
70 TYPE FIX IS DELTA 2.0**(-1) RANGE -100.0 .. 100.0;
71 END P;
73 PACKAGE BODY P IS
74 X1, X2, X3 : PR;
75 BOOL : BOOLEAN := IDENT_BOOL(FALSE);
76 VAL : INTEGER := IDENT_INT(0);
77 FVAL : FLOAT := 0.0;
78 ST : STRING(1..2);
79 O1 : ARR1 := (1,2,3,4,5);
80 Y1 : ARR2 := (FALSE,TRUE,FALSE,TRUE,FALSE);
81 Y2 : ARR2 := (OTHERS => TRUE);
82 Y3 : ARR2 := (OTHERS => FALSE);
83 Z1 : REC(0) := (0,1,FALSE);
84 W1, W2 : ACC := NEW INTEGER'(0);
85 V1 : TSK;
87 TASK BODY T IS
88 BEGIN
89 ACCEPT ONE(V : IN OUT INTEGER) DO
90 V := IDENT_INT(10);
91 END ONE;
92 END T;
94 PROCEDURE CHECK (V : ARR2) IS
95 BEGIN
96 IF V /= (TRUE,FALSE,TRUE,FALSE,TRUE) THEN
97 FAILED ("IMPROPER VALUE PASSED AS AGGREGATE");
98 END IF;
99 END CHECK;
100 BEGIN
101 TEST ("C74004A", "CHECK THAT OPERATIONS DEPENDING ON THE " &
102 "FULL DECLARATION OF A PRIVATE TYPE ARE " &
103 "AVAILABLE WITHIN THE PACKAGE BODY");
105 X1 := 10;
106 X2 := 5;
108 X3 := X1 + X2;
110 IF X3 /= 15 THEN
111 FAILED ("IMPROPER RESULT FROM ADDITION OPERATOR");
112 END IF;
114 X3 := X1 - X2;
116 IF X3 /= 5 THEN
117 FAILED ("IMPROPER RESULT FROM SUBTRACTION OPERATOR");
118 END IF;
120 X3 := X1 * X2;
122 IF X3 /= 50 THEN
123 FAILED ("IMPROPER RESULT FROM MULTIPLICATION OPERATOR");
124 END IF;
126 X3 := X1 / X2;
128 IF X3 /= 2 THEN
129 FAILED ("IMPROPER RESULT FROM DIVISION OPERATOR");
130 END IF;
132 X3 := X1 ** 2;
134 IF X3 /= 100 THEN
135 FAILED ("IMPROPER RESULT FROM EXPONENTIATION OPERATOR");
136 END IF;
138 BOOL := X1 < X2;
140 IF BOOL THEN
141 FAILED ("IMPROPER RESULT FROM LESS THAN OPERATOR");
142 END IF;
144 BOOL := X1 > X2;
146 IF NOT BOOL THEN
147 FAILED ("IMPROPER RESULT FROM GREATER THAN OPERATOR");
148 END IF;
150 BOOL := X1 <= X2;
152 IF BOOL THEN
153 FAILED ("IMPROPER RESULT FROM LESS THAN OR EQUAL TO " &
154 "OPERATOR");
155 END IF;
157 BOOL := X1 >= X2;
159 IF NOT BOOL THEN
160 FAILED ("IMPROPER RESULT FROM GREATER THAN OR EQUAL " &
161 "TO OPERATOR");
162 END IF;
164 X3 := X1 MOD X2;
166 IF X3 /= 0 THEN
167 FAILED ("IMPROPER RESULT FROM MOD OPERATOR");
168 END IF;
170 X3 := X1 REM X2;
172 IF X3 /= 0 THEN
173 FAILED ("IMPROPER RESULT FROM REM OPERATOR");
174 END IF;
176 X3 := ABS(X1);
178 IF X3 /= 10 THEN
179 FAILED ("IMPROPER RESULT FROM ABS OPERATOR - 1");
180 END IF;
182 X1 := -10;
184 X3 := ABS(X1);
186 IF X3 /= 10 THEN
187 FAILED ("IMPROPER RESULT FROM ABS OPERATOR - 2");
188 END IF;
190 X3 := PR'BASE'FIRST;
192 IF X3 /= PR(INTEGER'FIRST) THEN
193 FAILED ("IMPROPER RESULT FROM 'BASE'FIRST");
194 END IF;
196 X3 := PR'FIRST;
198 IF X3 /= PR(INTEGER'FIRST) THEN
199 FAILED ("IMPROPER RESULT FROM 'FIRST");
200 END IF;
202 VAL := PR'WIDTH;
204 IF NOT EQUAL(VAL,INTEGER'WIDTH) THEN
205 FAILED ("IMPROPER RESULT FROM 'WIDTH");
206 END IF;
208 VAL := PR'POS(X3);
210 IF NOT EQUAL(VAL,INTEGER'FIRST) THEN
211 FAILED ("IMPROPER RESULT FROM 'POS");
212 END IF;
214 X3 := PR'VAL(VAL);
216 IF X3 /= PR(INTEGER'FIRST) THEN
217 FAILED ("IMPROPER RESULT FROM 'VAL");
218 END IF;
220 X3 := PR'SUCC(X2);
222 IF X3 /= 6 THEN
223 FAILED ("IMPROPER RESULT FROM 'SUCC");
224 END IF;
226 X3 := PR'PRED(X2);
228 IF X3 /= 4 THEN
229 FAILED ("IMPROPER RESULT FROM 'PRED");
230 END IF;
232 ST := PR'IMAGE(X3);
234 IF ST /= INTEGER'IMAGE(INTEGER(X3)) THEN
235 FAILED ("IMPROPER RESULT FROM 'IMAGE");
236 END IF;
238 X3 := PR'VALUE(ST);
240 IF X3 /= PR(INTEGER'VALUE(ST)) THEN
241 FAILED ("IMPROPER RESULT FROM 'VALUE");
242 END IF;
244 CHECK ((TRUE,FALSE,TRUE,FALSE,TRUE));
246 IF O1(2) /= IDENT_INT(2) THEN
247 FAILED ("IMPROPER VALUE FROM INDEXING");
248 END IF;
250 IF O1(2..4) /= (2,3,4) THEN
251 FAILED ("IMPROPER VALUES FROM SLICING");
252 END IF;
254 IF VAL IN O1'RANGE THEN
255 FAILED ("IMPROPER RESULT FROM 'RANGE");
256 END IF;
258 VAL := O1'LENGTH;
260 IF NOT EQUAL(VAL,5) THEN
261 FAILED ("IMPROPER RESULT FROM 'LENGTH");
262 END IF;
264 Y3 := Y1(1..2) & Y2(3..5);
266 IF Y3 /= (FALSE,TRUE,TRUE,TRUE,TRUE) THEN
267 FAILED ("IMPROPER RESULT FROM CATENATION");
268 END IF;
270 Y3 := NOT Y1;
272 IF Y3 /= (TRUE,FALSE,TRUE,FALSE,TRUE) THEN
273 FAILED ("IMPROPER RESULT FROM NOT OPERATOR");
274 END IF;
276 Y3 := Y1 AND Y2;
278 IF Y3 /= (FALSE,TRUE,FALSE,TRUE,FALSE) THEN
279 FAILED ("IMPROPER RESULT FROM AND OPERATOR");
280 END IF;
282 Y3 := Y1 OR Y2;
284 IF Y3 /= (TRUE,TRUE,TRUE,TRUE,TRUE) THEN
285 FAILED ("IMPROPER RESULT FROM OR OPERATOR");
286 END IF;
288 Y3 := Y1 XOR Y2;
290 IF Y3 /= (TRUE,FALSE,TRUE,FALSE,TRUE) THEN
291 FAILED ("IMPROPER RESULT FROM XOR OPERATOR");
292 END IF;
294 VAL := Z1.COMP1;
296 IF NOT EQUAL(VAL,1) THEN
297 FAILED ("IMPROPER RESULT FROM SELECTION OF RECORD " &
298 "COMPONENTS");
299 END IF;
301 W1 := NEW INTEGER'(0);
303 IF NOT EQUAL(W1.ALL,0) THEN
304 FAILED ("IMPROPER RESULT FROM ALLOCATION");
305 END IF;
307 W1 := NULL;
309 IF W1 /= NULL THEN
310 FAILED ("IMPROPER RESULT FROM NULL LITERAL");
311 END IF;
313 VAL := W2.ALL;
315 IF NOT EQUAL(VAL,0) THEN
316 FAILED ("IMPROPER RESULT FROM SELECTED COMPONENT");
317 END IF;
319 BOOL := V1'CALLABLE;
321 IF NOT BOOL THEN
322 FAILED ("IMPROPER RESULT FROM 'CALLABLE");
323 END IF;
325 BOOL := V1'TERMINATED;
327 IF BOOL THEN
328 FAILED ("IMPROPER RESULT FROM 'TERMINATED");
329 END IF;
331 V1.ONE(VAL);
333 IF NOT EQUAL(VAL,10) THEN
334 FAILED ("IMPROPER RESULT RETURNED FROM ENTRY SELECTION");
335 END IF;
337 IF NOT (FLT(1.0) IN FLT) THEN
338 FAILED ("IMPROPER RESULT FROM IMPLICIT CONVERSION");
339 END IF;
341 VAL := FLT'DIGITS;
343 IF NOT EQUAL(VAL,5) THEN
344 FAILED ("IMPROPER RESULT FROM 'DIGITS");
345 END IF;
347 BOOL := FLT'MACHINE_ROUNDS;
349 BOOL := FLT'MACHINE_OVERFLOWS;
351 VAL := FLT'MACHINE_RADIX;
353 VAL := FLT'MACHINE_MANTISSA;
355 VAL := FLT'MACHINE_EMAX;
357 VAL := FLT'MACHINE_EMIN;
359 FVAL := FIX'DELTA;
361 IF FVAL /= 2.0**(-1) THEN
362 FAILED ("IMPROPER RESULT FROM 'DELTA");
363 END IF;
365 VAL := FIX'FORE;
367 VAL := FIX'AFT;
369 END P;
371 USE P;
373 BEGIN
374 RESULT;
375 END C74004A;