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 IF AN INDEX CONSTRAINT DEPENDS ON A DISCRIMINANT,
27 -- THE DISCRIMINANT VALUE IS CHECKED FOR COMPATIBILITY WHEN THE
30 -- CASE D: CONSTRAINED BY DEFAULT AND THE COMPONENT IS
31 -- PRESENT IN THE SUBTYPE.
34 -- JBG 10/17/86 CREATED ORIGINAL TEST.
35 -- RJW 10/13/87 CORRECTED VARIOUS CONSTRAINT ERRORS IN 'CASE D1'.
36 -- VCL 03/30/88 CORRECTED VARIOUS CONSTRAINT ERRORS WITH TYPE
37 -- DECLARATIONS THROUGHOUT THE TEST. ADDED SEQUENCE
40 WITH REPORT
; USE REPORT
;
43 SUBTYPE SM
IS INTEGER RANGE 1..10;
44 TYPE MY_ARR
IS ARRAY (SM
RANGE <>) OF INTEGER;
46 SEQUENCE_NUMBER
: INTEGER;
48 TEST
("C37215H", "THE DISCRIMINANT VALUES OF AN INDEX " &
49 "CONSTRAINT ARE PROPERLY CHECK FOR " &
50 "COMPATIBILITY WHEN THE DISCRIMINANT IS " &
51 "DEFINED BY DEFAULT AND THE COMPONENT IS AND " &
52 "IS NOT PRESENT IN THE SUBTYPE");
54 -- CASE D1: COMPONENT IS PRESENT
58 TYPE CONS
(D3
: INTEGER := IDENT_INT
(0)) IS
64 C2
: INTEGER := IDENT_INT
(0);
72 FAILED
("INDEX CHECK NOT PERFORMED - 1");
73 IF X
/= (1, (1, 1)) THEN
74 COMMENT
("SHOULDN'T GET HERE");
78 WHEN CONSTRAINT_ERROR
=>
81 FAILED
("UNEXPECTED EXCEPTION RAISED - 1");
86 SUBTYPE SCONS
IS CONS
;
91 FAILED
("INDEX CHECK NOT PERFORMED - 2");
92 IF X
/= (1, (1, 1)) THEN
93 COMMENT
("IRRELEVANT");
97 WHEN CONSTRAINT_ERROR
=>
100 FAILED
("UNEXPECTED EXCEPTION RAISED - 2A");
104 FAILED
("UNEXPECTED EXCEPTION RAISED - 2B");
109 TYPE ARR
IS ARRAY (1..5) OF CONS
;
114 FAILED
("INDEX CHECK NOT PERFORMED - 3");
115 IF X
/= (1..5 => (1, (1, 1))) THEN
116 COMMENT
("IRRELEVANT");
120 WHEN CONSTRAINT_ERROR
=>
123 FAILED
("UNEXPECTED EXCEPTION RAISED - 3A");
127 FAILED
("UNEXPECTED EXCEPTION RAISED - 3B");
140 FAILED
("INDEX CHECK NOT PERFORMED - 4");
141 IF X
/= (C1
=> (1, (1, 1))) THEN
142 COMMENT
("IRRELEVANT");
146 WHEN CONSTRAINT_ERROR
=>
149 FAILED
("UNEXPECTED EXCEPTION RAISED - 4A");
153 FAILED
("UNEXPECTED EXCEPTION RAISED - 4B");
158 TYPE NREC
IS NEW CONS
;
163 FAILED
("INDEX CHECK NOT PERFORMED - 5");
164 IF X
/= (1, (1, 1)) THEN
165 COMMENT
("IRRELEVANT");
169 WHEN CONSTRAINT_ERROR
=>
172 FAILED
("UNEXPECTED EXCEPTION RAISED - 5A");
176 FAILED
("UNEXPECTED EXCEPTION RAISED - 5B");
181 TYPE ACC_CONS
IS ACCESS CONS
;
187 FAILED
("INDEX CHECK NOT PERFORMED - 6");
188 IF X
.ALL /= (1, (1, 1)) THEN
189 COMMENT
("WRONG VALUE FOR X - 6");
192 WHEN CONSTRAINT_ERROR
=>
195 FAILED
("UNEXPECTED EXCEPTION RAISED " &
200 FAILED
("UNEXPECTED EXCEPTION RAISED - 6B");
204 FAILED
("UNEXPECTED EXCEPTION RAISED - 6C");
208 -- CASE D2: COMPONENT IS ABSENT
210 SEQUENCE_NUMBER
:= 2;
212 TYPE CONS
(D3
: INTEGER := IDENT_INT
(11)) IS
216 C1
: MY_ARR
(IDENT_INT
(2)..D3
);
218 C2
: INTEGER := IDENT_INT
(5);
227 COMMENT
("X VALUE IS INCORRECT - 11");
231 WHEN CONSTRAINT_ERROR
=>
234 FAILED
("UNEXPECTED EXCEPTION RAISED - 11");
239 SUBTYPE SCONS
IS CONS
;
245 FAILED
("X VALUE INCORRECT - 12");
250 FAILED
("UNEXPECTED EXCEPTION RAISED - 12A");
254 FAILED
("UNEXPECTED EXCEPTION RAISED - 12B");
259 TYPE ARR
IS ARRAY (1..5) OF CONS
;
264 IF X
/= (1..5 => (11, 5)) THEN
265 FAILED
("X VALUE INCORRECT - 13");
270 FAILED
("UNEXPECTED EXCEPTION RAISED - 13A");
274 FAILED
("UNEXPECTED EXCEPTION RAISED - 13B");
287 IF X
/= (C1
=> (11, 5)) THEN
288 FAILED
("X VALUE INCORRECT - 14");
293 FAILED
("UNEXPECTED EXCEPTION RAISED - 14A");
297 FAILED
("UNEXPECTED EXCEPTION RAISED - 14B");
302 TYPE NREC
IS NEW CONS
;
308 FAILED
("X VALUE INCORRECT - 15");
313 FAILED
("UNEXPECTED EXCEPTION RAISED - 15A");
317 FAILED
("UNEXPECTED EXCEPTION RAISED - 15B");
322 TYPE ACC_CONS
IS ACCESS CONS
;
326 IF X
.ALL /= (11, 5) THEN
327 FAILED
("X VALUE INCORRECT - 17");
331 FAILED
("UNEXPECTED EXCEPTION RAISED - 17A");
335 FAILED
("UNEXPECTED EXCEPTION RAISED - 17B");
342 FAILED
("INDEX VALUES CHECKED TOO SOON - " &
343 INTEGER'IMAGE(SEQUENCE_NUMBER
));