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 1: STATIC BOUNDS
46 FUNCTION ID_I
(X
: INTEGER) RETURN INTEGER RENAMES IDENT_INT
;
47 FUNCTION ID_B
(X
: BOOLEAN) RETURN BOOLEAN RENAMES IDENT_BOOL
;
52 TEST
( "C52102C" , "CHECK THAT THE ASSIGNMENT OF OVERLAPPING " &
53 "SOURCE AND TARGET VARIABLES (INCLUDING " &
54 "ARRAYS AND SLICES IN VARIOUS COMBINATIONS) " &
55 "SATISFIES THE SEMANTICS OF ""COPY"" " &
56 "ASSIGNMENT WHEN INITIAL ASSIGNMENT VALUES " &
57 "ARE DYNAMIC (PART 1: STATIC BOUNDS)" );
60 -------------------------------------------------------------------
61 -------------------- ARRAYS OF INTEGERS -------------------------
64 A
: ARRAY( 1..4 ) OF INTEGER;
67 A
:= ( ID_I
(11), ID_I
(12), ID_I
(13), ID_I
(14));
68 A
:= ( 1 , A
(1) , A
(2) , A
(1) );
69 IF A
/= ( 1 , 11 , 12 , 11 ) THEN
70 FAILED
( "WRONG VALUES - I1" );
73 A
:= ( ID_I
(11), ID_I
(12), ID_I
(13), ID_I
(14));
74 A
:= ( A
(4) , A
(3) , A
(4) , 1 );
75 IF A
/= ( 14 , 13 , 14 , 1 ) THEN
76 FAILED
( "WRONG VALUES - I2" );
83 A
: ARRAY( INTEGER RANGE -4..4 ) OF INTEGER;
86 A
:= ( -ID_I
(4), -ID_I
(3), -ID_I
(2), -ID_I
(1),
87 ID_I
(100), ID_I
(1),ID_I
(2), ID_I
(3), ID_I
(4) );
89 IF A
/= ( 100 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 )
91 FAILED
( "WRONG VALUES - I3" );
94 A
:= ( -ID_I
(4), -ID_I
(3), -ID_I
(2), -ID_I
(1),
95 ID_I
(100), ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4) );
97 IF A
/= ( -4 , -3 , -2 , -1 , -4 , -3 , -2 , -1 , 100 )
99 FAILED
( "WRONG VALUES - I4" );
106 TYPE INT_ARR
IS ARRAY (INTEGER RANGE <>) OF INTEGER;
110 A
:= ( ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4), ID_I
(5),
111 ID_I
(6), ID_I
(7), ID_I
(8), ID_I
(9), ID_I
(10) );
112 A
:= 0 & A
(1..2) & A
(1..2) & A
(1..5);
113 IF A
/= ( 0 , 1 , 2 , 1 , 2 , 1 , 2 , 3 , 4 , 5 )
115 FAILED
( "WRONG VALUES - I5" );
118 A
:= ( ID_I
(1), ID_I
(2), ID_I
(3), ID_I
(4), ID_I
(5),
119 ID_I
(6), ID_I
(7), ID_I
(8), ID_I
(9), ID_I
(10) );
120 A
:= A
(6..9) & A
(8..9) & A
(8..9) & 0 & 0;
121 IF A
/= ( 6 , 7 , 8 , 9 , 8 , 9 , 8 , 9 , 0 , 0 )
123 FAILED
( "WRONG VALUES - I6" );
129 -------------------------------------------------------------------
130 -------------------- ARRAYS OF BOOLEANS -------------------------
133 A
: ARRAY( 1..4 ) OF BOOLEAN;
136 A
:= (ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE), ID_B
(FALSE));
137 A
:= ( TRUE , A
(1) , A
(2) , A
(1) );
138 IF A
/= ( TRUE ,FALSE , TRUE , FALSE )
140 FAILED
( "WRONG VALUES - B1" );
143 A
:= (ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE), ID_B
(FALSE));
144 A
:= ( A
(4) , A
(3) , A
(4) , TRUE );
145 IF A
/= ( FALSE , TRUE , FALSE, TRUE )
147 FAILED
( "WRONG VALUES - B2" );
154 A
: ARRAY( INTEGER RANGE -4..4 ) OF BOOLEAN;
157 A
:= (ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE),
158 ID_B
(FALSE), ID_B
(TRUE), ID_B
(TRUE),
159 ID_B
(TRUE), ID_B
(TRUE));
161 IF A
/= (FALSE, TRUE, TRUE, TRUE, TRUE,TRUE, TRUE, TRUE,TRUE)
163 FAILED
( "WRONG VALUES - B3" );
166 A
:= (ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE), ID_B
(FALSE),
167 ID_B
(TRUE), ID_B
(TRUE), ID_B
(TRUE),
168 ID_B
(TRUE), ID_B
(TRUE));
170 IF A
/= (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE)
172 FAILED
( "WRONG VALUES - B4" );
179 TYPE B_ARR
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
183 A
:= (ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE),
184 ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE),
185 ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE));
186 A
:= FALSE & A
(1..2) & A
(1..2) & A
(1..5);
187 IF A
/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
189 FAILED
( "WRONG VALUES - B5" );
192 A
:= (ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE),
193 ID_B
(TRUE), ID_B
(FALSE), ID_B
(TRUE),
194 ID_B
(FALSE), ID_B
(TRUE), ID_B
(FALSE));
195 A
:= A
(6..9) & A
(8..9) & A
(8..9) & FALSE & TRUE;
196 IF A
/=(FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE,TRUE)
198 FAILED
( "WRONG VALUES - B6" );
204 -------------------------------------------------------------------
205 -------------------- CHARACTER STRINGS --------------------------
214 A
:= ( 'Q' , A
(1) , A
(2) , A
(1) );
216 FAILED
( "WRONG VALUES - C1" );
222 A
:= ( A
(4) , A
(3) , A
(4) , 'X' );
224 FAILED
( "WRONG VALUES - C2" );
231 A
: STRING( 96..104 );
237 A
(96..100) := A
(100..104);
238 IF A
/= "ODITEDITE" THEN
239 FAILED
( "WRONG VALUES - C3" );
245 A
(100..104) := A
(96..100) ;
246 IF A
/= "APHRAPHRO" THEN
247 FAILED
( "WRONG VALUES - C4" );
254 TYPE CH_ARR
IS ARRAY (INTEGER RANGE <>) OF CHARACTER;
261 A
:= 'S' & A
(1..2) & A
(1..2) & A
(1..4);
262 IF A
/= "SCACACAMB" THEN
263 FAILED
( "WRONG VALUES - C5" );
269 A
:= A
(8..8) & A
(6..8) & A
(6..8) & "EA";
270 IF A
/= "GIDGIDGEA" THEN
271 FAILED
( "WRONG VALUES - C6" );