blob: 8ee4bf82912bbc3ad9ee9d6ccb4a92df08070878 [file] [log] [blame]
-- C34007V.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.
--*
-- OBJECTIVE:
-- CHECK THAT THE REQUIRED PREDEFINED OPERATIONS ARE DECLARED
-- (IMPLICITLY) FOR DERIVED ACCESS TYPES WHOSE DESIGNATED TYPE IS A
-- ONE-DIMENSIONAL ARRAY TYPE. THIS TEST IS PART 2 OF 2 TESTS
-- WHICH COVER THE OBJECTIVE. THE FIRST PART IS IN TEST C34007D.
-- HISTORY:
-- BCB 04/12/90 CREATED ORIGINAL TEST FROM SPLIT OF C34007D.ADA.
-- THS 09/18/90 REMOVED DECLARATION OF B, DELETED PROCEDURE A,
-- AND REMOVED ALL REFERENCES TO B.
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE C34007V IS
SUBTYPE COMPONENT IS INTEGER;
TYPE DESIGNATED IS ARRAY (NATURAL RANGE <>) OF COMPONENT;
SUBTYPE SUBDESIGNATED IS DESIGNATED (IDENT_INT (5) ..
IDENT_INT (7));
PACKAGE PKG IS
TYPE PARENT IS ACCESS DESIGNATED;
FUNCTION CREATE ( F, L : NATURAL;
C : COMPONENT;
DUMMY : PARENT -- TO RESOLVE OVERLOADING.
) RETURN PARENT;
END PKG;
USE PKG;
TYPE T IS NEW PARENT (IDENT_INT (5) .. IDENT_INT (7));
X : T := NEW SUBDESIGNATED'(OTHERS => 2);
K : INTEGER := X'SIZE;
Y : T := NEW SUBDESIGNATED'(1, 2, 3);
W : PARENT := NEW SUBDESIGNATED'(OTHERS => 2);
C : COMPONENT := 1;
N : CONSTANT := 1;
FUNCTION V RETURN T IS
BEGIN
RETURN NEW SUBDESIGNATED'(OTHERS => C);
END V;
PACKAGE BODY PKG IS
FUNCTION CREATE
( F, L : NATURAL;
C : COMPONENT;
DUMMY : PARENT
) RETURN PARENT
IS
A : PARENT := NEW DESIGNATED (F .. L);
B : COMPONENT := C;
BEGIN
FOR I IN F .. L LOOP
A (I) := B;
B := B + 1;
END LOOP;
RETURN A;
END CREATE;
END PKG;
FUNCTION IDENT (X : T) RETURN T IS
BEGIN
IF X = NULL OR ELSE
EQUAL (X'LENGTH, X'LENGTH) THEN
RETURN X; -- ALWAYS EXECUTED.
END IF;
RETURN NEW SUBDESIGNATED;
END IDENT;
BEGIN
TEST ("C34007V", "CHECK THAT THE REQUIRED PREDEFINED OPERATIONS " &
"ARE DECLARED (IMPLICITLY) FOR DERIVED " &
"ACCESS TYPES WHOSE DESIGNATED TYPE IS A " &
"ONE-DIMENSIONAL ARRAY TYPE. THIS TEST IS " &
"PART 2 OF 2 TESTS WHICH COVER THE OBJECTIVE. " &
"THE FIRST PART IS IN TEST C34007V");
W := PARENT (CREATE (2, 3, 4, X));
IF W = NULL OR ELSE W.ALL /= (4, 5) THEN
FAILED ("INCORRECT CONVERSION TO PARENT - 2");
END IF;
X := IDENT (Y);
IF X.ALL /= (1, 2, 3) OR CREATE (2, 3, 4, X) . ALL /= (4, 5) THEN
FAILED ("INCORRECT .ALL (VALUE)");
END IF;
X.ALL := (10, 11, 12);
IF X /= Y OR Y.ALL /= (10, 11, 12) THEN
FAILED ("INCORRECT .ALL (ASSIGNMENT)");
END IF;
Y.ALL := (1, 2, 3);
BEGIN
CREATE (2, 3, 4, X) . ALL := (10, 11);
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION FOR .ALL (ASSIGNMENT)");
END;
X := IDENT (Y);
IF X (IDENT_INT (5)) /= 1 OR
CREATE (2, 3, 4, X) (3) /= 5 THEN
FAILED ("INCORRECT INDEX (VALUE)");
END IF;
Y.ALL := (1, 2, 3);
X := IDENT (Y);
BEGIN
CREATE (2, 3, 4, X) (2) := 10;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION FOR INDEX (ASSIGNMENT)");
END;
IF X (IDENT_INT (6) .. IDENT_INT (7)) /= (2, 3) OR
CREATE (1, 4, 4, X) (1 .. 3) /= (4, 5, 6) THEN
FAILED ("INCORRECT SLICE (VALUE)");
END IF;
Y.ALL := (1, 2, 3);
X := IDENT (Y);
BEGIN
CREATE (1, 4, 4, X) (2 .. 4) := (10, 11, 12);
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION FOR SLICE (ASSIGNMENT)");
END;
IF X = NULL OR X = NEW SUBDESIGNATED OR NOT (X = Y) OR
X = CREATE (2, 3, 4, X) THEN
FAILED ("INCORRECT =");
END IF;
IF X /= Y OR NOT (X /= NULL) OR NOT (X /= CREATE (2, 3, 4, X)) THEN
FAILED ("INCORRECT /=");
END IF;
IF NOT (X IN T) OR CREATE (2, 3, 4, X) IN T THEN
FAILED ("INCORRECT ""IN""");
END IF;
IF X NOT IN T OR NOT (CREATE (2, 3, 4, X) NOT IN T) THEN
FAILED ("INCORRECT ""NOT IN""");
END IF;
RESULT;
END C34007V;