OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [cc/] [cc3016b.ada] - Blame information for rev 294

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 294 jeremybenn
-- CC3016B.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 AN INSTANCE OF A GENERIC PACKAGE MUST DECLARE A
26
--  PACKAGE. CHECK THAT THE DECLARATIVE ITEMS IN AN INSTANTIATION
27
--  OF A GENERIC PACKAGE SPECIFICATION ARE ELABORATED IN THE ORDER
28
--  DECLARED.    
29
 
30
-- HISTORY:
31
--         EDWARD V. BERARD, 8 AUGUST 1990
32
 
33
WITH REPORT ;
34
 
35
PROCEDURE CC3016B IS
36
 
37
    WHEN_ELABORATED : NATURAL := 0 ;
38
 
39
    TYPE REAL IS DIGITS 6 ;
40
    REAL_VALUE : REAL := 3.14159 ;
41
 
42
    TRUE_VALUE : BOOLEAN := TRUE ;
43
 
44
    CHARACTER_VALUE : CHARACTER := 'Z' ;
45
 
46
    TYPE MONTH_TYPE IS (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,
47
                        SEP, OCT, NOV, DEC) ;
48
    TYPE DAY_TYPE IS RANGE 1 .. 31 ;
49
    TYPE YEAR_TYPE IS RANGE 1904 .. 2050 ;
50
    TYPE DATE IS RECORD
51
      MONTH : MONTH_TYPE ;
52
      DAY   : DAY_TYPE ;
53
      YEAR  : YEAR_TYPE ;
54
    END RECORD ;
55
 
56
    TYPE DATE_ACCESS IS ACCESS DATE ;
57
 
58
    THIS_MONTH   : MONTH_TYPE := AUG ;
59
    THIS_YEAR     : YEAR_TYPE := 1990 ;
60
 
61
    TODAY         : DATE := (MONTH => AUG,
62
                               DAY   => 8,
63
                              YEAR  => 1990) ;
64
 
65
    FIRST_DATE   : DATE_ACCESS  := NEW DATE'(DAY   => 6,
66
                                             MONTH => JUN,
67
                                             YEAR  => 1967) ;
68
 
69
    TYPE DUE_DATES IS ARRAY (MONTH_TYPE RANGE JAN .. DEC) OF DATE ;
70
    REPORT_DATES : DUE_DATES := ((JAN, 23, 1990), (FEB, 23, 1990),
71
                                 (MAR, 23, 1990), (APR, 23, 1990),
72
                                 (MAY, 23, 1990), (JUN, 22, 1990),
73
                                 (JUL, 23, 1990), (AUG, 23, 1990),
74
                                 (SEP, 24, 1990), (OCT, 23, 1990),
75
                                 (NOV, 23, 1990), (DEC, 20, 1990)) ;
76
 
77
    TYPE LIST_INDEX IS RANGE 1 .. 16 ;
78
    TYPE LIST IS ARRAY (LIST_INDEX) OF NATURAL ;
79
    ORDER_LIST : LIST := (OTHERS => 0) ;
80
 
81
    GENERIC
82
 
83
        TYPE RETURN_TYPE IS PRIVATE ;
84
        RETURN_VALUE : IN OUT RETURN_TYPE ;
85
        POSITION      : IN       NATURAL ;
86
        OFFSET        : IN       NATURAL ;
87
        WHEN_ELAB     : IN OUT NATURAL ;
88
        TYPE INDEX IS RANGE <> ;
89
        TYPE LIST IS ARRAY (INDEX) OF NATURAL ;
90
        ORDER_LIST      : IN OUT LIST ;
91
 
92
    FUNCTION NAME (VALUE : IN NATURAL) RETURN RETURN_TYPE ;
93
 
94
    FUNCTION NAME (VALUE : IN NATURAL) RETURN RETURN_TYPE IS
95
 
96
    BEGIN -- NAME
97
 
98
        IF (VALUE = POSITION) THEN
99
          WHEN_ELAB := NATURAL'SUCC (WHEN_ELAB) ;
100
          ORDER_LIST (INDEX (POSITION)) := WHEN_ELAB ;
101
          RETURN RETURN_VALUE ;
102
        ELSIF (VALUE = (POSITION + OFFSET)) THEN
