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 FOR CORRECT PRECEDENCE OF PRE-DEFINED AND OVERLOADED
27 -- OPERATIONS ON ENUMERATION TYPES OTHER THAN BOOLEAN OR CHARACTER
28 -- AND ONE-DIMENSIONAL ARRAYS WITH COMPONENTS OF SUCH TYPES.
31 -- RJW 10/13/88 CREATED ORIGINAL TEST.
33 WITH REPORT
; USE REPORT
;
36 TYPE ENUM
IS (ZERO
, ONE
, TWO
, THREE
, FOUR
, FIVE
);
39 TEST
("C44003F", "CHECK FOR CORRECT PRECEDENCE OF PRE-DEFINED " &
40 "AND OVERLOADED OPERATIONS ON ENUMERATION " &
41 "TYPES OTHER THAN BOOLEAN OR CHARACTER AND " &
42 "ONE-DIMENSIONAL ARRAYS WITH COMPONENTS OF " &
46 ----- ENUMERATION TYPE:
53 FUNCTION "AND" (LEFT
, RIGHT
: ENUM
) RETURN ENUM
IS
58 FUNCTION "<" (LEFT
, RIGHT
: ENUM
) RETURN ENUM
IS
63 FUNCTION "-" (LEFT
, RIGHT
: ENUM
) RETURN ENUM
IS
65 RETURN ENUM
'VAL (ENUM
'POS (LEFT
) - ENUM
'POS (RIGHT
));
68 FUNCTION "+" (RIGHT
: ENUM
) RETURN ENUM
IS
73 FUNCTION "*" (LEFT
, RIGHT
: ENUM
) RETURN ENUM
IS
75 RETURN ENUM
'VAL (ENUM
'POS (LEFT
) * ENUM
'POS (RIGHT
));
78 FUNCTION "**" (LEFT
, RIGHT
: ENUM
) RETURN ENUM
IS
80 RETURN ENUM
'VAL (ENUM
'POS (LEFT
) ** ENUM
'POS (RIGHT
));
84 IF NOT (+E1
< E2
) OR NOT (E2
>= +E2
) OR NOT (E5
= +FIVE
) THEN
85 FAILED
("INCORRECT RESULT - 1");
88 IF (E5
** E1
AND E2
) /= (E5
- E1
* E5
** E1
) THEN
89 FAILED
("INCORRECT RESULT - 2");
97 TYPE ARR
IS ARRAY (INTEGER RANGE <>) OF ENUM
;
99 SUBTYPE SARR
IS ARR
(1 .. 3);
101 E1
: SARR
:= (OTHERS => ONE
);
102 E2
: SARR
:= (OTHERS => TWO
);
103 E5
: SARR
:= (OTHERS => FIVE
);
105 FUNCTION "XOR" (LEFT
, RIGHT
: ARR
) RETURN ARR
IS
107 RETURN (1 .. 3 => ZERO
);
110 FUNCTION "<=" (LEFT
, RIGHT
: ARR
) RETURN ARR
IS
112 RETURN (1 .. 3 => THREE
);
115 FUNCTION "+" (LEFT
, RIGHT
: ARR
) RETURN ARR
IS
117 RETURN (1 .. 3 => ZERO
);
120 FUNCTION "MOD" (LEFT
, RIGHT
: ARR
) RETURN ARR
IS
122 RETURN (1 .. 3 => THREE
);
125 FUNCTION "**" (LEFT
, RIGHT
: ARR
) RETURN ARR
IS
127 RETURN (1 .. 3 => FOUR
);
130 IF (E5
** E1
<= E2
+ E5
MOD E1
XOR E1
) /= (1 .. 3 => ZERO
)
132 FAILED
("INCORRECT RESULT - 3");
135 IF (E5
** E1
& E2
) /= (FOUR
, FOUR
, FOUR
, TWO
, TWO
, TWO
) OR
136 (E1
MOD E2
<= E5
) /= (1 .. 3 => THREE
) THEN
137 FAILED
("INCORRECT RESULT - 4");