2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / c3 / c35502e.ada
blob16e3cf098dca88817d4897ea3e56e5d0e2805367
1 -- C35502E.ADA
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.
16 -- DISCLAIMER
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 THE ATTRIBUTES 'IMAGE' AND 'VALUE' YIELD THE CORRECT
26 -- RESULTS WHEN THE PREFIX IS A FORMAL DISCRETE TYPE WHOSE ACTUAL
27 -- PARAMETER IS AN ENUMERATION TYPE OTHER THAN A BOOLEAN OR A
28 -- CHARACTER TYPE.
29 -- SUBTESTS ARE:
30 -- PART (A). TESTS FOR IMAGE.
31 -- PART (B). TESTS FOR VALUE.
33 -- RJW 5/13/86
35 WITH REPORT; USE REPORT;
37 PROCEDURE C35502E IS
39 TYPE ENUM IS (A, BC, ABC, A_B_C, abcd);
40 SUBTYPE SUBENUM IS ENUM RANGE A .. BC;
42 TYPE NEWENUM IS NEW ENUM;
44 BEGIN
46 TEST( "C35502E" , "CHECK THAT THE ATTRIBUTES 'IMAGE' AND " &
47 "'VALUE' YIELD THE CORRECT RESULTS WHEN THE " &
48 "PREFIX IS A FORMAL DISCRETE TYPE WHOSE " &
49 "ACTUAL PARAMETER IS AN ENUMERATION TYPE " &
50 "OTHER THAN A BOOLEAN OR A CHARACTER TYPE" );
52 -- PART (A).
53 DECLARE
54 GENERIC
55 TYPE E IS (<>);
56 STR1 : STRING;
57 PROCEDURE P ( E1 : E; STR2 : STRING );
59 PROCEDURE P ( E1 : E; STR2 : STRING ) IS
60 SUBTYPE SE IS E RANGE E'VAL(0) .. E'VAL(1);
61 BEGIN
62 IF SE'IMAGE ( E1 ) /= STR2 THEN
63 FAILED ( "INCORRECT SE'IMAGE FOR " & STR2 & " IN "
64 & STR1 );
65 END IF;
66 IF SE'IMAGE ( E1 )'FIRST /= 1 THEN
67 FAILED ( "INCORRECT LOWER BOUND FOR " & STR2
68 & " IN " & STR1 );
69 END IF;
70 END P;
72 PROCEDURE PE IS NEW P ( ENUM , "ENUM" );
73 PROCEDURE PS IS NEW P ( SUBENUM, "SUBENUM" );
74 PROCEDURE PN IS NEW P ( NEWENUM, "NEWENUM" );
76 BEGIN
77 PE ( ABC, "ABC" );
78 PE ( A_B_C, "A_B_C" );
79 PS ( BC, "BC" );
80 PN ( ABC, "ABC" );
81 PE ( abcd, "ABCD" );
82 END;
84 -----------------------------------------------------------------------
86 -- PART (B).
88 DECLARE
89 GENERIC
90 TYPE E IS (<>);
91 STR1 : STRING;
92 PROCEDURE P ( STR2 : STRING ; E1 : E );
94 PROCEDURE P ( STR2 : STRING ; E1 : E ) IS
95 SUBTYPE SE IS E RANGE E'VAL(0) .. E'VAL(1);
96 BEGIN
97 IF E'VALUE ( STR2 ) /= E1 THEN
98 FAILED ( "INCORRECT " & STR1 & "'VALUE FOR """ &
99 STR2 & """" );
100 END IF;
101 EXCEPTION
102 WHEN OTHERS =>
103 FAILED ( "EXCEPTION RAISED - " & STR1 & "'VALUE " &
104 "FOR """ & STR2 & """" );
105 END P;
107 PROCEDURE PE IS NEW P ( ENUM , "ENUM" );
108 PROCEDURE PN IS NEW P ( NEWENUM, "NEWENUM" );
110 BEGIN
111 PN ("abcd", abcd);
112 PN ("A_B_C", A_B_C);
113 PE ("ABC ", ABC);
114 PE (" A_B_C", A_B_C);
115 END;
118 DECLARE
119 GENERIC
120 TYPE E IS (<>);
121 PROCEDURE P ( STR : STRING );
123 PROCEDURE P ( STR : STRING ) IS
124 SUBTYPE SE IS E RANGE E'VAL(0) .. E'VAL(1);
125 BEGIN
126 IF SE'VALUE (STR) = SE'VAL (0) THEN
127 FAILED ( "NO EXCEPTION RAISED - " & STR & " - 1" );
128 ELSE
129 FAILED ( "NO EXCEPTION RAISED - " & STR & " - 2" );
130 END IF;
131 EXCEPTION
132 WHEN CONSTRAINT_ERROR =>
133 NULL;
134 WHEN OTHERS =>
135 FAILED ( "WRONG EXCEPTION RAISED - " & STR );
136 END P;
138 PROCEDURE PE IS NEW P ( ENUM );
139 PROCEDURE PS IS NEW P ( SUBENUM );
140 PROCEDURE PN IS NEW P ( NEWENUM );
142 BEGIN
143 PS ("A BC");
144 PN ("A&BC");
145 PE (ASCII.HT & "BC");
146 PE ("A" & ASCII.HT);
147 PS ("_BC");
148 PN ("BC_");
149 PE ("B__C");
150 PE ("0BC");
152 END;
154 RESULT;
155 END C35502E;