103
          WHEN_ELAB := NATURAL'SUCC (WHEN_ELAB) ;
104
          ORDER_LIST (INDEX (POSITION + OFFSET)) := WHEN_ELAB ;
105
          RETURN RETURN_VALUE ;
106
        END IF ;
107
 
108
    END NAME ;
109
 
110
    GENERIC
111
 
112
        TYPE FIRST_TYPE IS PRIVATE ;
113
        WITH FUNCTION FIRST (POSITION : IN NATURAL)
114
                            RETURN FIRST_TYPE ;
115
        FIRST_VALUE : IN NATURAL ;
116
        TYPE SECOND_TYPE IS PRIVATE ;
117
        WITH FUNCTION SECOND (POSITION : IN NATURAL)
118
                            RETURN SECOND_TYPE ;
119
        SECOND_VALUE : IN NATURAL ;
120
        TYPE THIRD_TYPE IS PRIVATE ;
121
        WITH FUNCTION THIRD (POSITION : IN NATURAL)
122
                            RETURN THIRD_TYPE ;
123
        THIRD_VALUE : IN NATURAL ;
124
        TYPE FOURTH_TYPE IS PRIVATE ;
125
        WITH FUNCTION FOURTH (POSITION : IN NATURAL)
126
                            RETURN FOURTH_TYPE ;
127
        FOURTH_VALUE : IN NATURAL ;
128
        TYPE FIFTH_TYPE IS PRIVATE ;
129
        WITH FUNCTION FIFTH (POSITION : IN NATURAL)
130
                            RETURN FIFTH_TYPE ;
131
        FIFTH_VALUE : IN NATURAL ;
132
        TYPE SIXTH_TYPE IS PRIVATE ;
133
        WITH FUNCTION SIXTH (POSITION : IN NATURAL)
134
                            RETURN SIXTH_TYPE ;
135
        SIXTH_VALUE : IN NATURAL ;
136
        TYPE SEVENTH_TYPE IS PRIVATE ;
137
        WITH FUNCTION SEVENTH (POSITION : IN NATURAL)
138
                            RETURN SEVENTH_TYPE ;
139
        SEVENTH_VALUE : IN NATURAL ;
140
        TYPE EIGHTH_TYPE IS PRIVATE ;
141
        WITH FUNCTION EIGHTH (POSITION : IN NATURAL)
142
                            RETURN EIGHTH_TYPE ;
143
        EIGHTH_VALUE : IN NATURAL ;
144
        TYPE NINTH_TYPE IS PRIVATE ;
145
        WITH FUNCTION NINTH (POSITION : IN NATURAL)
146
                            RETURN NINTH_TYPE ;
147
        NINTH_VALUE : IN NATURAL ;
148
        TYPE TENTH_TYPE IS PRIVATE ;
149
        WITH FUNCTION TENTH (POSITION : IN NATURAL)
150
                            RETURN TENTH_TYPE ;
151
        TENTH_VALUE : IN NATURAL ;
152
        TYPE ELEVENTH_TYPE IS PRIVATE ;
153
        WITH FUNCTION ELEVENTH (POSITION : IN NATURAL)
154
                            RETURN ELEVENTH_TYPE ;
155
        ELEVENTH_VALUE : IN NATURAL ;
156
        TYPE TWELFTH_TYPE IS PRIVATE ;
157
        WITH FUNCTION TWELFTH (POSITION : IN NATURAL)
158
                            RETURN TWELFTH_TYPE ;
159
        TWELFTH_VALUE : IN NATURAL ;
160
        TYPE THIRTEENTH_TYPE IS PRIVATE ;
161
        WITH FUNCTION THIRTEENTH (POSITION : IN NATURAL)
162
                            RETURN THIRTEENTH_TYPE ;
163
        THIRTEENTH_VALUE : IN NATURAL ;
164
        TYPE FOURTEENTH_TYPE IS PRIVATE ;
165
        WITH FUNCTION FOURTEENTH (POSITION : IN NATURAL)
166
                            RETURN FOURTEENTH_TYPE ;
167
        FOURTEENTH_VALUE : IN NATURAL ;
168
        TYPE FIFTEENTH_TYPE IS PRIVATE ;
169
        WITH FUNCTION FIFTEENTH (POSITION : IN NATURAL)
