1-- C52103K.ADA
2
3--                             Grant of Unlimited Rights
4--
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
14--     to do so.
15--
16--                                    DISCLAIMER
17--
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.
24--*
25-- CHECK THAT LENGTHS MUST MATCH IN ARRAY AND SLICE ASSIGNMENTS.
26--    MORE SPECIFICALLY, TEST THAT ARRAY ASSIGNMENTS WITH MATCHING
27--    LENGTHS DO NOT CAUSE  CONSTRAINT_ERROR  TO BE RAISED AND
28--    ARE PERFORMED CORRECTLY.
29--    (OVERLAPS BETWEEN THE OPERANDS OF THE ASSIGNMENT STATEMENT
30--    ARE TREATED ELSEWHERE.)
31
32--    DIVISION  C :  NON-NULL ARRAYS WHOSE LENGTHS ARE NOT DETERMINABLE
33--                   STATICALLY.
34
35
36-- RM 07/20/81
37-- SPS 3/22/83
38
39
40WITH REPORT;
41PROCEDURE  C52103K  IS
42
43     USE  REPORT ;
44
45BEGIN
46
47     TEST( "C52103K" , "CHECK THAT IN ARRAY ASSIGNMENTS AND IN SLICE" &
48                       " ASSIGNMENTS  THE LENGTHS MUST MATCH" );
49
50
51     -- IN THIS TEST WE CAN'T USE AGGREGATE ASSIGNMENT (EXCEPT WHEN
52     --    THE AGGREGATES ARE STRING LITERALS); THEREFORE:
53     --
54     --    (1) ARRAYS WILL BE INITIALIZED BY INDIVIDUAL ASSIGNMENTS;
55     --    (2) CAN'T USE NON-NULL CONSTANT ARRAYS.
56
57
58     -- WE ASSUME THAT IN AN ARRAY_TYPE_DEFINITION THE INDEX PORTION
59     --    AND THE COMPONENT_TYPE PORTION ARE FUNCTIONALLY ORTHOGONAL
60     --    ALSO AT THE IMPLEMENTATION LEVEL, I.E. THAT THE CORRECTNESS
61     --    OF THE ACCESSING MECHANISM FOR ARRAYS DOES NOT DEPEND ON
62     --    COMPONENT_TYPE.  ACCORDINGLY WE ARE TESTING FOR SOME BUT
63     --    NOT ALL KINDS OF COMPONENT_TYPE.  (COMPONENT_TYPES INCLUDED:
64     --    INTEGER , CHARACTER , BOOLEAN .)
65
66
67     -- CASES DISTINGUISHED:         ( 8 SELECTED CASES ARE IMPLEMENTED)
68     --
69     --                              ( THE SELECTIONS ARE  7 , 8 , 9 ,
70     --                                AND PRECISELY 5 CASES FROM THE
71     --                                TWO 5-CASE SERIES 2-3-4-5-6 AND
72     --                                                  10-11-12-13-14)
73     --
74     --                              ( IN THE CURRENT DIVISION, THE 5
75     --                                FLOATING SELECTIONS ARE 2-11-4-
76     --                                -13-6 ; THUS THE 8 SELECTIONS ARE
77     --                                2-11-4-13-6-7-8-9 (IN THIS ORDER)
78     --                                .)
79     --
80     --
81     --                              ( EACH DIVISION COMPRISES 3 FILES,
82     --                                COVERING RESPECTIVELY THE FIRST
83     --                                3 , NEXT 2 , AND LAST 3 OF THE 8
84     --                                SELECTIONS FOR THE DIVISION.)
85     --
86     --
87     --    (1) ARRAY OBJECTS DECLARED IN THE SAME DECLARATION.
88     --        (TWO-DIMENSIONAL; NON-CONSTRAINABLE TYPEMARK.)
89     --
90     --        (THIS WILL BE THE ONLY CASE INVOLVING OBJECTS DECLARED
91     --        IN THE SAME DECLARATION.)
92     --
93     --
94     --    (2) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE
95     --        DEFINED WITHOUT EVER USING THE "BOX" COMPOUND SYMBOL.
96     --        (TWO-DIMENSIONAL ARRAYS OF INTEGERS.)
97     --
98     --        (SLICING IS ILLEGAL; SINCE IN THIS TEST WE ARE NEVER
99     --        USING AGGREGATES
100     --                (EXCEPT FOR ONE-DIMENSIONAL ARRAYS OF CHARACTERS;
101     --                SEE  (5) )
102     --        AND WE ARE NOT USING CONVERSION-TO-CONSTRAINED-TYPEMARKS
103     --                (AS IN    T1(ARR)   , WHERE  ARR  IS AN ARRAY
104     --                OBJECT AND  T1  IS AN ARRAY TYPEMARK SIMILAR
105     --                -- AS MORE PRECISELY SPECIFIED IN  RM 4.6(B) --
106     --                TO THE TYPEMARK OF  ARR ),
107     --        THE ARRAY ASSIGNMENT CANNOT INVOLVE ANY SLIDING,
108     --        AND THE TYPEMARKS ARE ESSENTIALLY THE SAME.)
109     --
110     --
111     --    (3) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
112     --        WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL
113     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
114     --        ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.)
115     --
116     --        (SINCE WE ARE NOT USING AGGREGATES
117     --        AND WE ARE NOT USING CONVERSION-TO-CONSTRAINED-TYPEMARKS,
118     --        THE ARRAY ASSIGNMENT CANNOT INVOLVE ANY SLIDING,
119     --        AND THE TYPEMARKS ARE ESSENTIALLY THE SAME.)
120     --
121     --
122     --    (4) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
123     --        WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL
124     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
125     --        ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.)
126     --
127     --        (THE ASSIGNMENT MAY REQUIRE SLIDING.)
128     --
129     --        (MOST SUBSEQUENT SUBCASES IN THIS TEST (OTHER THAN NULL
130     --        ASSIGNMENTS) WILL INVOLVE SLIDING; WE ASSUME THAT
131     --        SUBCASES WHICH WORK IN CONJUNCTION WITH SLIDING  WORK
132     --        ALSO WHEN NO SLIDING IS INVOLVED.)
133     --
134     --
135     --    (5) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
136     --        WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL
137     --        AND FOR WHICH THE COMPONENT TYPE IS  'CHARACTER' .
138     --
139     --        (STRING LITERALS ARE THE ONLY AGGREGATES WE ARE USING
140     --        IN THIS TEST.  TO FORCE SLIDING, THE LOWER LIMIT IMPLIED
141     --        BY THE TYPEMARK WILL NOT BE  1 .)
142     --
143     --
144     --    (6) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
145     --        WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL
146     --        AND FOR WHICH THE COMPONENT TYPE IS  'CHARACTER' .
147     --
148     --
149     --    (7) UNSLICED OBJECTS OF THE PREDEFINED TYPE  'STRING'  (BY
150     --        THEMSELVES).
151     --
152     --
153     --    (8) SLICED OBJECTS OF THE PREDEFINED TYPE  'STRING' , WITH
154     --        STRING LITERALS.
155     --
156     --
157     --    (9) SLICED OBJECTS OF THE PREDEFINED TYPE  'STRING'  (BY
158     --        THEMSELVES).
159     --
160     --
161     --    (-) CONSTRAINABLE TYPES:  ONLY SUBTESTS   2,  3,  4,  5,  6
162     --        WILL BE REPLICATED  --  AS SUBTESTS  10, 11, 12, 13, 14 .
163     --
164     --
165     --   (10) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE
166     --        DEFINED USING THE "BOX" COMPOUND SYMBOL.
167     --        (TWO-DIMENSIONAL ARRAYS OF INTEGERS.)
168     --
169     --
170     --   (11) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
171     --        WERE DEFINED USING THE "BOX" SYMBOL
172     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
173     --        ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.)
174     --
175     --
176     --   (12) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
177     --        WERE DEFINED USING THE "BOX" SYMBOL
178     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
179     --        ((ONE-DIMENSIONAL) ARRAYS OF BOOLEANS.)
180     --
181     --
182     --   (13) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
183     --        WERE DEFINED USING THE "BOX" SYMBOL
184     --        AND FOR WHICH THE COMPONENT TYPE IS  'CHARACTER' .
185     --
186     --        (STRING LITERALS ARE THE ONLY AGGREGATES WE ARE USING
187     --        IN THIS TEST.  TO FORCE SLIDING, THE LOWER LIMIT IMPLIED
188     --        BY THE TYPEMARK WILL NOT BE  1 .)
189     --
190     --
191     --   (14) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
192     --        WERE DEFINED USING THE "BOX" SYMBOL
193     --        AND FOR WHICH THE COMPONENT TYPE IS  'CHARACTER' .
194     --
195     --
196     --
197     --    (-) SPECIAL CASES:  NULL ARRAYS....... TREATED IN DIVISION B.
198     --                        SUPERLONG ARRAYS.. (TREATED FOR DYNAMIC
199     --                                            ARRAYS ONLY,
200     --                                            DIVISIONS C AND D .)
201     --
202     --
203     --    (-) THE DYNAMIC-ARRAY COUNTERPARTS OF THESE TESTS ARE IN DI-
204     --        VISIONS C (FOR NON-NULL ARRAYS) AND D (FOR NULL ARRAYS).
205     --
206     --
207
208
209     -------------------------------------------------------------------
210
211     --    (2) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE
212     --        DEFINED WITHOUT EVER USING THE "BOX" COMPOUND SYMBOL.
213     --        (TWO-DIMENSIONAL ARRAYS OF INTEGERS.)
214
215     DECLARE
216
217          TYPE  TA21  IS  ARRAY(
218               INTEGER RANGE IDENT_INT(1)..IDENT_INT(5) ,
219               INTEGER RANGE IDENT_INT(0)..IDENT_INT(7)
220                               )  OF INTEGER ;
221
222          SUBTYPE  TA22  IS  TA21 ;
223
224          ARR21  :  TA21 ;
225          ARR22  :  TA22 ;
226
227     BEGIN
228
229          -- INITIALIZATION OF RHS ARRAY:
230
231          FOR  I  IN  IDENT_INT(1)..IDENT_INT(5)  LOOP
232
233               FOR  J  IN  IDENT_INT(0)..IDENT_INT(7)  LOOP
234                    ARR21( I , J )  :=   I * I * J  ;
235               END LOOP;
236
237          END LOOP;
238
239
240          -- ARRAY ASSIGNMENT:
241
242          ARR22 := ARR21 ;
243
244          -- CHECKING THE VALUES AFTER THE ARRAY ASSIGNMENT:
245
246          FOR  I  IN  IDENT_INT(1)..IDENT_INT(5)  LOOP
247
248               FOR  J  IN  IDENT_INT(0)..IDENT_INT(7)  LOOP
249
250                    IF  ARR22( I , J )  /=  ( I-0 ) * ( I-0 ) * ( J-0 )
251                    THEN
252                         FAILED( "ARRAY ASSIGNMENT NOT CORRECT" );
253                    END IF;
254
255               END LOOP;
256
257          END LOOP;
258
259
260     EXCEPTION
261
262          WHEN  OTHERS  =>
263               FAILED( "EXCEPTION RAISED  -  SUBTEST 2" );
264
265     END ;
266
267
268     -------------------------------------------------------------------
269
270     --   (11) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
271     --        WERE DEFINED USING THE "BOX" SYMBOL
272     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
273     --        ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.)
274
275     DECLARE
276
277          TYPE  TABOX1  IS  ARRAY( INTEGER RANGE <> )  OF INTEGER ;
278
279          SUBTYPE  TABOX11  IS  TABOX1( IDENT_INT(1)..IDENT_INT(5) ) ;
280
281          ARRX11  :  TABOX11 ;
282          ARRX12  :  TABOX1( IDENT_INT(5)..IDENT_INT(9) );
283
284     BEGIN
285
286          -- INITIALIZATION OF RHS ARRAY:
287
288          FOR  I  IN  IDENT_INT(1)..IDENT_INT(5)  LOOP
289               ARRX11( I )  :=   I * I  ;
290          END LOOP;
291
292
293          -- ARRAY ASSIGNMENT:
294
295          ARRX12 := ARRX11 ;
296
297          -- CHECKING THE VALUES AFTER THE ARRAY ASSIGNMENT:
298
299          FOR  I  IN  IDENT_INT(5)..IDENT_INT(9)  LOOP
300
301               IF  ARRX12( I )  /=  ( I-4 ) * ( I-4 )
302               THEN
303                    FAILED( "ARRAY ASSIGNMENT NOT CORRECT (11)" );
304               END IF;
305
306          END LOOP;
307
308
309     EXCEPTION
310
311          WHEN  OTHERS  =>
312               FAILED( "EXCEPTION RAISED  -  SUBTEST 11" );
313
314     END ;
315
316
317     -------------------------------------------------------------------
318
319     --    (4) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS
320     --        WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL
321     --        AND FOR WHICH THE COMPONENT TYPE IS NOT  'CHARACTER' .
322     --        ((ONE-DIMENSIONAL) ARRAYS OF BOOLEANS.)
323
324     DECLARE
325
326          TYPE  TA42  IS  ARRAY(
327               INTEGER RANGE IDENT_INT(1)..IDENT_INT(5)
328                               )  OF BOOLEAN ;
329
330          SUBTYPE  TA41  IS  TA42 ;
331
332          ARR41  :  TA41 ;
333          ARR42  :  TA42 ;
334
335     BEGIN
336
337          -- INITIALIZATION OF RHS ARRAY:
338
339          FOR  I  IN  IDENT_INT(1)..IDENT_INT(5)  LOOP
340               ARR41( I )  :=  FALSE  ; -- VALUES WILL BE:  F T F F T
341          END LOOP;
342
343          ARR41(2) := TRUE ;
344
345          ARR41(5) := TRUE ;            -- RHS VALUES ARE:  F T F F T
346
347
348          -- INITIALIZATION OF UNUSED COMPONENT OF LHS ARRAY:
349
350          ARR42( 1 )  :=  TRUE ;
351
352
353          -- SLICE ASSIGNMENT:
354
355          ARR42( IDENT_INT(2)..IDENT_INT(5) ) :=
356               ARR41(
357                 IDENT_INT(1)..IDENT_INT(4) ) ;
358
359
360          -- CHECKING THE VALUES AFTER THE SLICE ASSIGNMENT:
361
362          FOR  I  IN  IDENT_INT(2)..IDENT_INT(5)  LOOP
363
364               IF  ARR42( I )  /=  FALSE  AND  I /= 3
365               THEN
366                    FAILED( "SLICE ASSIGNMENT NOT CORRECT (VALUES)" );
367               ELSIF  ARR42( I ) /= TRUE  AND  I  = 3
368               THEN
369                    FAILED( "SLICE ASSIGNMENT NOT CORRECT (VALUES)" );
370               END IF;
371
372          END LOOP;
373
374          IF  ARR42( 1 )  /=  TRUE
375          THEN
376               FAILED( "SLICE ASSIGNMENT NOT CORRECT (SLIDING)" );
377          END IF;
378
379     EXCEPTION
380
381          WHEN  OTHERS  =>
382               FAILED( "EXCEPTION RAISED  -  SUBTEST 4" );
383
384     END ;
385
386
387     -------------------------------------------------------------------
388
389
390     RESULT ;
391
392
393END C52103K;
394