1-- C55B06A.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-- CHECK THAT LOOPS MAY BE SPECIFIED FOR BOOLEAN, INTEGER, 26-- CHARACTER, ENUMERATION, AND DERIVED TYPES, INCLUDING 27-- TYPES DERIVED FROM DERIVED TYPES. DERIVED BOOLEAN IS NOT 28-- TESTED IN THIS TEST. 29 30-- DAT 3/26/81 31-- JBG 9/29/82 32-- SPS 3/11/83 33-- JBG 10/5/83 34-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X. 35 36WITH REPORT; USE REPORT; 37 38PROCEDURE C55B06A IS 39 40 TYPE ENUM IS ('A', 'B', 'D', 'C', Z, X, D, A, C); 41 42 TYPE D1 IS NEW CHARACTER RANGE 'A' .. 'Z'; 43 TYPE D2 IS NEW INTEGER; 44 TYPE D3 IS NEW ENUM; 45 TYPE D4 IS NEW D1; 46 TYPE D5 IS NEW D2; 47 TYPE D6 IS NEW D3; 48 49 ONE : INTEGER := IDENT_INT(1); 50 COUNT : INTEGER := 0; 51 OLDCOUNT : INTEGER := 0; 52 53 PROCEDURE Q IS 54 BEGIN 55 COUNT := COUNT + ONE; 56 END Q; 57 58BEGIN 59 TEST ("C55B06A", "TEST LOOPS FOR ALL DISCRETE TYPES"); 60 61 FOR I IN BOOLEAN LOOP 62 Q; 63 END LOOP; 64 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 65 FAILED ("LOOP 1"); 66 END IF; 67 OLDCOUNT := COUNT; 68 69 FOR I IN FALSE .. TRUE LOOP 70 Q; 71 END LOOP; 72 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 73 FAILED ("LOOP 2"); 74 END IF; 75 OLDCOUNT := COUNT; 76 77 FOR I IN BOOLEAN RANGE FALSE .. TRUE LOOP 78 Q; 79 END LOOP; 80 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 81 FAILED ("LOOP 3"); 82 END IF; 83 OLDCOUNT := COUNT; 84 85 FOR I IN INTEGER LOOP 86 Q; 87 EXIT WHEN I = INTEGER'FIRST + 2; 88 END LOOP; 89 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN 90 FAILED ("LOOP 4"); 91 END IF; 92 OLDCOUNT := COUNT; 93 94 FOR I IN 3 .. IDENT_INT (5) LOOP 95 Q; 96 END LOOP; 97 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN 98 FAILED ("LOOP 5"); 99 END IF; 100 OLDCOUNT := COUNT; 101 102 FOR I IN INTEGER RANGE -2 .. -1 LOOP 103 Q; 104 END LOOP; 105 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 106 FAILED ("LOOP 6"); 107 END IF; 108 OLDCOUNT := COUNT; 109 110 FOR I IN INTEGER RANGE INTEGER'FIRST .. INTEGER'FIRST + 1 LOOP 111 Q; 112 END LOOP; 113 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 114 FAILED ("LOOP 7"); 115 END IF; 116 OLDCOUNT := COUNT; 117 118 FOR I IN 'A' .. CHARACTER'('Z') LOOP 119 Q; 120 END LOOP; 121 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN 122 FAILED ("LOOP 9"); 123 END IF; 124 OLDCOUNT := COUNT; 125 126 FOR I IN CHARACTER RANGE 'A' .. 'D' LOOP 127 Q; 128 END LOOP; 129 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN 130 FAILED ("LOOP 10"); 131 END IF; 132 OLDCOUNT := COUNT; 133 134 FOR I IN ENUM LOOP 135 Q; 136 END LOOP; 137 IF OLDCOUNT + IDENT_INT(9) /= COUNT THEN 138 FAILED ("LOOP 11"); 139 END IF; 140 OLDCOUNT := COUNT; 141 142 FOR I IN ENUM RANGE D .. C LOOP 143 Q; 144 END LOOP; 145 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN 146 FAILED ("LOOP 12"); 147 END IF; 148 OLDCOUNT := COUNT; 149 150 FOR I IN 'A' .. ENUM'(Z) LOOP 151 Q; 152 END LOOP; 153 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 154 FAILED ("LOOP 13"); 155 END IF; 156 OLDCOUNT := COUNT; 157 158 FOR I IN D1 LOOP 159 Q; 160 END LOOP; 161 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN 162 FAILED ("LOOP 14"); 163 END IF; 164 OLDCOUNT := COUNT; 165 166 FOR I IN D1 RANGE 'A' .. 'Z' LOOP 167 Q; 168 END LOOP; 169 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN 170 FAILED ("LOOP 15"); 171 END IF; 172 OLDCOUNT := COUNT; 173 174 FOR I IN D1'('A') .. 'D' LOOP 175 Q; 176 END LOOP; 177 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN 178 FAILED ("LOOP 16"); 179 END IF; 180 OLDCOUNT := COUNT; 181 182 FOR I IN D2 LOOP 183 Q; 184 IF I > D2'FIRST + 3 THEN 185 EXIT; 186 END IF; 187 END LOOP; 188 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 189 FAILED ("LOOP 17"); 190 END IF; 191 OLDCOUNT := COUNT; 192 193 FOR I IN D2 RANGE -100 .. -99 LOOP 194 Q; 195 END LOOP; 196 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 197 FAILED ("LOOP 18"); 198 END IF; 199 OLDCOUNT := COUNT; 200 201 FOR I IN D2'(1) .. 2 LOOP 202 Q; 203 END LOOP; 204 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 205 FAILED ("LOOP 19"); 206 END IF; 207 OLDCOUNT := COUNT; 208 209 FOR I IN D3 LOOP 210 IF I IN 'A' .. 'C' THEN 211 Q; -- 4 212 ELSE 213 Q; Q; -- 10 214 END IF; 215 END LOOP; 216 IF OLDCOUNT + IDENT_INT(14) /= COUNT THEN 217 FAILED ("LOOP 20"); 218 END IF; 219 OLDCOUNT := COUNT; 220 221 FOR I IN D3 RANGE 'A' .. Z LOOP 222 Q; 223 END LOOP; 224 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 225 FAILED ("LOOP 21"); 226 END IF; 227 OLDCOUNT := COUNT; 228 229 FOR I IN 'A' .. D3'(Z) LOOP 230 Q; 231 END LOOP; 232 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 233 FAILED ("LOOP 22"); 234 END IF; 235 OLDCOUNT := COUNT; 236 237 FOR I IN D4 LOOP 238 Q; 239 END LOOP; 240 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN 241 FAILED ("LOOP 23"); 242 END IF; 243 OLDCOUNT := COUNT; 244 245 FOR I IN D4'('A') .. 'Z' LOOP 246 Q; 247 END LOOP; 248 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN 249 FAILED ("LOOP 24"); 250 END IF; 251 OLDCOUNT := COUNT; 252 253 FOR I IN D4 RANGE 'B' .. 'D' LOOP 254 Q; 255 END LOOP; 256 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN 257 FAILED ("LOOP 25"); 258 END IF; 259 OLDCOUNT := COUNT; 260 261 FOR J IN D5 LOOP 262 Q; -- 4 263 EXIT WHEN J = D5(INTEGER'FIRST) + 3; 264 Q; -- 3 265 END LOOP; 266 IF OLDCOUNT + IDENT_INT(7) /= COUNT THEN 267 FAILED ("LOOP 26"); 268 END IF; 269 OLDCOUNT := COUNT; 270 271 FOR J IN D5 RANGE -2 .. -1 LOOP 272 Q; 273 END LOOP; 274 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN 275 FAILED ("LOOP 27"); 276 END IF; 277 OLDCOUNT := COUNT; 278 279 FOR J IN D5'(-10) .. D5'(-6) LOOP 280 Q; 281 END LOOP; 282 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 283 FAILED ("LOOP 28"); 284 END IF; 285 OLDCOUNT := COUNT; 286 287 FOR J IN D6 LOOP 288 Q; 289 END LOOP; 290 IF OLDCOUNT + IDENT_INT(9) /= COUNT THEN 291 FAILED ("LOOP 29"); 292 END IF; 293 OLDCOUNT := COUNT; 294 295 FOR J IN D6 RANGE Z .. A LOOP 296 Q; 297 END LOOP; 298 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN 299 FAILED ("LOOP 30"); 300 END IF; 301 OLDCOUNT := COUNT; 302 303 FOR J IN D6'('D') .. D LOOP 304 Q; 305 END LOOP; 306 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN 307 FAILED ("LOOP 31"); 308 END IF; 309 OLDCOUNT := COUNT; 310 311 312 RESULT; 313END C55B06A; 314