170
                            RETURN FIFTEENTH_TYPE ;
171
        FIFTEENTH_VALUE : IN NATURAL ;
172
        TYPE SIXTEENTH_TYPE IS PRIVATE ;
173
        WITH FUNCTION SIXTEENTH (POSITION : IN NATURAL)
174
                            RETURN SIXTEENTH_TYPE ;
175
        SIXTEENTH_VALUE : IN NATURAL ;
176
 
177
    PACKAGE ORDER_PACKAGE IS
178
 
179
        A : FIRST_TYPE      := FIRST (FIRST_VALUE) ;
180
        B : SECOND_TYPE     := SECOND (SECOND_VALUE) ;
181
        C : THIRD_TYPE      := THIRD (THIRD_VALUE) ;
182
        D : FOURTH_TYPE     := FOURTH (FOURTH_VALUE) ;
183
        E : FIFTH_TYPE      := FIFTH (FIFTH_VALUE) ;
184
        F : SIXTH_TYPE      := SIXTH (SIXTH_VALUE) ;
185
        G : SEVENTH_TYPE    := SEVENTH (SEVENTH_VALUE) ;
186
        H : EIGHTH_TYPE     := EIGHTH (EIGHTH_VALUE) ;
187
        I : NINTH_TYPE      := NINTH (NINTH_VALUE) ;
188
        J : TENTH_TYPE      := TENTH (TENTH_VALUE) ;
189
        K : ELEVENTH_TYPE   := ELEVENTH (ELEVENTH_VALUE) ;
190
        L : TWELFTH_TYPE    := TWELFTH (TWELFTH_VALUE) ;
191
        M : THIRTEENTH_TYPE := THIRTEENTH (THIRTEENTH_VALUE) ;
192
        N : FOURTEENTH_TYPE := FOURTEENTH (FOURTEENTH_VALUE) ;
193
        O : FIFTEENTH_TYPE  := FIFTEENTH (FIFTEENTH_VALUE) ;
194
        P : SIXTEENTH_TYPE  := SIXTEENTH (SIXTEENTH_VALUE) ;
195
 
196
    END ORDER_PACKAGE ;
197
 
198
 
199
    FUNCTION BOOL IS NEW NAME (RETURN_TYPE  => BOOLEAN,
200
                               RETURN_VALUE => TRUE_VALUE,
201
                               POSITION     => 1,
202
                               OFFSET       => 8,
203
                               WHEN_ELAB    => WHEN_ELABORATED,
204
                               INDEX        => LIST_INDEX,
205
                               LIST         => LIST,
206
                               ORDER_LIST   => ORDER_LIST) ;
207
 
208
    FUNCTION INT IS NEW NAME (RETURN_TYPE   => YEAR_TYPE,
209
                              RETURN_VALUE  => THIS_YEAR,
210
                              POSITION      => 2,
211
                              OFFSET        => 8,
212
                              WHEN_ELAB     => WHEN_ELABORATED,
213
                              INDEX         => LIST_INDEX,
214
                              LIST          => LIST,
215
                              ORDER_LIST    => ORDER_LIST) ;
216
 
217
    FUNCTION FLOAT IS NEW NAME (RETURN_TYPE  => REAL,
218
                                RETURN_VALUE => REAL_VALUE,
219
                                POSITION     => 3,
220
                                OFFSET       => 8,
221
                                WHEN_ELAB    => WHEN_ELABORATED,
222
                                INDEX        => LIST_INDEX,
223
                                LIST         => LIST,
224
                                ORDER_LIST   => ORDER_LIST) ;
225
 
226
    FUNCTION CHAR IS NEW NAME (RETURN_TYPE  => CHARACTER,
227
                               RETURN_VALUE => CHARACTER_VALUE,
228
                               POSITION     => 4,
229
                               OFFSET       => 8,
230
                               WHEN_ELAB    => WHEN_ELABORATED,
231
                               INDEX        => LIST_INDEX,
232
                               LIST         => LIST,
233
                               ORDER_LIST   => ORDER_LIST) ;
234
 
