blob: 90ea0e494a969584df5c07fecd753c5f57e3c1d8 [file] [log] [blame]
-- C46044B.ADA
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT CONSTRAINT ERROR IS RAISED FOR CONVERSION TO A
-- CONSTRAINED ARRAY TYPE IF THE TARGET TYPE IS NON-NULL AND
-- CORRESPONDING DIMENSIONS OF THE TARGET AND OPERAND DO NOT HAVE
-- THE SAME LENGTH. ALSO, CHECK THAT CONSTRAINT_ERROR IS RAISED IF
-- THE TARGET TYPE IS NULL AND THE OPERAND TYPE IS NON-NULL.
-- R.WILLIAMS 9/8/86
WITH REPORT; USE REPORT;
PROCEDURE C46044B IS
TYPE ARR1 IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE CARR1A IS ARR1 (IDENT_INT (1) .. IDENT_INT (6));
C1A : CARR1A := (CARR1A'RANGE => 0);
SUBTYPE CARR1B IS ARR1 (IDENT_INT (2) .. IDENT_INT (5));
C1B : CARR1B := (CARR1B'RANGE => 0);
SUBTYPE CARR1N IS ARR1 (IDENT_INT (1) .. IDENT_INT (0));
C1N : CARR1N := (CARR1N'RANGE => 0);
TYPE ARR2 IS ARRAY (INTEGER RANGE <>, INTEGER RANGE <>) OF
INTEGER;
SUBTYPE CARR2A IS ARR2 (IDENT_INT (1) .. IDENT_INT (2),
IDENT_INT (1) .. IDENT_INT (2));
C2A : CARR2A := (CARR2A'RANGE (1) => (CARR2A'RANGE (2) => 0));
SUBTYPE CARR2B IS ARR2 (IDENT_INT (0) .. IDENT_INT (2),
IDENT_INT (0) .. IDENT_INT (2));
C2B : CARR2B := (CARR2B'RANGE (1) => (CARR2B'RANGE (2) => 0));
SUBTYPE CARR2N IS ARR2 (IDENT_INT (2) .. IDENT_INT (1),
IDENT_INT (1) .. IDENT_INT (2));
C2N : CARR2N := (CARR2N'RANGE (1) => (CARR2N'RANGE (2) => 0));
PROCEDURE CHECK1 (A : ARR1; STR : STRING) IS
BEGIN
FAILED ( "NO EXCEPTION RAISED - " & STR );
END CHECK1;
PROCEDURE CHECK2 (A : ARR2; STR : STRING) IS
BEGIN
FAILED ( "NO EXCEPTION RAISED - " & STR );
END CHECK2;
BEGIN
TEST ( "C46044B", "CHECK THAT CONSTRAINT ERROR IS RAISED FOR " &
"CONVERSION TO A CONSTRAINED ARRAY TYPE " &
"IF THE TARGET TYPE IS NON-NULL AND " &
"CORRESPONDING DIMENSIONS OF THE TARGET AND " &
"OPERAND DO NOT HAVE THE SAME LENGTH. " &
"ALSO, CHECK THAT CONSTRAINT_ERROR IS " &
"RAISED IF THE TARGET TYPE IS NULL AND " &
"THE OPERAND TYPE IS NON-NULL" );
BEGIN -- (A).
C1A := C1B;
CHECK1 (C1A, "(A)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (A)" );
END;
BEGIN -- (B).
CHECK1 (CARR1A (C1B), "(B)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (B)" );
END;
BEGIN -- (C).
C1B := C1A;
CHECK1 (C1B, "(C)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (C)" );
END;
BEGIN -- (D).
CHECK1 (CARR1B (C1A), "(D)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (D)" );
END;
BEGIN -- (E).
C1A := C1N;
CHECK1 (C1A, "(E)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (E)" );
END;
BEGIN -- (F).
CHECK1 (CARR1A (C1N), "(F)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (F)" );
END;
BEGIN -- (G).
C2A := C2B;
CHECK2 (C2A, "(G)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (G)" );
END;
BEGIN -- (H).
CHECK2 (CARR2A (C2B), "(H)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (H)" );
END;
BEGIN -- (I).
C2B := C2A;
CHECK2 (C2B, "(I)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (I)" );
END;
BEGIN -- (J).
CHECK2 (CARR2A (C2B), "(J)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (J)" );
END;
BEGIN -- (K).
C2A := C2N;
CHECK2 (C2A, "(K)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (K)" );
END;
BEGIN -- (L).
CHECK2 (CARR2A (C2N), "(L)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (L)" );
END;
BEGIN -- (M).
C1N := C1A;
CHECK1 (C1N, "(M)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (M)" );
END;
BEGIN -- (N).
CHECK1 (CARR1N (C1A), "(N)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (N)" );
END;
BEGIN -- (O).
C2N := C2A;
CHECK2 (C2N, "(O)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (O)" );
END;
BEGIN -- (P).
CHECK2 (CARR2N (C2A), "(P)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ( "WRONG EXCEPTION RAISED - (P)" );
END;
RESULT;
END C46044B;