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.
25 -- CHECK THAT THE ASSIGNMENT OF OVERLAPPING SOURCE AND TARGET VARIABLES
26 -- (INCLUDING ARRAYS AND SLICES IN VARIOUS COMBINATIONS) SATISFIES
27 -- THE SEMANTICS OF "COPY" ASSIGNMENT WHEN INITIAL ASSIGNMENT VALUES
28 -- REQUIRE RUN-TIME EVALUATION. (THIS TEST IS IN TWO PARTS,
29 -- COVERING RESPECTIVELY STATIC AND DYNAMIC BOUNDS.)
31 -- PART 2: DYNAMIC BOUNDS
44 IDENT_INT_0
: INTEGER := IDENT_INT
(0);
45 IDENT_INT_1
: INTEGER := IDENT_INT
(1);
46 IDENT_INT_2
: INTEGER := IDENT_INT
(2);
47 IDENT_INT_3
: INTEGER := IDENT_INT
(3);
48 IDENT_INT_4
: INTEGER := IDENT_INT
(4);
49 IDENT_INT_5
: INTEGER := IDENT_INT
(5);
50 IDENT_INT_6
: INTEGER := IDENT_INT
(6);
51 IDENT_INT_8
: INTEGER := IDENT_INT
(8);
52 IDENT_INT_9
: INTEGER := IDENT_INT
(9);
54 FUNCTION ID_I
(X
: INTEGER) RETURN INTEGER RENAMES IDENT_INT
;
55 FUNCTION ID_B
(X
: BOOLEAN) RETURN BOOLEAN RENAMES IDENT_BOOL
;
60 TEST
( "C52102D" , "CHECK THAT THE ASSIGNMENT OF OVERLAPPING " &
61 "SOURCE AND TARGET VARIABLES (INCLUDING " &
62 "ARRAYS AND SLICES IN VARIOUS COMBINATIONS) " &
63 "SATISFIES THE SEMANTICS OF ""COPY"" " &
64 "ASSIGNMENT WHEN INITIAL ASSIGNMENT VALUES " &
65 "ARE DYNAMIC (PART 2: DYNAMIC BOUNDS)" );
67 -------------------------------------------------------------------
68 -------------------- ARRAYS OF INTEGERS -------------------------
71 A
: ARRAY( 1..IDENT_INT_4
) OF INTEGER;
74 A
:= ( ID_I
(11), ID_I
(12), ID_I
(13), ID_I
(14) );
75 A
:= ( 1 , A
(IDENT_INT_1
) , A
(IDENT_INT_2
) ,
77 IF A
/= ( 1 , 11 , 12 , 11 ) THEN
78 FAILED
( "WRONG VALUES - I1" );
81 A
:= ( ID_I
(11), ID_I
(12), ID_I
(13), ID_I
(14) );
82 A
:= ( A
(IDENT_INT_4
) , A
(IDENT_INT_3
) ,
84 IF A
/= ( 14 , 13 , 14 , 1 ) THEN
85 FAILED
( "WRONG VALUES - I2" );
92 A
: ARRAY( -4..IDENT_INT_4
) OF INTEGER;
95 A
:= ( -ID_I
(4), -ID_I
(3), -ID_I
(2), -ID_I
(1),
96 ID_I
(100), ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4));
97 A
(-4..IDENT_INT_0
) := A
(IDENT_INT_0
..4);
98 IF A
/= ( 100 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 )
100 FAILED
( "WRONG VALUES - I3" );
103 A
:= ( -ID_I
(4), -ID_I
(3), -ID_I
(2), -ID_I
(1),
104 ID_I
(100), ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4));
105 A
(IDENT_INT_0
..4) := A
(-4..IDENT_INT_0
);
106 IF A
/= ( -4 , -3 , -2 , -1 , -4 , -3 , -2 , -1 , 100 )
108 FAILED
( "WRONG VALUES - I4" );
115 TYPE INT_ARR
IS ARRAY (INTEGER RANGE <>) OF INTEGER;
119 A
:= ( ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4), ID_I
(5),
120 ID_I
(6), ID_I
(7), ID_I
(8), ID_I
(9), ID_I
(10));
121 A
:= 0 & A
(IDENT_INT_1
..IDENT_INT_2
) &
122 A
(IDENT_INT_1
..IDENT_INT_2
) &
123 A
(IDENT_INT_1
..IDENT_INT_5
);
124 IF A
/= ( 0 , 1 , 2 , 1 , 2 , 1 , 2 , 3 , 4 , 5 )
126 FAILED
( "WRONG VALUES - I5" );
129 A
:= ( ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4), ID_I
(5),
130 ID_I
(6), ID_I
(7), ID_I
(8), ID_I
(9), ID_I
(10));
131 A
:= A
(IDENT_INT_6
..IDENT_INT_9
) &
132 A
(IDENT_INT_8
..IDENT_INT_9
) &
133 A
(IDENT_INT_8
..IDENT_INT_9
) & 0 & 0;
134 IF A
/= ( 6 , 7 , 8 , 9 , 8 , 9 , 8 , 9 , 0 , 0 )
136 FAILED
( "WRONG VALUES - I6" );
142 -------------------------------------------------------------------
143 -------------------- ARRAYS OF BOOLEANS -------------------------
146 A
: ARRAY( 1..4 ) OF BOOLEAN;
149 A
:= (ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE), ID_B
(FALSE));
150 A
:= ( TRUE , A
(IDENT_INT_1
) , A
(IDENT_INT_2
) ,
152 IF A
/= ( TRUE ,FALSE , TRUE , FALSE )
154 FAILED
( "WRONG VALUES - B1" );
157 A
:= (ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE), ID_B
(FALSE));
158 A
:= ( A
(IDENT_INT_4
) , A
(IDENT_INT_3
) ,
159 A
(IDENT_INT_4
) , TRUE );
160 IF A
/= ( FALSE , TRUE , FALSE, TRUE )
162 FAILED
( "WRONG VALUES - B2" );
169 A
: ARRAY( -IDENT_INT_4
..4 ) OF BOOLEAN;
172 A
:= (ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE),
173 ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE),
174 ID_B
(TRUE), ID_B
(TRUE));
175 A
(-IDENT_INT_4
..IDENT_INT_0
) := A
(IDENT_INT_0
..4);
176 IF A
/= (FALSE, TRUE, TRUE, TRUE, TRUE,TRUE, TRUE, TRUE,TRUE)
178 FAILED
( "WRONG VALUES - B3" );
181 A
:= (ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE),
182 ID_B
(TRUE), ID_B
(TRUE), ID_B
(TRUE),
183 ID_B
(TRUE), ID_B
(TRUE));
184 A
(IDENT_INT_0
..4) := A
(-4..IDENT_INT_0
);
185 IF A
/= (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE)
187 FAILED
( "WRONG VALUES - B4" );
194 TYPE B_ARR
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
198 A
:= (ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE),
199 ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE),
200 ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE));
201 A
:= FALSE & A
(IDENT_INT_1
..IDENT_INT_2
) &
202 A
(IDENT_INT_1
..IDENT_INT_2
) &
203 A
(IDENT_INT_1
..IDENT_INT_5
);
204 IF A
/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
206 FAILED
( "WRONG VALUES - B5" );
209 A
:= (ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE),
210 ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE),
211 ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE));
212 A
:= A
(IDENT_INT_6
..IDENT_INT_9
) &
213 A
(IDENT_INT_8
..IDENT_INT_9
) &
214 A
(IDENT_INT_8
..IDENT_INT_9
) & FALSE & TRUE;
215 IF A
/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
217 FAILED
( "WRONG VALUES - B6" );
223 -------------------------------------------------------------------
224 -------------------- CHARACTER STRINGS --------------------------
233 A
:= ( 'Q' , A
(IDENT_INT_1
) , A
(IDENT_INT_2
) ,
236 FAILED
( "WRONG VALUES - C1" );
242 A
:= ( A
(IDENT_INT_4
) , A
(IDENT_INT_3
) ,
243 A
(IDENT_INT_4
) , 'X' );
245 FAILED
( "WRONG VALUES - C2" );
252 A
: STRING( IDENT_INT
(96)..104 );
258 A
(IDENT_INT
(96)..IDENT_INT
(100)) := A
(IDENT_INT
(100)..
260 IF A
/= "ODITEDITE" THEN
261 FAILED
( "WRONG VALUES - C3" );
267 A
(IDENT_INT
(100)..IDENT_INT
(104)) := A
(IDENT_INT
(96)..
269 IF A
/= "APHRAPHRO" THEN
270 FAILED
( "WRONG VALUES - C4" );
277 TYPE CH_ARR
IS ARRAY (INTEGER RANGE <>) OF CHARACTER;
278 A
: CH_ARR
(IDENT_INT_1
..9);
284 A
:= 'S' & A
(IDENT_INT_1
..IDENT_INT_2
) &
285 A
(IDENT_INT_1
..IDENT_INT_2
) &
286 A
(IDENT_INT_1
..IDENT_INT_4
);
287 IF A
/= "SCACACAMB" THEN
288 FAILED
( "WRONG VALUES - C5" );
294 A
:= A
(IDENT_INT_8
..IDENT_INT_8
) &
295 A
(IDENT_INT_6
..IDENT_INT_8
) &
296 A
(IDENT_INT_6
..IDENT_INT_8
) & "EA";
297 IF A
/= "GIDGIDGEA" THEN
298 FAILED
( "WRONG VALUES - C6" );