235
    FUNCTION ENUM IS NEW NAME (RETURN_TYPE  => MONTH_TYPE,
236
                               RETURN_VALUE => THIS_MONTH,
237
                               POSITION     => 5,
238
                               OFFSET       => 8,
239
                               WHEN_ELAB    => WHEN_ELABORATED,
240
                               INDEX        => LIST_INDEX,
241
                               LIST         => LIST,
242
                               ORDER_LIST   => ORDER_LIST) ;
243
 
244
    FUNCTION ARRY IS NEW NAME (RETURN_TYPE  => DUE_DATES,
245
                               RETURN_VALUE => REPORT_DATES,
246
                               POSITION     => 6,
247
                               OFFSET       => 8,
248
                               WHEN_ELAB    => WHEN_ELABORATED,
249
                               INDEX        => LIST_INDEX,
250
                               LIST         => LIST,
251
                               ORDER_LIST   => ORDER_LIST) ;
252
 
253
 
254
    FUNCTION RCRD IS NEW NAME (RETURN_TYPE  => DATE,
255
                               RETURN_VALUE => TODAY,
256
                               POSITION     => 7,
257
                               OFFSET       => 8,
258
                               WHEN_ELAB    => WHEN_ELABORATED,
259
                               INDEX        => LIST_INDEX,
260
                               LIST         => LIST,
261
                               ORDER_LIST   => ORDER_LIST) ;
262
 
263
 
264
    FUNCTION ACSS IS NEW NAME (RETURN_TYPE  => DATE_ACCESS,
265
                               RETURN_VALUE => FIRST_DATE,
266
                               POSITION     => 8,
267
                               OFFSET       => 8,
268
                               WHEN_ELAB    => WHEN_ELABORATED,
269
                               INDEX        => LIST_INDEX,
270
                               LIST         => LIST,
271
                               ORDER_LIST   => ORDER_LIST) ;
272
 
273
    PACKAGE ELABORATION_ORDER IS NEW ORDER_PACKAGE
274
        (FIRST_TYPE            => BOOLEAN,
275
         FIRST                 => BOOL,
276
         FIRST_VALUE           => 1,
277
         THIRD_TYPE            => REAL,
278
         THIRD                 => FLOAT,
279
         THIRD_VALUE           => 3,
280
         SECOND_TYPE           => YEAR_TYPE,    -- ORDERING OF PARAMETERS
281
         SECOND                => INT,          -- IS DELIBERATE. 
282
         SECOND_VALUE          => 2,
283
         FOURTH_TYPE           => CHARACTER,
284
         FOURTH                => CHAR,
285
         FOURTH_VALUE          => 4,
286
         FIFTH_TYPE            => MONTH_TYPE,
287
         FIFTH                 => ENUM,
288
         FIFTH_VALUE           => 5,
289
         SIXTH_TYPE            => DUE_DATES,
290
         SIXTH                 => ARRY,
291
         SIXTH_VALUE           => 6,
292
         SEVENTH_TYPE          => DATE,
293
         SEVENTH               => RCRD,
294
         SEVENTH_VALUE         => 7,
295
         EIGHTH_TYPE           => DATE_ACCESS,
296
         EIGHTH                => ACSS,
297
         EIGHTH_VALUE          => 8,
298
         NINTH_TYPE            => BOOLEAN,
299
         NINTH                 => BOOL,
300
         NINTH_VALUE           => 9,
301
         TENTH_TYPE            => YEAR_TYPE,
302
         TENTH                 => INT,
303
         TENTH_VALUE           => 10,
304
         ELEVENTH_TYPE         => REAL,
305
         ELEVENTH              => FLOAT,
306
         ELEVENTH_VALUE        => 11,
307
         TWELFTH_TYPE          => CHARACTER,
308
         TWELFTH               => CHAR,
309
         TWELFTH_VALUE         => 12,
310
         THIRTEENTH_TYPE       => MONTH_TYPE,
311
         THIRTEENTH            => ENUM,
312
         THIRTEENTH_VALUE      => 13,
313
         FOURTEENTH_TYPE       => DUE_DATES,
314
         FOURTEENTH            => ARRY,
315
         FOURTEENTH_VALUE      => 14,
316
         FIFTEENTH_TYPE        => DATE,
317
         FIFTEENTH             => RCRD,
318
         FIFTEENTH_VALUE       => 15,
319
         SIXTEENTH_TYPE        => DATE_ACCESS,
320
         SIXTEENTH             => ACSS,
321
         SIXTEENTH_VALUE       => 16) ;
