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.
25 -- CHECK THAT A CASE_STATEMENT CORRECTLY HANDLES A SMALL RANGE OF
26 -- POTENTIAL VALUES GROUPED INTO A SMALL NUMBER OF ALTERNATIVES.
28 -- (OPTIMIZATION TEST -- JUMP TABLE.)
32 -- PWN 11/30/94 SUBTYPE QUALIFIED LITERALS FOR ADA 9X.
42 TEST
( "C54A42B" , "TEST THAT A CASE_STATEMENT HANDLES CORRECTLY" &
43 " A SMALL NUMBER OF POTENTIAL VALUES GROUPED" &
44 " INTO A SMALL NUMBER OF ALTERNATIVES" );
48 STATCON
: CONSTANT CHARACTER RANGE 'A'..'K' := 'J' ;
49 STATVAR
: CHARACTER RANGE 'A'..'K' := 'A' ;
50 DYNCON
: CONSTANT CHARACTER RANGE 'A'..'K' :=IDENT_CHAR
('K');
51 DYNVAR
: CHARACTER RANGE 'A'..'K' :=IDENT_CHAR
('G');
56 WHEN 'B' |
'E' => FAILED
( "WRONG ALTERNATIVE A1" );
57 WHEN 'J' |
'C' => FAILED
( "WRONG ALTERNATIVE A2" );
58 WHEN 'F' => FAILED
( "WRONG ALTERNATIVE A3" );
59 WHEN 'D' |
'H'..'I' => FAILED
( "WRONG ALTERNATIVE A4" );
60 WHEN 'G' => FAILED
( "WRONG ALTERNATIVE A5" );
64 CASE CHARACTER'('B
') IS
65 WHEN 'B
' | 'E
' => NULL ;
66 WHEN 'J
' | 'C
' => FAILED( "WRONG ALTERNATIVE B2" );
67 WHEN 'F
' => FAILED( "WRONG ALTERNATIVE B3" );
68 WHEN 'D
' | 'H
'..'I
' => FAILED( "WRONG ALTERNATIVE B4" );
69 WHEN 'G
' => FAILED( "WRONG ALTERNATIVE B5" );
70 WHEN OTHERS => FAILED( "WRONG ALTERNATIVE B6" );
74 WHEN 'B
' | 'E
' => FAILED( "WRONG ALTERNATIVE C1" );
75 WHEN 'J
' | 'C
' => FAILED( "WRONG ALTERNATIVE C2" );
76 WHEN 'F
' => FAILED( "WRONG ALTERNATIVE C3" );
77 WHEN 'D
' | 'H
'..'I
' => FAILED( "WRONG ALTERNATIVE C4" );
79 WHEN OTHERS => FAILED( "WRONG ALTERNATIVE C6" );
82 CASE IDENT_CHAR(STATCON) IS
83 WHEN 'B
' | 'E
' => FAILED( "WRONG ALTERNATIVE D1" );
84 WHEN 'J
' | 'C
' => NULL ;
85 WHEN 'F
' => FAILED( "WRONG ALTERNATIVE D3" );
86 WHEN 'D
' | 'H
'..'I
' => FAILED( "WRONG ALTERNATIVE D4" );
87 WHEN 'G
' => FAILED( "WRONG ALTERNATIVE D5" );
88 WHEN OTHERS => FAILED( "WRONG ALTERNATIVE D6" );
92 WHEN 'B
' | 'E
' => FAILED( "WRONG ALTERNATIVE E1" );
93 WHEN 'J
' | 'C
' => FAILED( "WRONG ALTERNATIVE E2" );
94 WHEN 'F
' => FAILED( "WRONG ALTERNATIVE E3" );
95 WHEN 'D
' | 'H
'..'I
' => FAILED( "WRONG ALTERNATIVE E4" );
96 WHEN 'G
' => FAILED( "WRONG ALTERNATIVE E5" );
105 NUMBER : CONSTANT := 1 ;
106 LITEXPR : CONSTANT := NUMBER + 5 ;
107 STATCON : CONSTANT INTEGER RANGE 0..10 := 9 ;
108 DYNVAR : INTEGER RANGE 0..10 := IDENT_INT( 10 );
109 DYNCON : CONSTANT INTEGER RANGE 0..10 := IDENT_INT( 2 );
114 WHEN 1 |
4 => FAILED
("WRONG ALTERNATIVE F1");
115 WHEN 9 |
2 => FAILED
("WRONG ALTERNATIVE F2");
116 WHEN 5 => FAILED
("WRONG ALTERNATIVE F3");
117 WHEN 3 |
7..8 => FAILED
("WRONG ALTERNATIVE F4");
118 WHEN 6 => FAILED
("WRONG ALTERNATIVE F5");
119 WHEN OTHERS => NULL ;
122 CASE INTEGER'(NUMBER) IS
124 WHEN 9 | 2 => FAILED("WRONG ALTERNATIVE G2");
125 WHEN 5 => FAILED("WRONG ALTERNATIVE G3");
126 WHEN 3 | 7..8 => FAILED("WRONG ALTERNATIVE G4");
127 WHEN 6 => FAILED("WRONG ALTERNATIVE G5");
128 WHEN OTHERS => FAILED("WRONG ALTERNATIVE G6");
131 CASE IDENT_INT(LITEXPR) IS
132 WHEN 1 | 4 => FAILED("WRONG ALTERNATIVE H1");
133 WHEN 9 | 2 => FAILED("WRONG ALTERNATIVE H2");
134 WHEN 5 => FAILED("WRONG ALTERNATIVE H3");
135 WHEN 3 | 7..8 => FAILED("WRONG ALTERNATIVE H4");
137 WHEN OTHERS => FAILED("WRONG ALTERNATIVE H6");
141 WHEN 1 | 4 => FAILED("WRONG ALTERNATIVE I1");
143 WHEN 5 => FAILED("WRONG ALTERNATIVE I3");
144 WHEN 3 | 7..8 => FAILED("WRONG ALTERNATIVE I4");
145 WHEN 6 => FAILED("WRONG ALTERNATIVE I5");
146 WHEN OTHERS => FAILED("WRONG ALTERNATIVE I6");
150 WHEN 1 | 4 => FAILED("WRONG ALTERNATIVE J1");
151 WHEN 9 | 2 => FAILED("WRONG ALTERNATIVE J2");
152 WHEN 5 => FAILED("WRONG ALTERNATIVE J3");
153 WHEN 3 | 7..8 => FAILED("WRONG ALTERNATIVE J4");
154 WHEN 6 => FAILED("WRONG ALTERNATIVE J5");
155 WHEN OTHERS => NULL ;
159 WHEN 1 | 4 => FAILED("WRONG ALTERNATIVE K1");
161 WHEN 5 => FAILED("WRONG ALTERNATIVE K3");
162 WHEN 3 | 7..8 => FAILED("WRONG ALTERNATIVE K4");
163 WHEN 6 => FAILED("WRONG ALTERNATIVE K5");
164 WHEN OTHERS => FAILED("WRONG ALTERNATIVE K6");