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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN
27 -- INTEGER TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE
28 -- WITH THE SMALLEST APPROPRIATE UNSIGNED SIZE ARE NOT
29 -- AFFECTED BY THE REPRESENTATION CLAUSE.
32 -- JET 08/12/87 CREATED ORIGINAL TEST.
33 -- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
34 -- SIZE CLAUSE VALUE TO 7, AND CHANGED OPERATOR ON
36 -- JRL 03/27/92 ELIMINATED REDUNDANT TESTING.
38 WITH REPORT
; USE REPORT
;
41 BASIC_SIZE
: CONSTANT := 7;
43 TYPE INT
IS RANGE 0 .. 126;
45 FOR INT
'SIZE USE BASIC_SIZE
;
51 TYPE ARRAY_TYPE
IS ARRAY (INTEGER RANGE 0 .. 2) OF INT
;
52 INTARRAY
: ARRAY_TYPE
:= (0, 63, 126);
54 TYPE REC_TYPE
IS RECORD
62 FUNCTION IDENT
(I
: INT
) RETURN INT
IS
71 PROCEDURE PROC
(PI0
, PI2
: INT
;
72 PIO1
, PIO2
: IN OUT INT
;
76 IF PI0
'SIZE < IDENT_INT
(BASIC_SIZE
) THEN
77 FAILED
("INCORRECT VALUE FOR PI0'SIZE");
80 IF NOT ((PI0
< IDENT
(1)) AND
81 (IDENT
(PI2
) > IDENT
(PIO1
)) AND
82 (PIO1
<= IDENT
(63)) AND
83 (IDENT
(126) = PI2
)) THEN
84 FAILED
("INCORRECT RESULTS FOR RELATIONAL " &
88 IF NOT (((PI0
+ PI2
) = PIO2
) AND
89 ((PI2
- PIO1
) = PIO1
) AND
90 ((PIO1
* IDENT
(2)) = PI2
) AND
91 ((PIO2
/ PIO1
) = IDENT
(2)) AND
92 ((PIO1
** 1) = IDENT
(63)) AND
93 ((PIO2
REM 10) = IDENT
(6)) AND
94 ((PIO1
MOD 10) = IDENT
(3))) THEN
95 FAILED
("INCORRECT RESULTS FOR BINARY ARITHMETIC " &
99 IF INT
'POS (PI0
) /= IDENT_INT
(0) OR
100 INT
'POS (PIO1
) /= IDENT_INT
(63) OR
101 INT
'POS (PI2
) /= IDENT_INT
(126) THEN
102 FAILED
("INCORRECT VALUE FOR INT'POS - 1");
105 IF INT
'SUCC (PI0
) /= IDENT
(1) OR
106 INT
'SUCC (PIO1
) /= IDENT
(64) THEN
107 FAILED
("INCORRECT VALUE FOR INT'SUCC - 1");
110 IF INT
'IMAGE (PI0
) /= IDENT_STR
(" 0") OR
111 INT
'IMAGE (PIO1
) /= IDENT_STR
(" 63") OR
112 INT
'IMAGE (PI2
) /= IDENT_STR
(" 126") THEN
113 FAILED
("INCORRECT VALUE FOR INT'IMAGE - 1");
121 TEST
("CD2A32E", "CHECK THAT WHEN A SIZE SPECIFICATION IS " &
122 "GIVEN FOR AN INTEGER TYPE, THEN " &
123 "OPERATIONS ON VALUES OF SUCH A TYPE WITH " &
124 "THE SMALLEST APPROPRIATE UNSIGNED SIZE ARE " &
125 "NOT AFFECTED BY THE REPRESENTATION CLAUSE");
127 PROC
(0, 126, I1
, I2
, I2
);
129 IF INT
'SIZE /= IDENT_INT
(BASIC_SIZE
) THEN
130 FAILED
("INCORRECT VALUE FOR INT'SIZE");
133 IF I1
'SIZE < IDENT_INT
(BASIC_SIZE
) THEN
134 FAILED
("INCORRECT VALUE FOR I1'SIZE");
137 FOR I
IN IDENT
(I0
) .. IDENT
(I2
) LOOP
138 IF NOT (I
IN I0
.. I2
) OR
139 (I
NOT IN IDENT
(0) .. IDENT
(126)) THEN
140 FAILED
("INCORRECT RESULTS FOR MEMBERSHIP " &
145 IF NOT ((+I2
= I2
) AND
148 FAILED
("INCORRECT RESULTS FOR UNARY ARITHMETIC " &
152 IF INT
'VAL (0) /= IDENT
(I0
) OR
153 INT
'VAL (63) /= IDENT
(I1
) OR
154 INT
'VAL (126) /= IDENT
(I2
) THEN
155 FAILED
("INCORRECT VALUE FOR INT'VAL - 2");
158 IF INT
'PRED (I1
) /= IDENT
(62) OR
159 INT
'PRED (I2
) /= IDENT
(125) THEN
160 FAILED
("INCORRECT VALUE FOR INT'PRED - 2");
163 IF INT
'VALUE ("0") /= IDENT
(I0
) OR
164 INT
'VALUE ("63") /= IDENT
(I1
) OR
165 INT
'VALUE ("126") /= IDENT
(I2
) THEN
166 FAILED
("INCORRECT VALUE FOR INT'VALUE - 2");
169 IF INTARRAY
(1)'SIZE < IDENT_INT
(BASIC_SIZE
) THEN
170 FAILED
("INCORRECT VALUE FOR INTARRAY(1)'SIZE");
173 IF NOT ((INTARRAY
(0) < IDENT
(1)) AND
174 (IDENT
(INTARRAY
(2)) > IDENT
(INTARRAY
(1))) AND
175 (INTARRAY
(1) <= IDENT
(63)) AND
176 (IDENT
(126) = INTARRAY
(2))) THEN
177 FAILED
("INCORRECT RESULTS FOR RELATIONAL " &
181 FOR I
IN IDENT
(INTARRAY
(0)) .. IDENT
(INTARRAY
(2)) LOOP
182 IF NOT (I
IN INTARRAY
(0) .. INTARRAY
(2)) OR
183 (I
NOT IN IDENT
(0) .. IDENT
(126)) THEN
184 FAILED
("INCORRECT RESULTS FOR MEMBERSHIP " &
189 IF NOT (((INTARRAY
(0) + INTARRAY
(2)) = INTARRAY
(2)) AND
190 ((INTARRAY
(2) - INTARRAY
(1)) = INTARRAY
(1)) AND
191 ((INTARRAY
(1) * IDENT
(2)) = INTARRAY
(2)) AND
192 ((INTARRAY
(2) / INTARRAY
(1)) = IDENT
(2)) AND
193 ((INTARRAY
(1) ** 1) = IDENT
(63)) AND
194 ((INTARRAY
(2) REM 10) = IDENT
(6)) AND
195 ((INTARRAY
(1) MOD 10) = IDENT
(3))) THEN
196 FAILED
("INCORRECT RESULTS FOR BINARY ARITHMETIC " &
200 IF INT
'POS (INTARRAY
(0)) /= IDENT_INT
(0) OR
201 INT
'POS (INTARRAY
(1)) /= IDENT_INT
(63) OR
202 INT
'POS (INTARRAY
(2)) /= IDENT_INT
(126) THEN
203 FAILED
("INCORRECT VALUE FOR INT'POS - 3");
206 IF INT
'SUCC (INTARRAY
(0)) /= IDENT
(1) OR
207 INT
'SUCC (INTARRAY
(1)) /= IDENT
(64) THEN
208 FAILED
("INCORRECT VALUE FOR INT'SUCC - 3");
211 IF INT
'IMAGE (INTARRAY
(0)) /= IDENT_STR
(" 0") OR
212 INT
'IMAGE (INTARRAY
(1)) /= IDENT_STR
(" 63") OR
213 INT
'IMAGE (INTARRAY
(2)) /= IDENT_STR
(" 126") THEN
214 FAILED
("INCORRECT VALUE FOR INT'IMAGE - 3");
217 IF IREC
.COMP2
'SIZE < IDENT_INT
(BASIC_SIZE
) THEN
218 FAILED
("INCORRECT VALUE FOR IREC.COMP2'SIZE");
221 IF NOT ((IREC
.COMP0
< IDENT
(1)) AND
222 (IDENT
(IREC
.COMP2
) > IDENT
(IREC
.COMP1
)) AND
223 (IREC
.COMP1
<= IDENT
(63)) AND
224 (IDENT
(126) = IREC
.COMP2
)) THEN
225 FAILED
("INCORRECT RESULTS FOR RELATIONAL " &
229 FOR I
IN IDENT
(IREC
.COMP0
) .. IDENT
(IREC
.COMP2
) LOOP
230 IF NOT (I
IN IREC
.COMP0
.. IREC
.COMP2
) OR
231 (I
NOT IN IDENT
(0) .. IDENT
(126)) THEN
232 FAILED
("INCORRECT RESULTS FOR MEMBERSHIP " &
237 IF NOT ((+IREC
.COMP2
= IREC
.COMP2
) AND
238 (-IREC
.COMP1
= -63) AND
239 (ABS IREC
.COMP2
= IREC
.COMP2
)) THEN
240 FAILED
("INCORRECT RESULTS FOR UNARY ARITHMETIC " &
244 IF INT
'VAL (0) /= IDENT
(IREC
.COMP0
) OR
245 INT
'VAL (63) /= IDENT
(IREC
.COMP1
) OR
246 INT
'VAL (126) /= IDENT
(IREC
.COMP2
) THEN
247 FAILED
("INCORRECT VALUE FOR INT'VAL - 4");
250 IF INT
'PRED (IREC
.COMP1
) /= IDENT
(62) OR
251 INT
'PRED (IREC
.COMP2
) /= IDENT
(125) THEN
252 FAILED
("INCORRECT VALUE FOR INT'PRED - 4");
255 IF INT
'VALUE ("0") /= IDENT
(IREC
.COMP0
) OR
256 INT
'VALUE ("63") /= IDENT
(IREC
.COMP1
) OR
257 INT
'VALUE ("126") /= IDENT
(IREC
.COMP2
) THEN
258 FAILED
("INCORRECT VALUE FOR INT'VALUE - 4");