322
 
323
BEGIN
324
     REPORT.TEST("CC3016B", "CHECK THAT AN INSTANCE OF A GENERIC " &
325
                 "PACKAGE MUST DECLARE A PACKAGE. CHECK THAT THE " &
326
                 "DECLARATIVE ITEMS IN AN INSTANTIATION OF A GENERIC " &
327
                 "PACKAGE SPECIFICATION ARE ELABORATED IN THE ORDER " &
328
                 "DECLARED.");
329
 
330
     IF ORDER_LIST(1) /= REPORT.IDENT_INT(1) THEN
331
          REPORT.FAILED("BOOLEAN 1 ELABORATED OUT OF ORDER");
332
     END IF;
333
 
334
     IF ORDER_LIST(2) /= REPORT.IDENT_INT(2) THEN
335
          REPORT.FAILED("INTEGER TYPE 1 ELABORATED OUT OF ORDER");
336
     END IF;
337
 
338
     IF ORDER_LIST(3) /= REPORT.IDENT_INT(3) THEN
339
          REPORT.FAILED("REAL 1 ELABORATED OUT OF ORDER");
340
     END IF;
341
 
342
     IF ORDER_LIST(4) /= REPORT.IDENT_INT(4) THEN
343
          REPORT.FAILED("CHARACTER 1 ELABORATED OUT OF ORDER");
344
     END IF;
345
 
346
     IF ORDER_LIST(5) /= REPORT.IDENT_INT(5) THEN
347
          REPORT.FAILED("ENUMERATION 1 ELABORATED OUT OF ORDER");
348
     END IF;
349
 
350
     IF ORDER_LIST(6) /= REPORT.IDENT_INT(6) THEN
351
          REPORT.FAILED("ARRAY 1 ELABORATED OUT OF ORDER");
352
     END IF;
353
 
354
     IF ORDER_LIST(7) /= REPORT.IDENT_INT(7) THEN
355
          REPORT.FAILED("RECORD 1 ELABORATED OUT OF ORDER");
356
     END IF;
357
 
358
     IF ORDER_LIST(8) /= REPORT.IDENT_INT(8) THEN
359
          REPORT.FAILED("ACCESS 1 ELABORATED OUT OF ORDER");
360
     END IF;
361
 
362
     IF ORDER_LIST(9) /= REPORT.IDENT_INT(9) THEN
363
          REPORT.FAILED("BOOLEAN 2 ELABORATED OUT OF ORDER");
364
     END IF;
365
 
366
     IF ORDER_LIST(10) /= REPORT.IDENT_INT(10) THEN
367
          REPORT.FAILED("INTEGER TYPE 2 ELABORATED OUT OF ORDER");
368
     END IF;
369
 
370
     IF ORDER_LIST(11) /= REPORT.IDENT_INT(11) THEN
371
          REPORT.FAILED("REAL 2 ELABORATED OUT OF ORDER");
372
     END IF;
373
 
374
     IF ORDER_LIST(12) /= REPORT.IDENT_INT(12) THEN
375
          REPORT.FAILED("CHARACTER 2 ELABORATED OUT OF ORDER");
376
     END IF;
377
 
378
     IF ORDER_LIST(13) /= REPORT.IDENT_INT(13) THEN
379
          REPORT.FAILED("ENUMERATION 2 ELABORATED OUT OF ORDER");
380
     END IF;
381
 
382
     IF ORDER_LIST(14) /= REPORT.IDENT_INT(14) THEN
383
          REPORT.FAILED("ARRAY 2 ELABORATED OUT OF ORDER");
384
     END IF;
385
 
386
     IF ORDER_LIST(15) /= REPORT.IDENT_INT(15) THEN
387
          REPORT.FAILED("RECORD 2 ELABORATED OUT OF ORDER");
388
     END IF;
389
 
390
     IF ORDER_LIST(16) /= REPORT.IDENT_INT(16) THEN
391
          REPORT.FAILED("ACCESS 2 ELABORATED OUT OF ORDER");
392
     END IF;
393
 
394
     REPORT.RESULT ;
395
 
396
END CC3016B;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.