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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE
27 -- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY,
28 -- (D) CHECK OBJECTS DESIGNATED BY ACCESS TYPES.
31 -- TBN 07/10/86 CREATED ORIGINAL TEST.
32 -- JET 08/04/87 MODIFIED PTR.A REFERENCES.
34 WITH REPORT
; USE REPORT
;
38 TEST
("C64109J", "CHECK THAT SLICES OF ARRAYS WHICH ARE " &
39 "COMPONENTS OF RECORDS ARE PASSED CORRECTLY " &
40 "TO SUBPROGRAMS - OBJECTS DESIGNATED BY ACCESS " &
45 SUBTYPE INDEX
IS INTEGER RANGE 1..5;
46 TYPE ARRAY_TYPE
IS ARRAY (INDEX
RANGE <>) OF INTEGER;
47 SUBTYPE ARRAY_SUBTYPE
IS ARRAY_TYPE
(1..IDENT_INT
(5));
49 TYPE ACCESS_TYPE
IS ACCESS NODE_TYPE
;
55 PTR
: ACCESS_TYPE
:= NEW NODE_TYPE
'
56 (A => (IDENT_INT(1)..5 => IDENT_INT(5)),
60 PROCEDURE P1 (ARR : ARRAY_TYPE) IS
62 IF ARR /= (5, 5, 5) THEN
63 FAILED ("IN PARAM NOT PASSED CORRECTLY");
66 IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN
67 FAILED ("WRONG BOUNDS - IN PARAMETER");
71 FAILED ("EXCEPTION RAISED IN PROCEDURE P1");
74 FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS
76 IF ARR /= (5, 5, 5) THEN
77 FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN");
80 IF ARR'FIRST /= IDENT_INT(2) OR ARR'LAST /= 4 THEN
81 FAILED ("WRONG BOUNDS - IN PARAMETER FOR FN");
87 FAILED ("EXCEPTION RAISED IN FUNCTION F1");
90 PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS
92 IF ARR /= (5, 5, 5) THEN
93 FAILED ("IN OUT PARAM NOT PASSED CORRECTLY");
96 IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN
97 FAILED ("WRONG BOUNDS - IN OUT PARAMETER");
100 ARR := (ARR'RANGE => 6);
103 FAILED ("EXCEPTION RAISED IN PROCEDURE P2");
106 PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS
109 IF ARR'FIRST /= IDENT_INT(3) OR ARR'LAST /= 5 THEN
110 FAILED ("WRONG BOUNDS - OUT PARAMETER");
113 ARR := (ARR'RANGE => 7);
116 FAILED ("EXCEPTION RAISED IN PROCEDURE P3");
123 IF PTR.A /= (5, 5, 5, 5, 5) THEN
124 FAILED ("IN PARAM CHANGED BY PROCEDURE");
128 FAILED ("EXCEPTION RAISED DURING CALL OF P1");
132 BOOL := F1 (PTR.A (2..4));
133 IF PTR.A /= (5, 5, 5, 5, 5) THEN
134 FAILED ("IN PARAM CHANGED BY FUNCTION");
138 FAILED ("EXCEPTION RAISED DURING CALL OF F1");
143 IF PTR.A /= (6, 6, 6, 5, 5) THEN
144 FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY");
148 FAILED ("EXCEPTION RAISED DURING CALL OF P2");
153 IF PTR.A /= (6, 6, 7, 7, 7) THEN
154 FAILED ("OUT PARAM NOT RETURNED CORRECTLY");
158 FAILED ("EXCEPTION RAISED DURING CALL OF P3");