1-- C46051B.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-- OBJECTIVE:
26--     CHECK THAT ENUMERATION VALUES CAN BE CONVERTED IF THE OPERAND
27--     AND TARGET TYPES ARE RELATED BY DERIVATION, EVEN IF THE OPERAND
28--     AND TARGET TYPES HAVE DIFFERENT REPRESENTATIONS.
29
30-- HISTORY:
31--     JET 07/13/88  CREATED ORIGINAL TEST.
32--     RJW 08/28/89  REMOVED APPLICABILITY CRITERIA AND CHANGED
33--                   EXTENSION TO 'ADA'.  CHANGED THE CODES IN SECOND
34--                   ENUMERATION REPRESENTATION CLAUSE.
35
36WITH REPORT; USE REPORT;
37PROCEDURE C46051B IS
38
39     TYPE ENUM IS (WE, LOVE, WRITING, TESTS);
40
41     TYPE ENUM1 IS NEW ENUM;
42     FOR ENUM1 USE
43          (WE => -1, LOVE => 0, WRITING => 3, TESTS => 9);
44
45     TYPE ENUM2 IS NEW ENUM;
46     FOR ENUM2 USE
47          (WE => 10, LOVE => 15, WRITING => 16, TESTS => 19);
48
49     TYPE ENUM3 IS NEW ENUM1;
50
51     E : ENUM := ENUM'VAL (IDENT_INT (0));
52     E1 : ENUM1 := ENUM1'VAL (IDENT_INT (1));
53     E2 : ENUM2 := ENUM2'VAL (IDENT_INT (2));
54     E3 : ENUM3 := ENUM3'VAL (IDENT_INT (3));
55
56BEGIN
57     TEST ( "C46051B", "CHECK THAT ENUMERATION VALUES CAN BE " &
58                       "CONVERTED IF THE OPERAND AND TARGET TYPES " &
59                       "ARE RELATED BY DERIVATION, EVEN IF THE " &
60                       "OPERAND AND TARGET TYPES HAVE DIFFERENT " &
61                       "REPRESENTATIONS");
62
63     IF ENUM1 (E) /= WE THEN
64          FAILED ( "INCORRECT CONVERSION OF 'ENUM1 (E)'" );
65     END IF;
66
67     IF ENUM (E1) /= LOVE THEN
68          FAILED ( "INCORRECT CONVERSION OF 'ENUM (E1)'" );
69     END IF;
70
71     IF ENUM1 (E2) /= WRITING THEN
72          FAILED ( "INCORRECT CONVERSION OF 'ENUM1 (E2)'" );
73     END IF;
74
75     IF ENUM2 (E3) /= TESTS THEN
76          FAILED ( "INCORRECT CONVERSION OF 'ENUM2 (E3)'" );
77     END IF;
78
79     IF ENUM (E) /= WE THEN
80          FAILED ( "INCORRECT CONVERSION OF 'ENUM (E)'" );
81     END IF;
82
83     IF ENUM2 (E1) /= LOVE THEN
84          FAILED ( "INCORRECT CONVERSION OF 'ENUM2 (E1)'" );
85     END IF;
86
87     IF ENUM3 (E2) /= WRITING THEN
88          FAILED ( "INCORRECT CONVERSION OF 'ENUM3 (E2)'" );
89     END IF;
90
91     IF ENUM (E3) /= TESTS THEN
92          FAILED ( "INCORRECT CONVERSION OF 'ENUM (E3)'" );
93     END IF;
94
95     RESULT;
96
97EXCEPTION
98     WHEN OTHERS =>
99          FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
100                   "ENUMERATION TYPES" );
101          RESULT;
102END C46051B;
103