3 -- Grant of Unlimited Rights
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
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.
26 -- CHECK THAT THE REQUIRED PREDEFINED OPERATIONS ARE DECLARED
27 -- (IMPLICITLY) FOR DERIVED ONE-DIMENSIONAL ARRAY TYPES
28 -- WHOSE COMPONENT TYPE IS A BOOLEAN TYPE.
31 -- JRK 9/16/86 CREATED ORIGINAL TEST.
32 -- RJW 8/21/89 MODIFIED CHECKS FOR TYPE AND OBJECT SIZES.
33 -- PWN 11/30/94 REMOVED 'BASE USE ILLEGAL IN ADA 9X.
35 WITH SYSTEM
; USE SYSTEM
;
36 WITH REPORT
; USE REPORT
;
40 SUBTYPE COMPONENT
IS BOOLEAN;
44 FIRST
: CONSTANT := 0;
45 LAST
: CONSTANT := 100;
47 SUBTYPE INDEX
IS INTEGER RANGE FIRST
.. LAST
;
49 TYPE PARENT
IS ARRAY (INDEX
RANGE <>) OF COMPONENT
;
51 FUNCTION CREATE
( F
, L
: INDEX
;
53 DUMMY
: PARENT
-- TO RESOLVE OVERLOADING.
60 TYPE T
IS NEW PARENT
(IDENT_INT
(5) .. IDENT_INT
(7));
62 TYPE ARRT
IS ARRAY (INTEGER RANGE <>) OF COMPONENT
;
63 SUBTYPE ARR
IS ARRT
(2 .. 4);
65 X
: T
:= (OTHERS => TRUE);
66 W
: PARENT
(5 .. 7) := (OTHERS => TRUE);
67 C
: COMPONENT
:= FALSE;
69 U
: ARR
:= (OTHERS => C
);
72 PROCEDURE A
(X
: ADDRESS
) IS
74 B
:= IDENT_BOOL
(TRUE);
77 FUNCTION V
RETURN T
IS
102 FUNCTION IDENT
(X
: T
) RETURN T
IS
104 IF EQUAL
(X
'LENGTH, X
'LENGTH) THEN
105 RETURN X
; -- ALWAYS EXECUTED.
107 RETURN (OTHERS => FALSE);
111 TEST
("C34005J", "CHECK THAT THE REQUIRED PREDEFINED OPERATIONS " &
112 "ARE DECLARED (IMPLICITLY) FOR DERIVED " &
113 "ONE-DIMENSIONAL ARRAY TYPES WHOSE COMPONENT " &
114 "TYPE IS A BOOLEAN TYPE");
116 X
:= IDENT
((TRUE, FALSE, TRUE));
117 IF X
/= (TRUE, FALSE, TRUE) THEN
118 FAILED
("INCORRECT :=");
121 IF T
'(X) /= (TRUE, FALSE, TRUE) THEN
122 FAILED ("INCORRECT QUALIFICATION");
125 IF T (X) /= (TRUE, FALSE, TRUE) THEN
126 FAILED ("INCORRECT SELF CONVERSION");
130 W := (TRUE, FALSE, TRUE);
132 IF T (W) /= (TRUE, FALSE, TRUE) THEN
133 FAILED ("INCORRECT CONVERSION FROM PARENT");
137 IF PARENT (X) /= (TRUE, FALSE, TRUE) OR
138 PARENT (CREATE (2, 3, FALSE, X)) /= (FALSE, TRUE) THEN
139 FAILED ("INCORRECT CONVERSION TO PARENT");
142 WHEN CONSTRAINT_ERROR =>
143 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 1");
145 FAILED ("CALL TO CREATE RAISED EXCEPTION - 1");
149 U := (TRUE, FALSE, TRUE);
151 IF T (U) /= (TRUE, FALSE, TRUE) THEN
152 FAILED ("INCORRECT CONVERSION FROM ARRAY");
156 IF ARR (X) /= (TRUE, FALSE, TRUE) OR
157 ARRT (CREATE (1, 2, TRUE, X)) /= (TRUE, FALSE) THEN
158 FAILED ("INCORRECT CONVERSION TO ARRAY");
161 WHEN CONSTRAINT_ERROR =>
162 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 2");
164 FAILED ("CALL TO CREATE RAISED EXCEPTION - 2");
167 IF IDENT ((TRUE, FALSE, TRUE)) /= (TRUE, FALSE, TRUE) OR
168 X = (TRUE, FALSE) THEN
169 FAILED ("INCORRECT AGGREGATE");
173 IF X (IDENT_INT (5)) /= TRUE OR
174 CREATE (2, 3, FALSE, X) (3) /= TRUE THEN
175 FAILED ("INCORRECT INDEX (VALUE)");
178 WHEN CONSTRAINT_ERROR =>
179 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 3");
181 FAILED ("CALL TO CREATE RAISED EXCEPTION - 3");
184 X (IDENT_INT (7)) := FALSE;
185 IF X /= (TRUE, FALSE, FALSE) THEN
186 FAILED ("INCORRECT INDEX (ASSIGNMENT)");
190 X := IDENT ((TRUE, FALSE, TRUE));
191 IF X (IDENT_INT (6) .. IDENT_INT (7)) /= (FALSE, TRUE) OR
192 CREATE (1, 4, FALSE, X) (1 .. 3) /=
193 (FALSE, TRUE, FALSE) THEN
194 FAILED ("INCORRECT SLICE (VALUE)");
197 WHEN CONSTRAINT_ERROR =>
198 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 4");
200 FAILED ("CALL TO CREATE RAISED EXCEPTION - 4");
203 X (IDENT_INT (5) .. IDENT_INT (6)) := (FALSE, TRUE);
204 IF X /= (FALSE, TRUE, TRUE) THEN
205 FAILED ("INCORRECT SLICE (ASSIGNMENT)");
209 X := IDENT ((TRUE, FALSE, TRUE));
210 IF NOT X /= (FALSE, TRUE, FALSE) OR
211 NOT CREATE (2, 3, FALSE, X) /= (TRUE, FALSE) THEN
212 FAILED ("INCORRECT ""NOT""");
215 WHEN CONSTRAINT_ERROR =>
216 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 5");
218 FAILED ("CALL TO CREATE RAISED EXCEPTION - 5");
222 IF (X AND IDENT ((TRUE, TRUE, FALSE))) /=
223 (TRUE, FALSE, FALSE) OR
224 (CREATE (1, 4, FALSE, X) AND
225 (FALSE, FALSE, TRUE, TRUE)) /=
226 (FALSE, FALSE, FALSE, TRUE) THEN
227 FAILED ("INCORRECT ""AND""");
230 WHEN CONSTRAINT_ERROR =>
231 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 6");
233 FAILED ("CALL TO CREATE RAISED EXCEPTION - 6");
237 IF (X OR IDENT ((TRUE, FALSE, FALSE))) /=
238 (TRUE, FALSE, TRUE) OR
239 (CREATE (1, 4, FALSE, X) OR (FALSE, FALSE, TRUE, TRUE)) /=
240 (FALSE, TRUE, TRUE, TRUE) THEN
241 FAILED ("INCORRECT ""OR""");
244 WHEN CONSTRAINT_ERROR =>
245 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 7");
247 FAILED ("CALL TO CREATE RAISED EXCEPTION - 7");
251 IF (X XOR IDENT ((TRUE, TRUE, FALSE))) /=
252 (FALSE, TRUE, TRUE) OR
253 (CREATE (1, 4, FALSE, X) XOR
254 (FALSE, FALSE, TRUE, TRUE)) /=
255 (FALSE, TRUE, TRUE, FALSE) THEN
256 FAILED ("INCORRECT ""XOR""");
259 WHEN CONSTRAINT_ERROR =>
260 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 8");
262 FAILED ("CALL TO CREATE RAISED EXCEPTION - 8");
265 IF X = IDENT ((TRUE, FALSE, FALSE)) OR X = (TRUE, FALSE) THEN
266 FAILED ("INCORRECT =");
269 IF X /= IDENT ((TRUE, FALSE, TRUE)) OR
270 NOT (X /= (FALSE, TRUE)) THEN
271 FAILED ("INCORRECT /=");
274 IF X < IDENT ((TRUE, FALSE, TRUE)) OR X < (TRUE, FALSE) THEN
275 FAILED ("INCORRECT <");
278 IF X > IDENT ((TRUE, FALSE, TRUE)) OR X > (TRUE, TRUE) THEN
279 FAILED ("INCORRECT >");
282 IF X <= IDENT ((TRUE, FALSE, FALSE)) OR
283 X <= (TRUE, FALSE, FALSE, TRUE) THEN
284 FAILED ("INCORRECT <=");
287 IF X >= IDENT ((TRUE, TRUE, FALSE)) OR
288 X >= (TRUE, FALSE, TRUE, FALSE) THEN
289 FAILED ("INCORRECT >=");
292 IF NOT (X IN T) OR (TRUE, FALSE) IN T THEN
293 FAILED ("INCORRECT ""IN""");
296 IF X NOT IN T OR NOT ((TRUE, FALSE) NOT IN T) THEN
297 FAILED ("INCORRECT ""NOT IN""");
301 IF X & (FALSE, TRUE, FALSE) /=
302 (TRUE, FALSE, TRUE, FALSE, TRUE, FALSE) OR
303 CREATE (2, 3, FALSE, X) & (FALSE, TRUE) /=
304 (FALSE, TRUE, FALSE, TRUE) THEN
305 FAILED ("INCORRECT & (ARRAY, ARRAY)");
308 WHEN CONSTRAINT_ERROR =>
309 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 9");
311 FAILED ("CALL TO CREATE RAISED EXCEPTION - 9");
315 IF X & FALSE /= (TRUE, FALSE, TRUE, FALSE) OR
316 CREATE (2, 3, FALSE, X) & FALSE /=
317 (FALSE, TRUE, FALSE) THEN
318 FAILED ("INCORRECT & (ARRAY, COMPONENT)");
321 WHEN CONSTRAINT_ERROR =>
322 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 10");
324 FAILED ("CALL TO CREATE RAISED EXCEPTION - 10");
328 IF FALSE & X /= (FALSE, TRUE, FALSE, TRUE) OR
329 FALSE & CREATE (2, 3, TRUE, X) /=
330 (FALSE, TRUE, FALSE) THEN
331 FAILED ("INCORRECT & (COMPONENT, ARRAY)");
334 WHEN CONSTRAINT_ERROR =>
335 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 11");
337 FAILED ("CALL TO CREATE RAISED EXCEPTION - 11");
345 IF C & TRUE /= CREATE (2, 3, FALSE, X) THEN
346 FAILED ("INCORRECT & (COMPONENT, COMPONENT)");
349 WHEN CONSTRAINT_ERROR =>
350 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 12");
352 FAILED ("CALL TO CREATE RAISED EXCEPTION - 12");
358 FAILED ("INCORRECT 'ADDRESS
");
362 FAILED ("INCORRECT
TYPE'FIRST");
366 FAILED ("INCORRECT OBJECT
'FIRST");
370 FAILED ("INCORRECT VALUE
'FIRST");
373 IF T'FIRST (N) /= 5 THEN
374 FAILED ("INCORRECT
TYPE'FIRST (N
)");
377 IF X'FIRST (N) /= 5 THEN
378 FAILED ("INCORRECT OBJECT
'FIRST (N
)");
381 IF V'FIRST (N) /= 5 THEN
382 FAILED ("INCORRECT VALUE
'FIRST (N
)");
386 FAILED ("INCORRECT
TYPE'LAST");
390 FAILED ("INCORRECT OBJECT
'LAST");
394 FAILED ("INCORRECT VALUE
'LAST");
397 IF T'LAST (N) /= 7 THEN
398 FAILED ("INCORRECT
TYPE'LAST (N
)");
401 IF X'LAST (N) /= 7 THEN
402 FAILED ("INCORRECT OBJECT
'LAST (N
)");
405 IF V'LAST (N) /= 7 THEN
406 FAILED ("INCORRECT VALUE
'LAST (N
)");
409 IF T'LENGTH /= 3 THEN
410 FAILED ("INCORRECT
TYPE'LENGTH");
413 IF X'LENGTH /= 3 THEN
414 FAILED ("INCORRECT OBJECT
'LENGTH");
417 IF V'LENGTH /= 3 THEN
418 FAILED ("INCORRECT VALUE
'LENGTH");
421 IF T'LENGTH (N) /= 3 THEN
422 FAILED ("INCORRECT
TYPE'LENGTH (N
)");
425 IF X'LENGTH (N) /= 3 THEN
426 FAILED ("INCORRECT OBJECT
'LENGTH (N
)");
429 IF V'LENGTH (N) /= 3 THEN
430 FAILED ("INCORRECT VALUE
'LENGTH (N
)");
434 Y : PARENT (T'RANGE);
436 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
437 FAILED ("INCORRECT
TYPE'RANGE");
442 Y : PARENT (X'RANGE);
444 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
445 FAILED ("INCORRECT OBJECT
'RANGE");
450 Y : PARENT (V'RANGE);
452 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
453 FAILED ("INCORRECT VALUE
'RANGE");
458 Y : PARENT (T'RANGE (N));
460 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
461 FAILED ("INCORRECT
TYPE'RANGE (N
)");
466 Y : PARENT (X'RANGE (N));
468 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
469 FAILED ("INCORRECT OBJECT
'RANGE (N
)");
474 Y : PARENT (V'RANGE (N));
476 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
477 FAILED ("INCORRECT VALUE
'RANGE (N
)");