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 -- FOR A FORMAL FIXED POINT TYPE, CHECK THAT THE FOLLOWING BASIC
27 -- OPERATIONS ARE IMPLICITLY DECLARED AND ARE THEREFORE AVAILABLE
28 -- WITHIN THE GENERIC UNIT: ASSIGNMENT, MEMBERSHIP TESTS,
29 -- QUALIFICATION, EXPLICIT CONVERSION TO AND FROM OTHER NUMERIC
30 -- TYPES, AND REAL LITERALS (IMPLICIT CONVERSION FROM UNIVERSAL REAL
31 -- TO THE FORMAL TYPE), 'FIRST, 'LAST, 'SIZE, 'ADDRESS, 'DELTA, 'FORE,
32 -- 'AFT, 'MACHINE_ROUNDS, 'MACHINE_OVERFLOWS.
35 -- RJW 09/30/86 CREATED ORIGINAL TEST.
36 -- JLH 09/25/87 REFORMATTED HEADER.
37 -- RJW 08/21/89 MODIFIED CHECKS FOR 'MANTISSA AND 'AFT.
38 -- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
40 WITH SYSTEM
; USE SYSTEM
;
41 WITH REPORT
; USE REPORT
;
45 TYPE FIXED
IS DELTA 0.1 RANGE -100.0 .. 100.0;
48 TEST
( "CC1223A", "FOR A FORMAL FIXED POINT TYPE, CHECK " &
49 "THAT THE BASIC OPERATIONS ARE " &
50 "IMPLICITLY DECLARED AND ARE THEREFORE " &
51 "AVAILABLE WITHIN THE GENERIC UNIT" );
53 DECLARE -- (A). CHECKS FOR ASSIGNMENT, MEMBERSHIP TESTS AND
61 PROCEDURE P
(F2
: T
; STR
: STRING);
63 PROCEDURE P
(F2
: T
; STR
: STRING) IS
64 SUBTYPE ST
IS T
RANGE -1.0 .. 1.0;
67 FUNCTION FUN
(X
: T
) RETURN BOOLEAN IS
69 RETURN IDENT_BOOL
(TRUE);
72 FUNCTION FUN
(X
: T1
) RETURN BOOLEAN IS
74 RETURN IDENT_BOOL
(FALSE);
83 FAILED
( "INCORRECT RESULTS FOR ASSIGNMENT " &
84 "WITH TYPE - " & STR
);
90 FAILED
( "INCORRECT RESULTS FOR ""IN"" WITH " &
97 FAILED
( "INCORRECT RESULTS FOR ""NOT IN"" WITH " &
102 FAILED ( "INCORRECT RESULTS FOR QUALIFICATION " &
103 "WITH TYPE - " & STR & " - 1" );
106 IF FUN (T'(1.0)) THEN
109 FAILED
( "INCORRECT RESULTS FOR QUALIFICATION " &
110 "WITH TYPE - " & STR
& " - 2" );
115 PROCEDURE P1
IS NEW P
(FIXED
, FIXED
, 0.0, 0.0);
116 PROCEDURE P2
IS NEW P
(DURATION, DURATION, 0.0, 0.0);
120 P2
(2.0, "DURATION");
123 DECLARE -- (B) CHECKS FOR EXPLICIT CONVERSION TO AND FROM OTHER
124 -- NUMERIC TYPES, AND IMPLICIT CONVERSION FROM
129 PROCEDURE P
(STR
: STRING);
131 PROCEDURE P
(STR
: STRING) IS
135 FLN2
: FLOAT := -2.0;
145 FUNCTION IDENT
(X
: T
) RETURN T
IS
155 IF T0
+ 1.0 /= 1.0 THEN
156 FAILED
( "INCORRECT RESULTS FOR IMPLICIT " &
157 "CONVERSION WITH TYPE " & STR
& " - 1" );
160 IF T2
+ 1.0 /= 3.0 THEN
161 FAILED
( "INCORRECT RESULTS FOR IMPLICIT " &
162 "CONVERSION WITH TYPE " & STR
& " - 2" );
165 IF TN2
+ 1.0 /= -1.0 THEN
166 FAILED
( "INCORRECT RESULTS FOR IMPLICIT " &
167 "CONVERSION WITH TYPE " & STR
& " - 3" );
170 IF T
(FL0
) /= T0
THEN
171 FAILED
( "INCORRECT CONVERSION FROM " &
172 "FLOAT VALUE 0.0 WITH TYPE " & STR
);
175 IF T
(FL2
) /= IDENT
(T2
) THEN
176 FAILED
( "INCORRECT CONVERSION FROM " &
177 "FLOAT VALUE 2.0 WITH TYPE " & STR
);
180 IF T
(FLN2
) /= TN2
THEN
181 FAILED
( "INCORRECT CONVERSION FROM " &
182 "FLOAT VALUE -2.0 WITH TYPE " & STR
);
185 IF T
(I0
) /= IDENT
(T0
) THEN
186 FAILED
( "INCORRECT CONVERSION FROM " &
187 "INTEGER VALUE 0 WITH TYPE " & STR
);
191 FAILED
( "INCORRECT CONVERSION FROM " &
192 "INTEGER VALUE 2 WITH TYPE " & STR
);
195 IF T
(IN2
) /= IDENT
(TN2
) THEN
196 FAILED
( "INCORRECT CONVERSION FROM " &
197 "INTEGER VALUE -2 WITH TYPE " & STR
);
200 IF FLOAT (T0
) /= FL0
THEN
201 FAILED
( "INCORRECT CONVERSION TO " &
202 "FLOAT VALUE 0.0 WITH TYPE " & STR
);
205 IF FLOAT (IDENT
(T2
)) /= FL2
THEN
206 FAILED
( "INCORRECT CONVERSION TO " &
207 "FLOAT VALUE 2.0 WITH TYPE " & STR
);
210 IF FLOAT (TN2
) /= FLN2
THEN
211 FAILED
( "INCORRECT CONVERSION TO " &
212 "FLOAT VALUE -2.0 WITH TYPE " & STR
);
215 IF INTEGER (IDENT
(T0
)) /= I0
THEN
216 FAILED
( "INCORRECT CONVERSION TO " &
217 "INTEGER VALUE 0 WITH TYPE " & STR
);
220 IF INTEGER (T2
) /= I2
THEN
221 FAILED
( "INCORRECT CONVERSION TO " &
222 "INTEGER VALUE 2 WITH TYPE " & STR
);
225 IF INTEGER (IDENT
(TN2
)) /= IN2
THEN
226 FAILED
( "INCORRECT CONVERSION TO " &
227 "INTEGER VALUE -2 WITH TYPE " & STR
);
232 PROCEDURE P1
IS NEW P
(FIXED
);
233 PROCEDURE P2
IS NEW P
(DURATION);
240 DECLARE -- (C) CHECKS FOR ATTRIBUTES.
245 PROCEDURE P
(STR
: STRING);
247 PROCEDURE P
(STR
: STRING) IS
250 A
: ADDRESS
:= F
'ADDRESS;
251 S
: INTEGER := F
'SIZE;
255 B1
: BOOLEAN := T
'MACHINE_ROUNDS;
256 B2
: BOOLEAN := T
'MACHINE_OVERFLOWS;
260 FAILED
( "INCORRECT VALUE FOR " &
265 FAILED
( "INCORRECT VALUE FOR " &
270 FAILED
( "INCORRECT VALUE FOR " &
275 FAILED
( "INCORRECT VALUE FOR " &
280 FAILED
( "INCORRECT VALUE FOR " & STR
& "'AFT" );
286 NEW P
(FIXED
, FIXED
'FIRST, FIXED
'LAST, FIXED
'DELTA);
288 NEW P
(DURATION, DURATION'FIRST, DURATION'LAST,