OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/ada/acats/tests/cd
    from Rev 294 to Rev 338
    Reverse comparison

Rev 294 → Rev 338

/cd72a01.a
0,0 → 1,165
--
-- CD72A01.A
--
-- 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 package System.Address_To_Access_Conversions may be
-- instantiated for various simple types.
--
-- Check that To_Pointer and To_Address are inverse operations.
--
-- Check that To_Pointer(X'Address) equals X'Unchecked_Access for an
-- X that allows Unchecked_Access.
--
-- Check that To_Pointer(Null_Address) returns null.
--
-- TEST DESCRIPTION:
-- This test checks that the semantics provided in
-- Address_To_Access_Conversions are present and operate
-- within expectations (to the best extent possible in a portable
-- implementation independent fashion).
--
-- The functions Address_To_Hex and Hex_To_Address test the invertability
-- of the To_Integer and To_Address functions, along with a great deal
-- of optimizer chaff and protection from the fact that type
-- Storage_Elements.Integer_Address may be either a modular or a signed
-- integer type.
--
-- This test has some interesting usage paradigms in that users
-- occasionally want to store address information in a transportable
-- fashion, and often resort to some textual representation of values.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
-- CHANGE HISTORY:
-- 13 JUL 95 SAIC Initial version (CD72001)
-- 08 FEB 96 SAIC Revised (split) version for 2.1
-- 07 MAY 96 SAIC Additional subtest added for 2.1
-- 16 FEB 98 EDS Modified documentation.
--!
 
with Report;
with Impdef;
with FD72A00;
with System.Storage_Elements;
with System.Address_To_Access_Conversions;
procedure CD72A01 is
use System;
use FD72A00;
 
package Number_ATAC is
new System.Address_To_Access_Conversions(Number); -- ANX-C RQMT
 
use type Number_ATAC.Object_Pointer;
 
type Data is record
One, Two: aliased Number;
end record;
 
package Data_ATAC is
new System.Address_To_Access_Conversions(Data); -- ANX-C RQMT
 
use type Data_ATAC.Object_Pointer;
 
type Test_Cases is ( Addr_Type, Record_Type );
 
type Naive_Dynamic_String is access String;
 
type String_Store is array(Test_Cases) of Naive_Dynamic_String;
 
The_Strings : String_Store;
 
-- create several aliased objects with distinct values
 
My_Number : aliased Number := Number'First;
My_Data : aliased Data := (Number'First,Number'Last);
 
use type System.Storage_Elements.Integer_Address;
 
begin -- Main test procedure.
 
Report.Test ("CD72A01", "Check package " &
"System.Address_To_Access_Conversions " &
"for simple types" );
-- take several pointer objects, convert them to addresses, and store
-- the address as a hexadecimal representation for later reconversion
 
The_Strings(Addr_Type) := new String'(
Address_To_Hex(Number_ATAC.To_Address(My_Number'Access)) );
 
The_Strings(Record_Type) := new String'(
Address_To_Hex(Data_ATAC.To_Address(My_Data'Access)) );
 
-- now, reconvert the hexadecimal address values back to pointers,
-- and check that the dereferenced pointer still designates the
-- value placed at that location. The use of the intermediate
-- string representation should foil even the cleverest of optimizers
 
if Number_ATAC.To_Pointer(
Hex_To_Address(The_Strings(Addr_Type))).all
/= Number'First then
Report.Failed("Number reconversion");
end if;
 
if Data_ATAC.To_Pointer(Hex_To_Address(The_Strings(Record_Type))).all
/= (Number'First,Number'Last) then
Report.Failed("Data reconversion");
end if;
 
-- check that the resulting values are equal to the 'Unchecked_Access
-- of the value
 
if Number_ATAC.To_Pointer(
Hex_To_Address(The_Strings(Addr_Type)))
/= My_Number'Unchecked_Access then
Report.Failed("Number Unchecked_Access");
end if;
 
if Data_ATAC.To_Pointer(Hex_To_Address(The_Strings(Record_Type)))
/= My_Data'Unchecked_Access then
Report.Failed("Data Unchecked_Access");
end if;
 
if Number_ATAC.To_Pointer(System.Null_Address) /= null then
Report.Failed("To_Pointer(Null_Address) /= null");
end if;
 
if Number_ATAC.To_Address(null) /= System.Null_Address then
Report.Failed("To_Address(null) /= Null_Address");
end if;
 
Report.Result;
 
end CD72A01;
/cd5012a.ada
0,0 → 1,78
-- CD5012A.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF AN
-- ENUMERATION TYPE IN THE DECLARATIVE PART OF A GENERIC SUBPROGRAM.
 
-- HISTORY:
-- DHH 09/15/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
WITH SPPRT13;
PROCEDURE CD5012A IS
 
BEGIN
 
TEST ("CD5012A", "AN ADDRESS CLAUSE CAN BE " &
"GIVEN FOR A VARIABLE OF AN ENUMERATION " &
"TYPE IN THE DECLARATIVE PART OF A " &
"GENERIC SUBPROGRAM");
 
DECLARE
TYPE NON_CHAR IS (RED, BLUE, GREEN);
 
COLOR : NON_CHAR;
TEST_VAR : ADDRESS := COLOR'ADDRESS;
 
GENERIC
PROCEDURE GENPROC;
 
PROCEDURE GENPROC IS
 
HUE : NON_CHAR := GREEN;
FOR HUE USE AT
SPPRT13.VARIABLE_ADDRESS;
BEGIN
IF EQUAL (3, 3) THEN
HUE := RED;
END IF;
IF HUE /= RED THEN
FAILED ("WRONG VALUE FOR VARIABLE IN " &
"GENERIC PROCEDURE");
END IF;
IF HUE'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN
FAILED ("WRONG ADDRESS FOR VARIABLE " &
"IN GENERIC PROCEDURE");
END IF;
END GENPROC;
 
PROCEDURE PROC IS NEW GENPROC;
BEGIN
PROC;
END;
RESULT;
END CD5012A;
/cd7202a.ada
0,0 → 1,55
-- CD7202A.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:
-- THE 'ADDRESS ATTRIBUTE CAN BE USED IN A COMPILATION UNIT EVEN IF
-- A WITH CLAUSE FOR PACKAGE SYSTEM DOES NOT APPLY TO THE UNIT.
 
-- HISTORY:
-- DHH 08/31/88 CREATED ORIGINAL TEST.
 
WITH SYSTEM;
PACKAGE CD7202A_SYS IS
SUBTYPE MY_ADDRESS IS SYSTEM.ADDRESS;
END CD7202A_SYS;
 
WITH CD7202A_SYS;
WITH REPORT; USE REPORT;
PROCEDURE CD7202A IS
 
INT : INTEGER := 2;
 
BOOL : BOOLEAN := (INT'ADDRESS IN CD7202A_SYS.MY_ADDRESS);
 
BEGIN
TEST ("CD7202A", "THE 'ADDRESS ATTRIBUTE CAN BE USED IN A" &
" COMPILATION UNIT EVEN IF A WITH CLAUSE FOR " &
"PACKAGE SYSTEM DOES NOT APPLY TO THE UNIT");
 
IF NOT IDENT_BOOL(BOOL) THEN
FAILED("ADDRESS ATTRIBUTE INCORRECT");
END IF;
 
RESULT;
END CD7202A;
/cd5012e.ada
0,0 → 1,76
-- CD5012E.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A
-- FIXED POINT TYPE IN THE DECLARATIVE PART OF A GENERIC SUBPROGRAM.
 
-- HISTORY:
-- DHH 09/15/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
WITH SPPRT13;
PROCEDURE CD5012E IS
 
BEGIN
 
TEST ("CD5012E", "AN ADDRESS CLAUSE CAN BE " &
"GIVEN FOR A VARIABLE OF A FIXED POINT " &
"TYPE IN THE DECLARATIVE PART OF A " &
"GENERIC SUBPROGRAM");
 
DECLARE
 
GENERIC
PROCEDURE GENPROC;
 
PROCEDURE GENPROC IS
 
TYPE FIXED IS DELTA 2.0**(-4) RANGE -10.0..10.0;
 
TESTFIX : FIXED := 0.0;
FOR TESTFIX USE AT SPPRT13.VARIABLE_ADDRESS;
BEGIN
IF EQUAL (3, 3) THEN
TESTFIX := 1.0;
END IF;
IF TESTFIX /= 1.0 THEN
FAILED ("WRONG VALUE FOR VARIABLE IN " &
"A GENERIC PROCEDURE");
END IF;
IF TESTFIX'ADDRESS /=
SPPRT13.VARIABLE_ADDRESS THEN
FAILED ("WRONG ADDRESS FOR VARIABLE " &
"IN A GENERIC PROCEDURE");
END IF;
END GENPROC;
 
PROCEDURE PROC IS NEW GENPROC;
BEGIN
PROC;
END;
RESULT;
END CD5012E;
/cd2c11a.tst
0,0 → 1,140
--CD2C11A.TST
 
-- 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:
-- IF A TASK STORAGE SIZE SPECIFICATION IS GIVEN FOR A TASK
-- TYPE, THEN OPERATIONS ON VALUES OF THE TASK TYPE ARE NOT
-- AFFECTED.
 
-- MACRO SUBSTITUTION:
-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR
-- THE ACTIVATION OF A TASK.
 
-- HISTORY
-- DHH 09/24/87 CREATED ORIGINAL TEST.
-- RJW 07/06/88 REVISED THE TEST TO REMOVE UNINITIALIZED 'IN OUT'
-- PARAMETER. CHANGED EXTENSION TO 'TST'.
 
WITH REPORT; USE REPORT;
PROCEDURE CD2C11A IS
 
TASK_STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE;
 
BEGIN
 
TEST ("CD2C11A", "IF A TASK STORAGE SIZE SPECIFICATION IS " &
"GIVEN FOR A TASK TYPE, THEN OPERATIONS " &
"ON VALUES OF THE TASK TYPE ARE NOT AFFECTED");
 
DECLARE
PACKAGE PACK IS
 
TYPE FLT IS DIGITS 1;
 
TASK TYPE TTYPE IS
ENTRY ADD(J :IN INTEGER; K : IN OUT INTEGER);
ENTRY MULT(Y : IN FLT; Z : IN OUT FLT);
END TTYPE;
 
 
M : INTEGER := 81;
N : INTEGER := 0;
V,W : FLT RANGE 1.0..512.0 := 2.0;
 
FOR TTYPE'STORAGE_SIZE USE TASK_STORAGE_SIZE;
 
T : TTYPE;
 
END PACK;
 
PACKAGE BODY PACK IS
FUNCTION IDENT_FLT(FT : FLT) RETURN FLT IS
BEGIN
IF EQUAL(5,5) THEN
RETURN FT;
ELSE
RETURN 0.0;
END IF;
END IDENT_FLT;
 
TASK BODY TTYPE IS
ITEMP : INTEGER := 0;
FTEMP : FLT := 0.0;
BEGIN
ACCEPT ADD(J :IN INTEGER; K : IN OUT INTEGER) DO
ITEMP := J;
IF EQUAL(3,3) THEN
K := ITEMP;
ELSE
K := 0;
END IF;
END ADD;
ACCEPT MULT(Y : IN FLT; Z : IN OUT FLT) DO
FTEMP := Y;
IF EQUAL(3,3) THEN
Z := FTEMP;
ELSE
Z := 0.0;
END IF;
END MULT;
END TTYPE;
 
PROCEDURE TEST_TASK(G : IN TTYPE;
S : IN FLT; T : IN OUT FLT) IS
R : FLT := 4.0;
BEGIN
IF NOT (G'CALLABLE) OR G'TERMINATED THEN
FAILED("TASK INSIDE PROCEDURE IS SHOWING " &
"WRONG VALUE FOR 'CALLABLE OR " &
"'TERMINATED");
END IF;
G.MULT(S,T);
END TEST_TASK;
 
BEGIN
 
IF TTYPE'STORAGE_SIZE < IDENT_INT(TASK_STORAGE_SIZE) THEN
FAILED("ACTUAL 'STORAGE_SIZE USED IS SMALLER " &
"THAN SIZE REQUESTED");
END IF;
 
T.ADD(M,N);
 
IF M /= IDENT_INT(N) THEN
FAILED("TASK CALL PARAMETERS NOT EQUAL");
END IF;
 
V := IDENT_FLT(13.0);
TEST_TASK(T,V,W);
IF V /= IDENT_FLT(W) THEN
FAILED("TASK AS PARAMETER FAILED");
END IF;
 
END PACK;
BEGIN
NULL;
END;
 
RESULT;
END CD2C11A;
/cd7101d.ada
0,0 → 1,53
-- CD7101D.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 FOR MIN_INT AND MAX_INT IN PACKAGE SYSTEM,
-- INTEGER'FIRST >= MIN_INT AND INTEGER'LAST <= MAX_INT.
 
-- HISTORY:
-- JET 09/10/87 CREATED ORIGINAL TEST.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
 
PROCEDURE CD7101D IS
 
BEGIN
 
TEST ("CD7101D", "CHECK THAT FOR MIN_INT AND MAX_INT IN PACKAGE " &
"SYSTEM, INTEGER'FIRST >= MIN_INT AND INTEGER'" &
"LAST <= MAX_INT");
 
IF INTEGER'POS (INTEGER'FIRST) < SYSTEM.MIN_INT THEN
FAILED ("INCORRECT VALUE FOR SYSTEM.MIN_INT");
END IF;
 
IF INTEGER'POS (INTEGER'LAST) > SYSTEM.MAX_INT THEN
FAILED ("INCORRECT VALUE FOR SYSTEM.MAX_INT");
END IF;
 
RESULT;
 
END CD7101D;
/cd30001.a
0,0 → 1,284
-- CD30001.A
--
-- 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 X'Address produces a useful result when X is an aliased
-- object.
-- Check that X'Address produces a useful result when X is an object of
-- a by-reference type.
-- Check that X'Address produces a useful result when X is an entity
-- whose Address has been specified.
--
-- Check that aliased objects and subcomponents are allocated on storage
-- element boundaries. Check that objects and subcomponents of by
-- reference types are allocated on storage element boundaries.
--
-- Check that for an array X, X'Address points at the first component
-- of the array, and not at the array bounds.
--
-- TEST DESCRIPTION:
-- This test defines a data structure (an array of records) where each
-- aspect of the data structure is aliased. The test checks 'Address
-- for each "layer" of aliased objects.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 22 JUL 95 SAIC Initial version
-- 08 MAY 96 SAIC Reinforced for 2.1
-- 16 FEB 98 EDS Modified documentation
--!
 
----------------------------------------------------------------- CD30001_0
 
with SPPRT13;
package CD30001_0 is
 
-- Check that X'Address produces a useful result when X is an aliased
-- object.
-- Check that X'Address produces a useful result when X is an object of
-- a by-reference type.
-- Check that X'Address produces a useful result when X is an entity
-- whose Address has been specified.
-- (using the new form of "for X'Address use ...")
--
-- Check that aliased objects and subcomponents are allocated on storage
-- element boundaries. Check that objects and subcomponents of by
-- reference types are allocated on storage element boundaries.
 
type Simple_Enum_Type is (Just, A, Little, Bit);
 
type Data is record
Aliased_Comp_1 : aliased Simple_Enum_Type;
Aliased_Comp_2 : aliased Simple_Enum_Type;
end record;
 
type Array_W_Aliased_Comps is array(1..2) of aliased Data;
 
Aliased_Object : aliased Array_W_Aliased_Comps;
 
Specific_Object : aliased Array_W_Aliased_Comps;
for Specific_Object'Address use SPPRT13.Variable_Address2; -- ANX-C RQMT.
 
procedure TC_Check_Aliased_Addresses;
 
procedure TC_Check_Specific_Addresses;
 
procedure TC_Check_By_Reference_Types;
 
end CD30001_0;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with Report;
with System.Storage_Elements;
with System.Address_To_Access_Conversions;
package body CD30001_0 is
 
package Simple_Enum_Type_Ref_Conv is
new System.Address_To_Access_Conversions(Simple_Enum_Type);
 
package Data_Ref_Conv is new System.Address_To_Access_Conversions(Data);
 
package Array_W_Aliased_Comps_Ref_Conv is
new System.Address_To_Access_Conversions(Array_W_Aliased_Comps);
 
use type System.Address;
use type System.Storage_Elements.Integer_Address;
use type System.Storage_Elements.Storage_Offset;
 
procedure TC_Check_Aliased_Addresses is
use type Simple_Enum_Type_Ref_Conv.Object_Pointer;
use type Data_Ref_Conv.Object_Pointer;
use type Array_W_Aliased_Comps_Ref_Conv.Object_Pointer;
 
begin
 
-- Check the object Aliased_Object
 
if Aliased_Object'Address not in System.Address then
Report.Failed("Aliased_Object'Address not an address");
end if;
 
if Array_W_Aliased_Comps_Ref_Conv.To_Pointer(Aliased_Object'Address)
/= Aliased_Object'Unchecked_Access then
Report.Failed
("'Unchecked_Access does not match expected address value");
end if;
 
-- Check the element Aliased_Object(1)
 
if Data_Ref_Conv.To_Address( Aliased_Object(1)'Access )
/= Aliased_Object(1)'Address then
Report.Failed
("Array element 'Access does not match expected address value");
end if;
 
-- Check that Array'Address points at the first component...
 
if Array_W_Aliased_Comps_Ref_Conv.To_Address( Aliased_Object'Access )
/= Aliased_Object(1)'Address then
Report.Failed
("Address of array object does not equal address of first component");
end if;
 
-- Check the components of Aliased_Object(2)
 
if Simple_Enum_Type_Ref_Conv.To_Address(
Aliased_Object(2).Aliased_Comp_1'Unchecked_Access)
not in System.Address then
Report.Failed("Component 2 'Unchecked_Access not a valid address");
end if;
 
if Aliased_Object(2).Aliased_Comp_2'Address not in System.Address then
Report.Failed("Component 2 not located at a valid address ");
end if;
 
end TC_Check_Aliased_Addresses;
 
procedure TC_Check_Specific_Addresses is
use type System.Address;
use type System.Storage_Elements.Integer_Address;
use type Simple_Enum_Type_Ref_Conv.Object_Pointer;
use type Data_Ref_Conv.Object_Pointer;
use type Array_W_Aliased_Comps_Ref_Conv.Object_Pointer;
begin
 
-- Check the object Specific_Object
 
if System.Storage_Elements.To_Integer(Specific_Object'Address)
/= System.Storage_Elements.To_Integer(SPPRT13.Variable_Address2) then
Report.Failed
("Specific_Object not at address specified in representation clause");
end if;
 
if Array_W_Aliased_Comps_Ref_Conv.To_Pointer(SPPRT13.Variable_Address2)
/= Specific_Object'Unchecked_Access then
Report.Failed("Specific_Object'Unchecked_Access not expected value");
end if;
 
-- Check the element Specific_Object(1)
 
if Data_Ref_Conv.To_Address( Specific_Object(1)'Access )
/= Specific_Object(1)'Address then
Report.Failed
("Specific Array element 'Access does not correspond to the "
& "elements 'Address");
end if;
 
-- Check that Array'Address points at the first component...
 
if Array_W_Aliased_Comps_Ref_Conv.To_Address( Specific_Object'Access )
/= Specific_Object(1)'Address then
Report.Failed
("Address of array object does not equal address of first component");
end if;
 
-- Check the components of Specific_Object(2)
 
if Simple_Enum_Type_Ref_Conv.To_Address(
Specific_Object(1).Aliased_Comp_1'Access)
not in System.Address then
Report.Failed("Access value of first record component for object at " &
"specific address not a valid address");
end if;
 
if Specific_Object(2).Aliased_Comp_2'Address not in System.Address then
Report.Failed("Second record component for object at specific " &
"address not located at a valid address");
end if;
 
end TC_Check_Specific_Addresses;
 
-- Check that X'Address produces a useful result when X is an object of
-- a by-reference type.
 
type Tagged_But_Not_Exciting is tagged record
A_Bit_Of_Data : Boolean;
end record;
 
Tagged_Object : Tagged_But_Not_Exciting;
 
procedure Muck_With_Addresses( It : in out Tagged_But_Not_Exciting;
Its_Address : in System.Address ) is
begin
if It'Address /= Its_Address then
Report.Failed("Address of object passed by reference does not " &
"match address of object passed" );
end if;
end Muck_With_Addresses;
 
procedure TC_Check_By_Reference_Types is
begin
Muck_With_Addresses( Tagged_Object, Tagged_Object'Address );
end TC_Check_By_Reference_Types;
 
end CD30001_0;
 
------------------------------------------------------------------- CD30001
 
with Report;
with CD30001_0;
procedure CD30001 is
 
begin -- Main test procedure.
 
Report.Test ("CD30001",
"Check that X'Address produces a useful result when X is " &
"an aliased object, or an entity whose Address has been " &
"specified" );
-- Check that X'Address produces a useful result when X is an aliased
-- object.
--
-- Check that aliased objects and subcomponents are allocated on storage
-- element boundaries. Check that objects and subcomponents of by
-- reference types are allocated on storage element boundaries.
 
CD30001_0.TC_Check_Aliased_Addresses;
 
-- Check that X'Address produces a useful result when X is an entity
-- whose Address has been specified.
 
CD30001_0.TC_Check_Specific_Addresses;
 
-- Check that X'Address produces a useful result when X is an object of
-- a by-reference type.
 
CD30001_0.TC_Check_By_Reference_Types;
 
Report.Result;
 
end CD30001;
/cd5012i.ada
0,0 → 1,87
-- CD5012I.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF AN
-- ACCESS TYPE IN THE DECLARATIVE PART OF A GENERIC SUBPROGRAM.
 
-- HISTORY:
-- DHH 09/17/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
WITH SPPRT13;
PROCEDURE CD5012I IS
 
BEGIN
 
TEST ("CD5012I", "AN ADDRESS CLAUSE CAN BE " &
"GIVEN FOR A VARIABLE OF AN ACCESS " &
"TYPE IN THE DECLARATIVE PART OF A " &
"GENERIC SUBPROGRAM");
 
DECLARE
 
GENERIC
PROCEDURE GENPROC;
 
PROCEDURE GENPROC IS
 
TYPE CELL;
TYPE POINTER IS ACCESS CELL;
TYPE CELL IS
RECORD
VALUE : INTEGER;
NEXT : POINTER;
END RECORD;
 
C,PTR : POINTER := NULL;
 
FOR PTR USE AT
SPPRT13.VARIABLE_ADDRESS;
BEGIN
PTR := NEW CELL'(0,NULL);
C := PTR;
 
IF EQUAL (3, 3) THEN
PTR.VALUE := 1;
PTR.NEXT := C;
END IF;
IF PTR.ALL /= (1,C) THEN
FAILED ("WRONG VALUE FOR VARIABLE IN " &
"A GENERIC PROCEDURE");
END IF;
IF PTR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN
FAILED ("WRONG ADDRESS FOR VARIABLE " &
"IN A GENERIC PROCEDURE");
END IF;
END GENPROC;
 
PROCEDURE PROC IS NEW GENPROC;
BEGIN
PROC;
END;
RESULT;
END CD5012I;
/cd1009t.tst
0,0 → 1,77
-- CD1009T.TST
 
-- 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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE
-- PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL
-- TYPE DECLARATION IS A TASK TYPE, DECLARED IN THE VISIBLE
-- PART OF THE SAME PACKAGE.
 
-- MACRO SUBSTITUTION:
-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR
-- THE ACTIVATION OF A TASK.
 
-- HISTORY:
-- VCL 10/21/87 CREATED ORIGINAL TEST.
-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO A MACRO VALUE AND CHANGED
-- EXTENSION FROM '.DEP' TO '.TST'.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009T IS
BEGIN
TEST ("CD1009T", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " &
"PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE " &
"TYPE, WHOSE FULL TYPE DECLARATION IS A " &
"TASK TYPE, DECLARED IN THE VISIBLE PART OF " &
"THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := $TASK_STORAGE_SIZE;
 
TYPE CHECK_TYPE_1;
TYPE ACC IS ACCESS CHECK_TYPE_1;
 
TASK TYPE CHECK_TYPE_1 IS END CHECK_TYPE_1;
PRIVATE
FOR CHECK_TYPE_1'STORAGE_SIZE
USE SPECIFIED_SIZE;
END PACK;
 
PACKAGE BODY PACK IS
TASK BODY CHECK_TYPE_1 IS
I : INTEGER;
BEGIN
NULL;
END CHECK_TYPE_1;
END PACK;
 
USE PACK;
BEGIN
IF CHECK_TYPE_1'STORAGE_SIZE < SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO SMALL");
END IF;
END;
 
RESULT;
END CD1009T;
/cd70001.a
0,0 → 1,201
--
-- CD70001.A
--
-- 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 package System includes Max_Base_Digits, Address,
-- Null_Address, Word_Size, functions "<", "<=", ">", ">=", "="
-- (with Address parameters and Boolean results), Bit_Order,
-- Default_Bit_Order, Any_Priority, Interrupt_Priority,
-- and Default_Priority.
--
-- Check that package System.Storage_Elements includes all required
-- types and operations.
--
-- TEST DESCRIPTION:
-- The test checks for the existence of the names additional
-- to package system above those names tested for in 9Xbasic.
--
-- This test checks that the semantics provided in Storage_Elements
-- are present and operate marginally within expectations (to the best
-- extent possible in a portable implementation independent fashion).
--
--
-- CHANGE HISTORY:
-- 09 MAY 95 SAIC Initial version
-- 27 JAN 96 SAIC Revised for 2.1; Allow negative address delta
--
--!
 
with Report;
with Ada.Text_IO;
with System.Storage_Elements;
with System.Address_To_Access_Conversions;
procedure CD70001 is
use System;
 
procedure CD70 is
 
type Int_Max is range Min_Int .. Max_Int;
 
My_Int : Int_Max := System.Max_Base_Digits + System.Word_Size;
 
An_Address : Address;
An_Other_Address : Address := An_Address'Address;
 
begin -- 7.0
 
 
if Default_Bit_Order not in High_Order_First..Low_Order_First then
Report.Failed ("Default_Bit_Order invalid");
end if;
 
if Bit_Order'Pos(High_Order_First) /= 0 then
Report.Failed ("Bit_Order'Pos(High_Order_First) /= 0");
end if;
 
if Bit_Order'Pos(Low_Order_First) /= 1 then
Report.Failed ("Bit_Order'Pos(Low_Order_First) /= 1");
end if;
 
An_Address := My_Int'Address;
 
if An_Address = Null_Address then
Report.Failed ("Null_Address matched a real address");
end if;
 
 
if An_Address'Address /= An_Other_Address then
Report.Failed("Value set at elaboration not equal to itself");
end if;
 
if An_Address'Address > An_Other_Address
and An_Address'Address < An_Other_Address then
Report.Failed("Address is both greater and less!");
end if;
 
if not (An_Address'Address >= An_Other_Address
and An_Address'Address <= An_Other_Address) then
Report.Failed("Address comparisons wrong");
end if;
 
 
if Priority'First /= Any_Priority'First then
Report.Failed ("Priority'First /= Any_Priority'First");
end if;
 
if Interrupt_Priority'First /= Priority'Last+1 then
Report.Failed ("Interrupt_Priority'First /= Priority'Last+1");
end if;
 
if Interrupt_Priority'Last /= Any_Priority'Last then
Report.Failed ("Interrupt_Priority'Last /= Any_Priority'Last");
end if;
 
if Default_Priority /= ((Priority'First + Priority'Last)/2) then
Report.Failed ("Default_Priority wrong value");
end if;
 
end CD70;
 
procedure CD71 is
use System.Storage_Elements;
 
Storehouse_1 : Storage_Array(0..127);
Storehouse_2 : Storage_Array(0..127);
 
House_Offset : Storage_Offset;
 
begin -- 7.1
 
 
if Storage_Count'First /= 0 then
Report.Failed ("Storage_Count'First /= 0");
end if;
 
if Storage_Count'Last /= Storage_Offset'Last then
Report.Failed ("Storage_Count'Last /= Storage_Offset'Last");
end if;
 
 
if Storage_Element'Size /= Storage_Unit then
Report.Failed ("Storage_Element'Size /= Storage_Unit");
end if;
 
if Storage_Array'Component_Size /= Storage_Unit then
Report.Failed ("Storage_Array'Element_Size /= Storage_Unit");
end if;
 
if Storage_Element'Last+1 /= 0 then
Report.Failed ("Storage_Element not modular");
end if;
 
 
-- "+", "-"( Address, Storage_Offset) and inverse
 
House_Offset := Storehouse_2'Address - Storehouse_1'Address;
-- Address - Address = Offset
-- Note that House_Offset may be a negative value
 
if House_Offset + Storehouse_1'Address /= Storehouse_2'Address then
-- Offset + Address = Address
Report.Failed ("Storage arithmetic non-linear O+A");
end if;
 
if Storehouse_1'Address + House_Offset /= Storehouse_2'Address then
-- Address + Offset = Address
Report.Failed ("Storage arithmetic non-linear A+O");
end if;
 
if Storehouse_2'Address - House_Offset /= Storehouse_1'Address then
-- Address - Offset = Address
Report.Failed ("Storage arithmetic non-linear A-O");
end if;
 
if (Storehouse_2'Address mod abs(House_Offset) > abs(House_Offset)) then
-- "mod"( Address, Storage_Offset)
Report.Failed("Mod arithmetic");
end if;
 
 
if Storehouse_1'Address
/= To_Address(To_Integer(Storehouse_1'Address)) then
Report.Failed("To_Address, To_Integer not symmetric");
end if;
 
end CD71;
 
 
begin -- Main test procedure.
 
Report.Test ("CD70001", "Check package System" );
 
CD70;
 
CD71;
 
Report.Result;
 
end CD70001;
/cd5012m.ada
0,0 → 1,78
-- CD5012M.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A
-- LIMITED PRIVATE TYPE IN THE DECLARATIVE PART OF A GENERIC
-- SUBPROGRAM.
 
-- HISTORY:
-- DHH 09/15/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; USE SYSTEM;
WITH REPORT; USE REPORT;
WITH SPPRT13;
PROCEDURE CD5012M IS
 
BEGIN
 
TEST ("CD5012M", "AN ADDRESS CLAUSE CAN BE " &
"GIVEN FOR A VARIABLE OF A LIMITED " &
"PRIVATE TYPE IN THE DECLARATIVE " &
"PART OF A GENERIC SUBPROGRAM");
 
DECLARE
 
PACKAGE P IS
TYPE FIXED IS LIMITED PRIVATE;
 
PRIVATE
TYPE FIXED IS DELTA 2.0**(-4) RANGE -10.0..10.0;
END P;
 
USE P;
 
GENERIC
PROCEDURE GENPROC;
 
PROCEDURE GENPROC IS
 
TESTFIX : FIXED;
 
FOR TESTFIX USE AT
SPPRT13.VARIABLE_ADDRESS;
BEGIN
IF TESTFIX'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN
FAILED ("WRONG ADDRESS FOR LIMITED PRIVATE " &
"TYPE VARIABLE IN GENERIC PROCEDURE");
END IF;
END GENPROC;
 
PROCEDURE PROC IS NEW GENPROC;
BEGIN
PROC;
END;
RESULT;
END CD5012M;
/cda201b.ada
0,0 → 1,63
-- CDA201B.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 UNCHECKED_CONVERSION CAN BE INSTANTIATED FOR
-- CONVERSION BETWEEN FLOAT AND BOOLEAN ARRAY TYPES.
 
-- HISTORY:
-- JET 09/12/88 CREATED ORIGINAL TEST.
-- DHH 05/17/89 CHANGED FROM '.DEP' TEST TO '.ADA' TEST.
-- GJD 11/15/95 REMOVED USE OF OBSOLETE ADA 83 ATTRIBUTE (LARGE).
 
WITH REPORT; USE REPORT;
WITH UNCHECKED_CONVERSION;
PROCEDURE CDA201B IS
 
TYPE BOOL_ARR IS ARRAY (1..FLOAT'SIZE) OF BOOLEAN;
PRAGMA PACK (BOOL_ARR);
 
B : BOOL_ARR;
 
FUNCTION FLT_TO_BOOL IS NEW UNCHECKED_CONVERSION(FLOAT, BOOL_ARR);
 
FUNCTION BOOL_TO_FLT IS NEW UNCHECKED_CONVERSION(BOOL_ARR, FLOAT);
 
BEGIN
TEST ("CDA201B", "CHECK THAT UNCHECKED_CONVERSION CAN BE " &
"INSTANTIATED FOR CONVERSION BETWEEN " &
"FLOAT AND BOOLEAN ARRAY TYPES");
 
B := FLT_TO_BOOL(FLOAT'LAST + FLOAT(IDENT_INT(0)));
 
FOR J IN B'RANGE LOOP
B(J) := B(J+IDENT_INT(0));
END LOOP;
 
IF BOOL_TO_FLT(B) /= FLOAT'LAST THEN
FAILED("INCORRECT RESULT FROM FLOAT-ARRAY-FLOAT");
END IF;
 
RESULT;
END CDA201B;
/cd2d11a.ada
0,0 → 1,214
-- CD2D11A.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 IF A SMALL SPECIFICATION IS GIVEN FOR A
-- FIXED POINT TYPE, THEN ARITHMETIC OPERATIONS ON VALUES OF THE
-- TYPE ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE.
 
-- HISTORY:
-- BCB 09/01/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH REPORT; USE REPORT;
PROCEDURE CD2D11A IS
 
BASIC_SMALL : CONSTANT := 2.0 ** (-4);
 
TYPE BASIC_TYPE IS DELTA 2.0 ** (-4) RANGE -4.0 .. 4.0;
 
TYPE CHECK_TYPE IS DELTA 1.0 RANGE -4.0 .. 4.0;
 
FOR CHECK_TYPE'SMALL USE BASIC_SMALL;
 
CNEG1 : CHECK_TYPE := -3.5;
CNEG2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0);
CPOS1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0);
CPOS2 : CHECK_TYPE := 3.5;
CZERO : CHECK_TYPE;
 
TYPE ARRAY_TYPE IS ARRAY (0 .. 3) OF CHECK_TYPE;
CHARRAY : ARRAY_TYPE :=
(-3.5, CHECK_TYPE (-1.0/3.0), CHECK_TYPE (4.0/6.0), 3.5);
 
TYPE REC_TYPE IS RECORD
COMPN1 : CHECK_TYPE := -3.5;
COMPN2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0);
COMPP1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0);
COMPP2 : CHECK_TYPE := 3.5;
END RECORD;
 
CHREC : REC_TYPE;
 
FUNCTION IDENT (FX : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN FX;
ELSE
RETURN 0.0;
END IF;
END IDENT;
 
PROCEDURE PROC (N1_IN, P1_IN : CHECK_TYPE;
N2_INOUT,P2_INOUT : IN OUT CHECK_TYPE;
CZOUT : OUT CHECK_TYPE) IS
BEGIN
 
IF IDENT (N1_IN) + P1_IN NOT IN
-2.875 .. -2.8125 OR
P2_INOUT - IDENT (P1_IN) NOT IN
2.8125 .. 2.875 THEN
FAILED ("INCORRECT RESULTS FOR " &
"BINARY ADDING OPERATORS - 1");
END IF;
 
IF +IDENT (N2_INOUT) NOT IN -0.375 .. -0.3125 OR
IDENT (-P1_IN) NOT IN -0.6875 .. -0.625 THEN
FAILED ("INCORRECT RESULTS FOR " &
"UNARY ADDING OPERATORS - 1");
END IF;
 
IF CHECK_TYPE (N1_IN * IDENT (P1_IN)) NOT IN
-2.4375 .. -2.1875 OR
CHECK_TYPE (IDENT (N2_INOUT) / P2_INOUT) NOT IN
-0.125 .. -0.0625 THEN
FAILED ("INCORRECT RESULTS FOR " &
"MULTIPLYING OPERATORS - 1");
END IF;
 
IF ABS IDENT (N2_INOUT) NOT IN 0.3125 .. 0.375 OR
IDENT (ABS P1_IN) NOT IN 0.625 .. 0.6875 THEN
FAILED ("INCORRECT RESULTS FOR " &
"ABSOLUTE VALUE OPERATORS - 1");
END IF;
 
CZOUT := 0.0;
 
END PROC;
 
BEGIN
TEST ("CD2D11A", "CHECK THAT IF A SMALL SPECIFICATION IS " &
"GIVEN FOR AN FIXED POINT TYPE, THEN " &
"ARITHMETIC OPERATIONS ON VALUES OF THE " &
"TYPE ARE NOT AFFECTED BY THE REPRESENTATION " &
"CLAUSE");
 
PROC (CNEG1, CPOS1, CNEG2, CPOS2, CZERO);
 
IF IDENT (CZERO) /= 0.0 THEN
FAILED ("INCORRECT VALUE FOR OUT PARAMETER");
END IF;
 
IF IDENT (CNEG1) + CPOS1 NOT IN -2.875 .. -2.8125 OR
CPOS2 - IDENT (CPOS1) NOT IN 2.8125 .. 2.875 THEN
FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 2");
END IF;
 
IF +IDENT (CNEG2) NOT IN -0.375 .. -0.3125 OR
IDENT (-CPOS1) NOT IN -0.6875 .. -0.625 THEN
FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 2");
END IF;
 
IF CHECK_TYPE (CNEG1 * IDENT (CPOS1)) NOT IN -2.4375 .. -2.1875 OR
CHECK_TYPE (IDENT (CNEG2) / CPOS2) NOT IN
-0.125 .. -0.0625 THEN
FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 2");
END IF;
 
IF ABS IDENT (CNEG2) NOT IN 0.3125 .. 0.375 OR
IDENT (ABS CPOS1) NOT IN 0.625 .. 0.6875 THEN
FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " &
"OPERATORS - 2");
END IF;
 
IF IDENT (CPOS1) NOT IN 0.625 .. 0.6875 OR
CNEG2 IN -0.25 .. 0.0 OR
IDENT (CNEG2) IN -1.0 .. -0.4375 THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2");
END IF;
 
IF IDENT (CHARRAY (0)) + CHARRAY (2) NOT IN
-2.875 .. -2.8125 OR
CHARRAY (3) - IDENT (CHARRAY (2)) NOT IN
2.8125 .. 2.875 THEN
FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 3");
END IF;
 
IF +IDENT (CHARRAY (1)) NOT IN -0.375 .. -0.3125 OR
IDENT (-CHARRAY (2)) NOT IN -0.6875 .. -0.625 THEN
FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 3");
END IF;
 
IF CHECK_TYPE (CHARRAY (0) * IDENT (CHARRAY (2))) NOT IN
-2.4375 .. -2.1875 OR
CHECK_TYPE (IDENT (CHARRAY (1)) / CHARRAY (3)) NOT IN
-0.125 .. -0.0625 THEN
FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 3");
END IF;
 
IF ABS IDENT (CHARRAY (1)) NOT IN 0.3125 .. 0.375 OR
IDENT (ABS CHARRAY (2)) NOT IN 0.625 .. 0.6875 THEN
FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " &
"OPERATORS - 3");
END IF;
 
IF IDENT (CHARRAY (2)) NOT IN 0.625 .. 0.6875 OR
CHARRAY (1) IN -0.25 .. 0.0 OR
IDENT (CHARRAY (1)) IN -1.0 .. -0.4375 THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3");
END IF;
 
IF IDENT (CHREC.COMPN1) + CHREC.COMPP1 NOT IN
-2.875 .. -2.8125 OR
CHREC.COMPP2 - IDENT (CHREC.COMPP1) NOT IN
2.8125 .. 2.875 THEN
FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 4");
END IF;
 
IF +IDENT (CHREC.COMPN2) NOT IN -0.375 .. -0.3125 OR
IDENT (-CHREC.COMPP1) NOT IN -0.6875 .. -0.625 THEN
FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 4");
END IF;
 
IF CHECK_TYPE (CHREC.COMPN1 * IDENT (CHREC.COMPP1)) NOT IN
-2.4375 .. -2.1875 OR
CHECK_TYPE (IDENT (CHREC.COMPN2) / CHREC.COMPP2) NOT IN
-0.125 .. -0.0625 THEN
FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 4");
END IF;
 
IF ABS IDENT (CHREC.COMPN2) NOT IN 0.3125 .. 0.375 OR
IDENT (ABS CHREC.COMPP1) NOT IN 0.625 .. 0.6875 THEN
FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " &
"OPERATORS - 4");
END IF;
 
IF IDENT (CHREC.COMPP1) NOT IN 0.625 .. 0.6875 OR
CHREC.COMPN2 IN -0.25 .. 0.0 OR
IDENT (CHREC.COMPN2) IN -1.0 .. -0.4375 THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4");
END IF;
 
RESULT;
END CD2D11A;
/cd2a24a.ada
0,0 → 1,226
-- CD2A24A.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 WHEN A SIZE SPECIFICATION AND AN ENUMERATION
-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE,
-- THEN OPERATIONS ON VALUES OF SUCH A TYPE WITH THE SMALLEST
-- APPROPRIATE SIGNED SIZE ARE NOT AFFECTED BY THE
-- REPRESENTATION CLAUSE.
 
-- HISTORY:
-- JET 08/19/87 CREATED ORIGINAL TEST.
-- DHH 04/18/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON
-- REPRESENTATION CLAUSE.
-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES.
 
WITH REPORT; USE REPORT;
WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'.
PROCEDURE CD2A24A IS
 
BASIC_SIZE : CONSTANT := 4;
 
TYPE CHECK_TYPE IS (ZERO, ONE, TWO);
 
FOR CHECK_TYPE USE (ZERO => 3, ONE => 4, TWO => 5);
 
FOR CHECK_TYPE'SIZE USE BASIC_SIZE;
 
C0 : CHECK_TYPE := ZERO;
C1 : CHECK_TYPE := ONE;
C2 : CHECK_TYPE := TWO;
 
TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE;
CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO);
 
TYPE REC_TYPE IS RECORD
COMP0 : CHECK_TYPE := ZERO;
COMP1 : CHECK_TYPE := ONE;
COMP2 : CHECK_TYPE := TWO;
END RECORD;
 
CHREC : REC_TYPE;
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN ONE;
END IF;
END IDENT;
 
PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE);
 
PROCEDURE PROC (CI0, CI2 : CHECK_TYPE;
CIO1, CIO2 : IN OUT CHECK_TYPE;
CO2 : OUT CHECK_TYPE) IS
BEGIN
IF NOT ((IDENT (CIO1) IN CIO1 .. CIO2) AND
(CI0 NOT IN IDENT (ONE) .. CIO2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS " &
"- 1");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (CI0) OR
CHECK_TYPE'VAL (1) /= IDENT (CIO1) OR
CHECK_TYPE'VAL (2) /= IDENT (CIO2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 1");
END IF;
 
IF CHECK_TYPE'PRED (CIO1) /= IDENT (CI0) OR
CHECK_TYPE'PRED (CIO2) /= IDENT (CIO1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 1");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CI0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (CIO1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (CIO2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 1");
END IF;
 
CO2 := TWO;
 
END PROC;
 
BEGIN
TEST ("CD2A24A", "CHECK THAT WHEN A SIZE SPECIFICATION AND " &
"AN ENUMERATION REPRESENTATION CLAUSE ARE " &
"GIVEN FOR AN ENUMERATION TYPE, THEN " &
"OPERATIONS ON VALUES OF SUCH A TYPE WITH " &
"THE SMALLEST APPROPRIATE SIGNED SIZE ARE " &
"NOT AFFECTED BY THE REPRESENTATION CLAUSE");
 
CHECK_1 (C0, BASIC_SIZE, "CHECK_TYPE");
PROC (ZERO, TWO, C1, C2, C2);
 
IF C1 /= ONE OR C2 /= TWO THEN
FAILED ("INCORRECT VALUE RETURNED BY PROCEDURE");
END IF;
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((C0 < IDENT (ONE)) AND(IDENT (C2) > IDENT (C1)) AND
(C1 <= IDENT (ONE)) AND(IDENT (TWO) = C2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 2");
END IF;
 
IF CHECK_TYPE'LAST /= IDENT (TWO) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST - 2");
END IF;
 
IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 2");
END IF;
 
IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR
CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 2");
END IF;
 
IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 2");
END IF;
 
IF CHARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE");
END IF;
 
IF NOT ((CHARRAY (0) < IDENT (ONE)) AND
(IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND
(CHARRAY (1) <= IDENT (ONE)) AND
(IDENT (TWO) = CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3");
END IF;
 
IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND
(CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (CHARRAY (0)) OR
CHECK_TYPE'VAL (1) /= IDENT (CHARRAY (1)) OR
CHECK_TYPE'VAL (2) /= IDENT (CHARRAY (2)) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 3");
END IF;
 
IF CHECK_TYPE'PRED (CHARRAY (1)) /= IDENT (CHARRAY (0)) OR
CHECK_TYPE'PRED (CHARRAY (2)) /= IDENT (CHARRAY (1)) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 3");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHARRAY (0)) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (CHARRAY (1)) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (CHARRAY (2)) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 3");
END IF;
 
IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE");
END IF;
 
IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND
(IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND
(CHREC.COMP1 <= IDENT (ONE)) AND
(IDENT (TWO) = CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4");
END IF;
 
IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND
(CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4");
END IF;
 
IF CHECK_TYPE'POS (CHREC.COMP0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (CHREC.COMP1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (CHREC.COMP2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 4");
END IF;
 
IF CHECK_TYPE'SUCC (CHREC.COMP0) /= IDENT (CHREC.COMP1) OR
CHECK_TYPE'SUCC (CHREC.COMP1) /= IDENT (CHREC.COMP2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 4");
END IF;
 
IF CHECK_TYPE'IMAGE (CHREC.COMP0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (CHREC.COMP1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (CHREC.COMP2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 4");
END IF;
 
 
RESULT;
 
END CD2A24A;
/cd2a24e.ada
0,0 → 1,220
-- CD2A24E.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 IF A SIZE CLAUSE AND AN ENUMERATION
-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE,
-- AND THE SMALLEST SIZE APPROPRIATE FOR AN UNSIGNED REPRESENTATION
-- IS SPECIFIED, THEN OPERATIONS ON THE TYPE ARE NOT AFFECTED.
 
-- HISTORY:
-- JET 08/19/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES.
 
WITH REPORT; USE REPORT;
PROCEDURE CD2A24E IS
 
BASIC_SIZE : CONSTANT := 3;
 
TYPE CHECK_TYPE IS (ZERO, ONE, TWO);
 
FOR CHECK_TYPE USE (ZERO => 3, ONE => 4,
TWO => 5);
 
FOR CHECK_TYPE'SIZE USE BASIC_SIZE;
 
C0 : CHECK_TYPE := ZERO;
C1 : CHECK_TYPE := ONE;
C2 : CHECK_TYPE := TWO;
 
TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE;
CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO);
 
TYPE REC_TYPE IS RECORD
COMP0 : CHECK_TYPE := ZERO;
COMP1 : CHECK_TYPE := ONE;
COMP2 : CHECK_TYPE := TWO;
END RECORD;
 
CHREC : REC_TYPE;
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN ONE;
END IF;
END IDENT;
 
PROCEDURE PROC (CI0, CI2 : CHECK_TYPE;
CIO1, CIO2 : IN OUT CHECK_TYPE;
CO2 : OUT CHECK_TYPE) IS
BEGIN
IF NOT ((CI0 < IDENT (ONE)) AND
(IDENT (CI2) > IDENT (CIO1)) AND
(CIO1 <= IDENT (ONE)) AND(IDENT (TWO) = CI2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " &
"- 1");
END IF;
 
IF CHECK_TYPE'POS (CI0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (CIO1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (CI2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 1");
END IF;
 
IF CHECK_TYPE'SUCC (CI0) /= IDENT (CIO1) OR
CHECK_TYPE'SUCC (CIO1) /= IDENT (CI2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 1");
END IF;
 
IF CHECK_TYPE'IMAGE (CI0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (CIO1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (CI2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 1");
END IF;
 
 
CO2 := TWO;
 
END PROC;
 
BEGIN
TEST ("CD2A24E", "CHECK THAT IF A SIZE CLAUSE AND AN ENUMERATION " &
"REPRESENTATION CLAUSE ARE GIVEN FOR AN " &
"ENUMERATION TYPE, AND THE SMALLEST SIZE " &
"APPROPRIATE FOR AN UNSIGNED REPRESENTATION " &
"IS SPECIFIED, THEN OPERATIONS ON THE TYPE " &
"ARE NOT AFFECTED");
 
PROC (ZERO, TWO, C1, C2, C2);
 
IF C1 /= ONE OR C2 /= TWO THEN
FAILED ("INCORRECT VALUE RETURNED BY PROCEDURE");
END IF;
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((IDENT (C1) IN C1 .. C2) AND
(C0 NOT IN IDENT (ONE) .. C2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2");
END IF;
 
IF CHECK_TYPE'FIRST /= IDENT (ZERO) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST - 2");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR
CHECK_TYPE'VAL (1) /= IDENT (C1) OR
CHECK_TYPE'VAL (2) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 2");
END IF;
 
IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR
CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 2");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 2");
END IF;
 
IF CHARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE");
END IF;
 
IF NOT ((CHARRAY (0) < IDENT (ONE)) AND
(IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND
(CHARRAY (1) <= IDENT (ONE)) AND
(IDENT (TWO) = CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3");
END IF;
 
IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND
(CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3");
END IF;
 
IF CHECK_TYPE'POS (CHARRAY (0)) /= IDENT_INT (0) OR
CHECK_TYPE'POS (CHARRAY (1)) /= IDENT_INT (1) OR
CHECK_TYPE'POS (CHARRAY (2)) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 3");
END IF;
 
IF CHECK_TYPE'SUCC (CHARRAY (0)) /= IDENT (CHARRAY (1)) OR
CHECK_TYPE'SUCC (CHARRAY (1)) /= IDENT (CHARRAY (2)) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 3");
END IF;
 
IF CHECK_TYPE'IMAGE (CHARRAY (0)) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (CHARRAY (1)) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (CHARRAY (2)) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 3");
END IF;
 
IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE");
END IF;
 
IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND
(IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND
(CHREC.COMP1 <= IDENT (ONE)) AND
(IDENT (TWO) = CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4");
END IF;
 
IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND
(CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'VAL (1) /= IDENT (CHREC.COMP1) OR
CHECK_TYPE'VAL (2) /= IDENT (CHREC.COMP2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 4");
END IF;
 
IF CHECK_TYPE'PRED (CHREC.COMP1) /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'PRED (CHREC.COMP2) /= IDENT (CHREC.COMP1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 4");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (CHREC.COMP1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (CHREC.COMP2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 4");
END IF;
 
RESULT;
END CD2A24E;
/cd2a32j.ada
0,0 → 1,135
-- CD2A32J.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 WHEN A SIZE SPECIFICATION OF THE SMALLEST APPROPRIATE
-- UNSIGNED SIZE IS GIVEN FOR AN INTEGER TYPE, THE TYPE CAN BE
-- PASSED AS AN ACTUAL PARAMETER TO GENERIC PROCEDURES.
 
-- HISTORY:
-- JET 08/12/87 CREATED ORIGINAL TEST.
-- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- SIZE CLAUSE VALUE TO 7, AND CHANGED OPERATOR ON
-- 'SIZE CHECKS.
-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING.
 
WITH REPORT; USE REPORT;
 
PROCEDURE CD2A32J IS
 
TYPE BASIC_INT IS RANGE 0 .. 126;
BASIC_SIZE : CONSTANT := 7;
 
FOR BASIC_INT'SIZE USE BASIC_SIZE;
 
BEGIN
 
TEST ("CD2A32J", "CHECK THAT WHEN A SIZE SPECIFICATION " &
"OF THE SMALLEST APPROPRIATE UNSIGNED SIZE " &
"IS GIVEN FOR AN INTEGER TYPE, THE TYPE " &
"CAN BE PASSED AS AN ACTUAL PARAMETER TO " &
"GENERIC PROCEDURES");
 
DECLARE -- TYPE DECLARATION WITHIN GENERIC PROCEDURE.
 
GENERIC
TYPE GPARM IS RANGE <>;
PROCEDURE GENPROC;
 
PROCEDURE GENPROC IS
 
SUBTYPE INT IS GPARM;
 
I0 : INT := 0;
I1 : INT := 63;
I2 : INT := 126;
 
FUNCTION IDENT (I : INT) RETURN INT IS
BEGIN
IF EQUAL (0,0) THEN
RETURN I;
ELSE
RETURN 0;
END IF;
END IDENT;
 
BEGIN -- GENPROC.
 
IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR INT'SIZE");
END IF;
 
IF I0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR I0'SIZE");
END IF;
 
IF NOT ((I0 < IDENT (1)) AND
(IDENT (I2) > IDENT (I1)) AND
(I1 <= IDENT (63)) AND
(IDENT (126) = I2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL " &
"OPERATORS");
END IF;
 
IF NOT (((I0 + I2) = I2) AND
((I2 - I1) = I1) AND
((I1 * IDENT (2)) = I2) AND
((I2 / I1) = IDENT (2)) AND
((I1 ** 1) = IDENT (63)) AND
((I2 REM 10) = IDENT (6)) AND
((I1 MOD 10) = IDENT (3))) THEN
FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " &
"OPERATORS");
END IF;
 
IF INT'POS (I0) /= IDENT_INT (0) OR
INT'POS (I1) /= IDENT_INT (63) OR
INT'POS (I2) /= IDENT_INT (126) THEN
FAILED ("INCORRECT VALUE FOR INT'POS");
END IF;
 
IF INT'SUCC (I0) /= IDENT (1) OR
INT'SUCC (I1) /= IDENT (64) THEN
FAILED ("INCORRECT VALUE FOR INT'SUCC");
END IF;
 
IF INT'IMAGE (I0) /= IDENT_STR (" 0") OR
INT'IMAGE (I1) /= IDENT_STR (" 63") OR
INT'IMAGE (I2) /= IDENT_STR (" 126") THEN
FAILED ("INCORRECT VALUE FOR INT'IMAGE");
END IF;
 
END GENPROC;
 
PROCEDURE NEWPROC IS NEW GENPROC (BASIC_INT);
 
BEGIN
 
NEWPROC;
 
END;
 
RESULT;
 
END CD2A32J;
/cd2a24i.ada
0,0 → 1,126
-- CD2A24I.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 IF A SIZE CLAUSE (SPECIFYING THE SMALLEST APPROPRIATE
-- SIZE FOR A SIGNED REPRESENTATION) AND AN ENUMERATION
-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE,
-- THEN THE TYPE CAN BE USED AS AN ACTUAL PARAMETER IN AN
-- INSTANTIATION.
 
-- HISTORY:
-- JET 08/19/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES.
 
WITH REPORT; USE REPORT;
PROCEDURE CD2A24I IS
 
TYPE BASIC_ENUM IS (ZERO, ONE, TWO);
BASIC_SIZE : CONSTANT := 4;
 
FOR BASIC_ENUM USE (ZERO => 3, ONE => 4,
TWO => 5);
 
FOR BASIC_ENUM'SIZE USE BASIC_SIZE;
 
BEGIN
TEST ("CD2A24I", "CHECK THAT IF A SIZE CLAUSE (SPECIFYING THE " &
"SMALLEST APPROPRIATE SIZE FOR A SIGNED " &
"REPRESENTATION) AND AN ENUMERATION " &
"REPRESENTATION CLAUSE ARE GIVEN FOR AN " &
"ENUMERATION TYPE, THEN THE TYPE CAN BE USED " &
"AS AN ACTUAL PARAMETER IN AN INSTANTIATION");
 
 
DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE.
 
GENERIC
TYPE GPARM IS (<>);
PROCEDURE GENPROC (C0, C1, C2: GPARM);
 
PROCEDURE GENPROC (C0, C1, C2: GPARM) IS
 
SUBTYPE CHECK_TYPE IS GPARM;
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN C1;
END IF;
END IDENT;
 
BEGIN -- GENPROC.
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((C0 < IDENT (C1)) AND
(IDENT (C2) > IDENT (C1)) AND
(C1 <= IDENT (C1)) AND (IDENT (C2) = C2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL " &
"OPERATORS");
END IF;
 
IF CHECK_TYPE'FIRST /= IDENT (C0) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST");
END IF;
 
IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS");
END IF;
 
IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR
CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC");
END IF;
 
IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE");
END IF;
 
END GENPROC;
 
PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM);
 
BEGIN
 
NEWPROC (ZERO, ONE, TWO);
 
END;
 
RESULT;
 
END CD2A24I;
/cd3021a.ada
0,0 → 1,66
-- CD3021A.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 AGGREGATE IN AN ENUMERATION REPRESENTATION CLAUSE
-- IS NOT AMBIGUOUS EVEN IF THERE ARE SEVERAL ONE-DIMENSIONAL ARRAY
-- TYPES WITH THE ENUMERATION TYPE AS THE INDEX SUBTYPE.
 
-- HISTORY:
-- BCB 09/30/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CORRECTED
-- CHECKS FOR FAILURE.
 
WITH REPORT; USE REPORT;
 
PROCEDURE CD3021A IS
 
TYPE ENUM IS (A,B,C);
 
TYPE ARR1 IS ARRAY(ENUM) OF INTEGER;
TYPE ARR2 IS ARRAY(ENUM) OF INTEGER;
TYPE ARR3 IS ARRAY(ENUM) OF INTEGER;
 
FOR ENUM USE (A => 1,B => 2,C => 3);
 
A1 : ARR1 := (A => 5,B => 6,C => 13);
A2 : ARR2 := (A => 1,B => 2,C => 3);
A3 : ARR3 := (A => 0,B => 1,C => 2);
 
BEGIN
 
TEST ("CD3021A", "CHECK THAT THE AGGREGATE IN AN ENUMERATION " &
"REPRESENTATION CLAUSE IS NOT AMBIGUOUS EVEN " &
"IF THERE ARE SEVERAL ONE-DIMENSIONAL ARRAY " &
"TYPES WITH THE ENUMERATION TYPE AS THE INDEX " &
"SUBTYPE");
 
IF (A1 /= (IDENT_INT (5), IDENT_INT (6), IDENT_INT (13))) OR
(A2 /= (IDENT_INT (1), IDENT_INT (2), IDENT_INT (3))) OR
(A3 /= (IDENT_INT (0), IDENT_INT (1), IDENT_INT (2))) THEN
FAILED ("INCORRECT VALUES FOR ARRAYS");
END IF;
 
RESULT;
END CD3021A;
/cd1009b.ada
0,0 → 1,80
-- CD1009B.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 A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE
-- OR PRIVATE PART OF A PACKAGE FOR AN ENUMERATION TYPE DECLARED
-- IN THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/07/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009B IS
BEGIN
TEST ("CD1009B", "A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE " &
"OR PRIVATE PART OF A PACKAGE FOR AN " &
"ENUMERATION TYPE DECLARED IN THE VISIBLE " &
"PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE / 2;
 
TYPE CHECK_TYPE_1 IS (A0, A1, A2, A3);
FOR CHECK_TYPE_1'SIZE
USE SPECIFIED_SIZE;
 
TYPE CHECK_TYPE_2 IS (A0, A1, A2, A3);
PRIVATE
FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
X : CHECK_TYPE_1 := A0;
Y : CHECK_TYPE_2 := A2;
BEGIN
IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT");
END IF;
 
IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_2'SIZE IS INCORRECT");
END IF;
 
IF X'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT'SIZE IS TOO SMALL --" &
CHECK_TYPE_1'IMAGE(X));
END IF;
 
IF Y'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT'SIZE IS TOO SMALL --" &
CHECK_TYPE_2'IMAGE(Y));
END IF;
 
END;
 
RESULT;
END CD1009B;
/cd1009d.ada
0,0 → 1,84
-- CD1009D.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 A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE
-- OR PRIVATE PART OF A PACKAGE FOR A FIXED POINT TYPE DECLARED IN
-- THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/07/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009D IS
BEGIN
TEST ("CD1009D", "A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE " &
"OR PRIVATE PART OF A PACKAGE FOR A " &
"FIXED POINT TYPE DECLARED IN THE VISIBLE " &
"PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
TYPE SPECIFIED IS DELTA 2.0 ** (-4) RANGE 0.0 .. 10.0;
 
SPECIFIED_SIZE : CONSTANT := SPECIFIED'SIZE;
 
TYPE CHECK_TYPE_1 IS DELTA 2.0 ** (-1) RANGE 0.0 .. 1.0;
FOR CHECK_TYPE_1'SIZE
USE SPECIFIED_SIZE;
 
TYPE CHECK_TYPE_2 IS DELTA 2.0 ** (-1) RANGE 0.0 .. 1.0;
PRIVATE
FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
 
X: CHECK_TYPE_1 := 0.5;
Y: CHECK_TYPE_2 := 0.5;
 
BEGIN
IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT");
END IF;
 
IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_2'SIZE IS INCORRECT");
END IF;
 
IF X'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT SIZE IS TOO SMALL -- " &
"VALUE IS" & INTEGER'IMAGE ( INTEGER(X) ) );
END IF;
 
IF Y'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT SIZE IS TOO SMALL -- " &
"VALUE IS" & INTEGER'IMAGE ( INTEGER(Y) ) );
END IF;
 
END;
 
RESULT;
END CD1009D;
/cdb0a01.a
0,0 → 1,305
-- CDB0A01.A
--
-- 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 a storage pool may be user_determined, and that storage
-- is allocated by calling Allocate.
--
-- Check that a storage.pool may be specified using 'Storage_Pool
-- and that S'Storage_Pool denotes the storage pool of the type S.
--
-- TEST DESCRIPTION:
-- The package System.Storage_Pools is exercised by two very similar
-- packages which define a tree type and exercise it in a simple manner.
-- One package uses a user defined pool. The other package uses a
-- storage pool assigned by the implementation; Storage_Size is
-- specified for this pool.
-- The dispatching procedures Allocate and Deallocate are tested as an
-- intentional side effect of the tree packages.
--
-- For completeness, the actions of the tree packages are checked for
-- correct operation.
--
-- TEST FILES:
-- The following files comprise this test:
--
-- FDB0A00.A (foundation code)
-- CDB0A01.A
--
--
-- CHANGE HISTORY:
-- 02 JUN 95 SAIC Initial version
-- 07 MAY 96 SAIC Removed ambiguity with CDB0A02
-- 13 FEB 97 PWB.CTA Corrected lexically ordered string literal
--!
 
---------------------------------------------------------------- CDB0A01_1
 
---------------------------------------------------------- FDB0A00.Pool1
 
package FDB0A00.Pool1 is
User_Pool : Stack_Heap( 5_000 );
end FDB0A00.Pool1;
 
---------------------------------------------------------- FDB0A00.Comparator
 
with System.Storage_Pools;
package FDB0A00.Comparator is
 
function "="( A,B : System.Storage_Pools.Root_Storage_Pool'Class )
return Boolean;
 
end FDB0A00.Comparator;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with TCTouch;
package body FDB0A00.Comparator is
 
function "="( A,B : System.Storage_Pools.Root_Storage_Pool'Class )
return Boolean is
use type System.Address;
begin
return A'Address = B'Address;
end "=";
 
end FDB0A00.Comparator;
 
---------------------------------------------------------------- CDB0A01_2
 
with FDB0A00.Pool1;
package CDB0A01_2 is
 
type Cell;
type User_Pool_Tree is access Cell;
 
for User_Pool_Tree'Storage_Pool use FDB0A00.Pool1.User_Pool;
 
type Cell is record
Data : Character;
Left,Right : User_Pool_Tree;
end record;
 
procedure Insert( Item: Character; On_Tree : in out User_Pool_Tree );
 
procedure Traverse( The_Tree : User_Pool_Tree );
 
procedure Defoliate( The_Tree : in out User_Pool_Tree );
 
end CDB0A01_2;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with TCTouch;
with Unchecked_Deallocation;
package body CDB0A01_2 is
procedure Deallocate is new Unchecked_Deallocation(Cell,User_Pool_Tree);
 
-- Sort: zeros on the left, ones on the right...
procedure Insert( Item: Character; On_Tree : in out User_Pool_Tree ) is
begin
if On_Tree = null then
On_Tree := new Cell'(Item,null,null);
elsif Item > On_Tree.Data then
Insert(Item,On_Tree.Right);
else
Insert(Item,On_Tree.Left);
end if;
end Insert;
 
procedure Traverse( The_Tree : User_Pool_Tree ) is
begin
if The_Tree = null then
null; -- how very symmetrical
else
Traverse(The_Tree.Left);
TCTouch.Touch(The_Tree.Data);
Traverse(The_Tree.Right);
end if;
end Traverse;
 
procedure Defoliate( The_Tree : in out User_Pool_Tree ) is
begin
 
if The_Tree.Left /= null then
Defoliate(The_Tree.Left);
end if;
 
if The_Tree.Right /= null then
Defoliate(The_Tree.Right);
end if;
 
Deallocate(The_Tree);
 
end Defoliate;
 
end CDB0A01_2;
 
---------------------------------------------------------------- CDB0A01_3
 
with FDB0A00.Pool1;
package CDB0A01_3 is
 
type Cell;
type System_Pool_Tree is access Cell;
 
for System_Pool_Tree'Storage_Size use 2000;
 
-- assumptions: Cell is <= 20 storage_units
-- Tree building exercise requires O(15) cells
-- 2000 > 20 * 15 by a generous margin
 
type Cell is record
Data: Character;
Left,Right : System_Pool_Tree;
end record;
 
procedure Insert( Item: Character; On_Tree : in out System_Pool_Tree );
 
procedure Traverse( The_Tree : System_Pool_Tree );
 
procedure Defoliate( The_Tree : in out System_Pool_Tree );
 
end CDB0A01_3;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with TCTouch;
with Unchecked_Deallocation;
package body CDB0A01_3 is
procedure Deallocate is new Unchecked_Deallocation(Cell,System_Pool_Tree);
 
-- Sort: zeros on the left, ones on the right...
procedure Insert( Item: Character; On_Tree : in out System_Pool_Tree ) is
begin
if On_Tree = null then
On_Tree := new Cell'(Item,null,null);
elsif Item > On_Tree.Data then
Insert(Item,On_Tree.Right);
else
Insert(Item,On_Tree.Left);
end if;
end Insert;
 
procedure Traverse( The_Tree : System_Pool_Tree ) is
begin
if The_Tree = null then
null; -- how very symmetrical
else
Traverse(The_Tree.Left);
TCTouch.Touch(The_Tree.Data);
Traverse(The_Tree.Right);
end if;
end Traverse;
 
procedure Defoliate( The_Tree : in out System_Pool_Tree ) is
begin
 
if The_Tree.Left /= null then
Defoliate(The_Tree.Left);
end if;
 
if The_Tree.Right /= null then
Defoliate(The_Tree.Right);
end if;
 
Deallocate(The_Tree);
 
end Defoliate;
 
end CDB0A01_3;
 
------------------------------------------------------------------ CDB0A01
 
with Report;
with TCTouch;
with FDB0A00.Comparator;
with FDB0A00.Pool1;
with CDB0A01_2;
with CDB0A01_3;
 
procedure CDB0A01 is
 
Banyan : CDB0A01_2.User_Pool_Tree;
Torrey : CDB0A01_3.System_Pool_Tree;
 
use type CDB0A01_2.User_Pool_Tree;
use type CDB0A01_3.System_Pool_Tree;
 
Countess : constant String := "Ada Augusta Lovelace";
Cenosstu : constant String := " AALaaacdeeglostuuv";
Insertion : constant String := "AAAAAAAAAAAAAAAAAAAA";
Deallocation : constant String := "DDDDDDDDDDDDDDDDDDDD";
 
begin -- Main test procedure.
 
Report.Test ("CDB0A01", "Check that a storage pool may be " &
"user_determined, and that storage is " &
"allocated by calling Allocate. Check that " &
"a storage.pool may be specified using " &
"'Storage_Pool and that S'Storage_Pool denotes " &
"the storage pool of the type S" );
 
-- Check that S'Storage_Pool denotes the storage pool for the type S.
 
TCTouch.Assert(
FDB0A00.Comparator."="(FDB0A00.Pool1.User_Pool,
CDB0A01_2.User_Pool_Tree'Storage_Pool ),
"'Storage_Pool not correct for CDB0A01_2.User_Pool_Tree");
 
TCTouch.Assert_Not(
FDB0A00.Comparator."="(FDB0A00.Pool1.User_Pool,
CDB0A01_3.System_Pool_Tree'Storage_Pool ),
"'Storage_Pool not correct for CDB0A01_3.System_Pool_Tree");
 
-- Check that storage is allocated by calling Allocate.
 
for Count in Countess'Range loop
CDB0A01_2.Insert( Countess(Count), Banyan );
end loop;
TCTouch.Validate(Insertion, "Allocate calls via CDB0A01_2" );
 
for Count in Countess'Range loop
CDB0A01_3.Insert( Countess(Count), Torrey );
end loop;
TCTouch.Validate("", "Allocate calls via CDB0A01_3" );
 
CDB0A01_2.Traverse(Banyan);
TCTouch.Validate(Cenosstu, "Traversal of Banyan" );
 
CDB0A01_3.Traverse(Torrey);
TCTouch.Validate(Cenosstu, "Traversal of Torrey" );
 
CDB0A01_2.Defoliate(Banyan);
TCTouch.Validate(Deallocation, "Deforestation of Banyan" );
TCTouch.Assert(Banyan = null, "Banyan Deallocation result not null");
 
CDB0A01_3.Defoliate(Torrey);
TCTouch.Validate("", "Deforestation of Torrey" );
TCTouch.Assert(Torrey = null, "Torrey Deallocation result not null");
 
Report.Result;
 
end CDB0A01;
/cd1009f.ada
0,0 → 1,83
-- CD1009F.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 A 'SIZE' SPECIFICATION MAY BE GIVEN IN THE VISIBLE
-- OR PRIVATE PART OF A PACKAGE FOR A TWO-DIMENSIONAL ARRAY TYPE
-- DECLARED IN THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/07/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009F IS
BEGIN
TEST ("CD1009F", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE VISIBLE " &
"OR PRIVATE PART OF A PACKAGE FOR A " &
"TWO-DIMENSIONAL ARRAY TYPE DECLARED IN THE " &
"VISIBLE PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE * 25;
 
TYPE CHECK_TYPE_1 IS ARRAY (1 .. 5, 1 .. 5) OF INTEGER;
FOR CHECK_TYPE_1'SIZE
USE SPECIFIED_SIZE;
X : CHECK_TYPE_1 := ( OTHERS =>
( OTHERS => IDENT_INT(1) ) );
 
TYPE CHECK_TYPE_2 IS ARRAY (1 .. 5, 1 .. 5) OF INTEGER;
PRIVATE
FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
 
Y : CHECK_TYPE_2 := ( OTHERS =>
( OTHERS => IDENT_INT(5) ) );
BEGIN
IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT");
END IF;
 
IF X'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " &
"REPRESENTATIVE VALUE IS" &
INTEGER'IMAGE( X( IDENT_INT(1), IDENT_INT(2) ) ) );
END IF;
 
IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_2'SIZE IS INCORRECT");
END IF;
 
IF Y'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_2. " &
INTEGER'IMAGE( Y( IDENT_INT(1), IDENT_INT(2) ) ) );
END IF;
END;
 
RESULT;
END CD1009F;
/cd1009h.ada
0,0 → 1,79
-- CD1009H.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 A 'SIZE' SPECIFICATION MAY BE GIVEN IN THE PRIVATE
-- PART OF A PACKAGE FOR A PRIVATE TYPE DECLARED IN THE VISIBLE
-- PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 09/18/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009H IS
BEGIN
TEST ("CD1009H", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE " &
"PRIVATE PART OF A PACKAGE FOR A PRIVATE " &
"TYPE DECLARED IN THE VISIBLE PART OF THE " &
"SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE / 2;
 
TYPE CHECK_TYPE_1 IS PRIVATE;
C1 : CONSTANT CHECK_TYPE_1;
FUNCTION IMAGE ( A : CHECK_TYPE_1 ) RETURN STRING;
PRIVATE
TYPE CHECK_TYPE_1 IS RANGE 0 .. 7;
FOR CHECK_TYPE_1'SIZE
USE SPECIFIED_SIZE;
C1 : CONSTANT CHECK_TYPE_1 := CHECK_TYPE_1(IDENT_INT(1));
END PACK;
 
USE PACK;
X : CHECK_TYPE_1 := C1;
 
PACKAGE BODY PACK IS
FUNCTION IMAGE ( A : CHECK_TYPE_1 ) RETURN STRING IS
BEGIN
RETURN INTEGER'IMAGE ( INTEGER (A) );
END IMAGE;
END PACK;
 
BEGIN
IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT");
END IF;
 
IF X'SIZE < SPECIFIED_SIZE THEN
FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " &
"VALUE IS" & IMAGE(X));
END IF;
 
END;
 
RESULT;
END CD1009H;
/cd33002.a
0,0 → 1,140
-- CD33002.A
--
-- 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 Component_Sizes that are multiples of the word
-- size are supported.
--
-- Check that for such Component_Sizes arrays contain no gaps between
-- components.
--
-- TEST DESCRIPTION:
-- This test defines three array types and specifies their layouts
-- using representation specifications for the 'Component_Size and
-- pragma Packs for each. It then checks that the implied assumptions
-- about the resulting layout actually can be made.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 22 JUL 95 SAIC Initial version
-- 07 MAY 96 SAIC Revised for 2.1
-- 24 AUG 96 SAIC Additional 2.1 revisions
-- 16 FEB 98 EDS Modify documentation.
--!
 
----------------------------------------------------------------- CD33002_0
 
with System;
package CD33002_0 is
 
S_Units_per_Word : constant := System.Word_Size/System.Storage_Unit;
 
type Nibble is mod 2**4;
 
type Byte is mod 2**8;
 
type Word_Stuff is array(Natural range <>) of Byte;
for Word_Stuff'Component_Size
use System.Word_Size; -- ANX-C RQMT.
pragma Pack(Word_Stuff); -- ANX-C RQMT.
 
type Double_Stuff is array(Natural range <>) of Byte;
for Double_Stuff'Component_Size
use System.Word_Size * 2; -- multiple -- ANX-C RQMT.
 
type Address_Calculator is record
Item_1 : Nibble;
Item_2 : Nibble;
end record;
 
for Address_Calculator use record
Item_1 at 0 range 0..3;
Item_2 at 1 range 0..3;
end record;
 
-- by definition (13.5.2(2)) abs(Item_2'Address - Item_1'Address) = 1
-- it therefore follows that:
-- Address_Calculator'Size = 2 * Addressable_Unit'Size
 
end CD33002_0;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
-- there is no package body CD33002_0
 
------------------------------------------------------------------- CD33002
 
with Report;
with TCTouch;
with System.Storage_Elements;
with CD33002_0;
procedure CD33002 is
 
use type System.Storage_Elements.Storage_Offset;
 
A_Word : CD33002_0.Word_Stuff(0..15);
A_Double : CD33002_0.Double_Stuff(0..15);
 
procedure Unexpected( Message : String; Wanted, Got: Integer ) is
begin
Report.Failed ( Message & " Wanted:"
& Integer'Image(Wanted) & " Got:" & Integer'Image(Got) );
end Unexpected;
 
begin -- Main test procedure.
 
Report.Test ("CD33002", "Check that Component_Sizes that are multiples "
& "of the word size are supported. Check that for "
& "such Component_Sizes arrays contain no gaps "
& "between components" );
 
if A_Word'Size /= CD33002_0.Word_Stuff'Component_Size * 16 then
Unexpected("Word Size",
CD33002_0.Word_Stuff'Component_Size * 16,
A_Word'Size );
end if;
 
if A_Double'Size /= CD33002_0.Double_Stuff'Component_Size * 16 then
Unexpected("Double word Size",
CD33002_0.Double_Stuff'Component_Size * 16,
A_Double'Size );
end if;
 
 
Report.Result;
 
end CD33002;
/cdd2a02.a
0,0 → 1,345
-- CDD2A02.A
--
-- Grant of Unlimited Rights
--
-- The Ada Conformity Assessment Authority (ACAA) holds unlimited
-- rights in the software and documentation contained herein. Unlimited
-- rights are the same as those granted by the U.S. Government for older
-- parts of the Ada Conformity Assessment Test Suite, and are defined
-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
-- intends to confer upon all recipients unlimited rights equal to those
-- held by the ACAA. 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 Read, Write, Input, and Output attributes are inherited
-- for untagged derived types. (Defect Report 8652/0040,
-- as reflected in Technical Corrigendum 1, 13.13.2(8.1/1) and
-- 13.13.2(25/1)).
--
-- CHANGE HISTORY:
-- 30 JUL 2001 PHL Initial version.
-- 5 DEC 2001 RLB Reformatted for ACATS.
--
--!
with Ada.Streams;
use Ada.Streams;
with FDD2A00;
use FDD2A00;
with Report;
use Report;
procedure CDD2A02 is
 
type Int is range 1 .. 10;
type Str is array (Int range <>) of Character;
 
procedure Read (Stream : access Root_Stream_Type'Class;
Item : out Int'Base);
procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base);
function Input (Stream : access Root_Stream_Type'Class) return Int'Base;
procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base);
 
for Int'Read use Read;
for Int'Write use Write;
for Int'Input use Input;
for Int'Output use Output;
 
 
type Parent (D1, D2 : Int; B : Boolean) is
record
S : Str (D1 .. D2);
case B is
when False =>
C1 : Integer;
when True =>
C2 : Float;
end case;
end record;
 
procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent);
procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent);
function Input (Stream : access Root_Stream_Type'Class) return Parent;
procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent);
 
for Parent'Read use Read;
for Parent'Write use Write;
for Parent'Input use Input;
for Parent'Output use Output;
 
 
procedure Actual_Read
(Stream : access Root_Stream_Type'Class; Item : out Int) is
begin
Integer'Read (Stream, Integer (Item));
end Actual_Read;
 
procedure Actual_Write
(Stream : access Root_Stream_Type'Class; Item : Int) is
begin
Integer'Write (Stream, Integer (Item));
end Actual_Write;
 
function Actual_Input (Stream : access Root_Stream_Type'Class) return Int is
begin
return Int (Integer'Input (Stream));
end Actual_Input;
 
procedure Actual_Output
(Stream : access Root_Stream_Type'Class; Item : Int) is
begin
Integer'Output (Stream, Integer (Item));
end Actual_Output;
 
 
procedure Actual_Read
(Stream : access Root_Stream_Type'Class; Item : out Parent) is
begin
case Item.B is
when False =>
Item.C1 := 7;
when True =>
Float'Read (Stream, Item.C2);
end case;
Str'Read (Stream, Item.S);
end Actual_Read;
 
procedure Actual_Write
(Stream : access Root_Stream_Type'Class; Item : Parent) is
begin
case Item.B is
when False =>
null; -- Don't write C1
when True =>
Float'Write (Stream, Item.C2);
end case;
Str'Write (Stream, Item.S);
end Actual_Write;
 
function Actual_Input
(Stream : access Root_Stream_Type'Class) return Parent is
D1, D2 : Int;
B : Boolean;
begin
Int'Read (Stream, D2);
Boolean'Read (Stream, B);
Int'Read (Stream, D1);
 
declare
Item : Parent (D1 => D1, D2 => D2, B => B);
begin
Parent'Read (Stream, Item);
return Item;
end;
 
end Actual_Input;
 
procedure Actual_Output
(Stream : access Root_Stream_Type'Class; Item : Parent) is
begin
Int'Write (Stream, Item.D2);
Boolean'Write (Stream, Item.B);
Int'Write (Stream, Item.D1);
Parent'Write (Stream, Item);
end Actual_Output;
 
package Int_Ops is new Counting_Stream_Ops (T => Int'Base,
Actual_Write => Actual_Write,
Actual_Input => Actual_Input,
Actual_Read => Actual_Read,
Actual_Output => Actual_Output);
 
package Parent_Ops is
new Counting_Stream_Ops (T => Parent,
Actual_Write => Actual_Write,
Actual_Input => Actual_Input,
Actual_Read => Actual_Read,
Actual_Output => Actual_Output);
 
procedure Read (Stream : access Root_Stream_Type'Class; Item : out Int'Base)
renames Int_Ops.Read;
procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base)
renames Int_Ops.Write;
function Input (Stream : access Root_Stream_Type'Class) return Int'Base
renames Int_Ops.Input;
procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base)
renames Int_Ops.Output;
 
procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent)
renames Parent_Ops.Read;
procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent)
renames Parent_Ops.Write;
function Input (Stream : access Root_Stream_Type'Class) return Parent
renames Parent_Ops.Input;
procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent)
renames Parent_Ops.Output;
 
begin
Test ("CDD2A02", "Check that the Read, Write, Input, and Output " &
"attributes are inherited for untagged derived types");
 
Test1:
declare
type Derived1 is new Parent;
S : aliased My_Stream (1000);
X1 : Derived1 (D1 => Int (Ident_Int (2)),
D2 => Int (Ident_Int (5)), B => Ident_Bool (True));
Y1 : Derived1 := (D1 => 3,
D2 => 6,
B => False,
S => Str (Ident_Str ("3456")),
C1 => Ident_Int (100));
X2 : Derived1 (D1 => Int (Ident_Int (2)),
D2 => Int (Ident_Int (5)), B => Ident_Bool (True));
begin
X1.S := Str (Ident_Str ("bcde"));
X1.C2 := Float (Ident_Int (4));
 
Derived1'Write (S'Access, X1);
if Int_Ops.Get_Counts /=
(Read => 0, Write => 0, Input => 0, Output => 0) then
Failed ("Error writing discriminants - 1");
end if;
if Parent_Ops.Get_Counts /=
(Read => 0, Write => 1, Input => 0, Output => 0) then
Failed ("Didn't call inherited Write - 1");
end if;
 
Derived1'Read (S'Access, X2);
if Int_Ops.Get_Counts /=
(Read => 0, Write => 0, Input => 0, Output => 0) then
Failed ("Error reading discriminants - 1");
end if;
if Parent_Ops.Get_Counts /=
(Read => 1, Write => 1, Input => 0, Output => 0) then
Failed ("Didn't call inherited Read - 1");
end if;
 
if X2 /= (D1 => 2,
D2 => 5,
B => True,
S => Str (Ident_Str ("bcde")),
C2 => Float (Ident_Int (4))) then
Failed
("Inherited Read and Write are not inverses of each other - 1");
end if;
 
Derived1'Output (S'Access, Y1);
if Int_Ops.Get_Counts /=
(Read => 0, Write => 2, Input => 0, Output => 0) then
Failed ("Error writing discriminants - 2");
end if;
if Parent_Ops.Get_Counts /=
(Read => 1, Write => 2, Input => 0, Output => 1) then
Failed ("Didn't call inherited Output - 2");
end if;
 
declare
Y2 : Derived1 := Derived1'Input (S'Access);
begin
if Int_Ops.Get_Counts /=
(Read => 2, Write => 2, Input => 0, Output => 0) then
Failed ("Error reading discriminants - 2");
end if;
if Parent_Ops.Get_Counts /=
(Read => 2, Write => 2, Input => 1, Output => 1) then
Failed ("Didn't call inherited Input - 2");
end if;
 
if Y2 /= (D1 => 3,
D2 => 6,
B => False,
S => Str (Ident_Str ("3456")),
C1 => Ident_Int (7)) then
Failed
("Inherited Input and Output are not inverses of each other - 2");
end if;
end;
end Test1;
 
Test2:
declare
type Derived2 (D : Int) is new Parent (D1 => D,
D2 => D,
B => False);
S : aliased My_Stream (1000);
X1 : Derived2 (D => Int (Ident_Int (7)));
Y1 : Derived2 := (D => 8,
S => Str (Ident_Str ("8")),
C1 => Ident_Int (200));
X2 : Derived2 (D => Int (Ident_Int (7)));
begin
X1.S := Str (Ident_Str ("g"));
X1.C1 := Ident_Int (4);
 
Derived2'Write (S'Access, X1);
if Int_Ops.Get_Counts /=
(Read => 2, Write => 2, Input => 0, Output => 0) then
Failed ("Error writing discriminants - 3");
end if;
if Parent_Ops.Get_Counts /=
(Read => 2, Write => 3, Input => 1, Output => 1) then
Failed ("Didn't call inherited Write - 3");
end if;
 
Derived2'Read (S'Access, X2);
if Int_Ops.Get_Counts /=
(Read => 2, Write => 2, Input => 0, Output => 0) then
Failed ("Error reading discriminants - 3");
end if;
if Parent_Ops.Get_Counts /=
(Read => 3, Write => 3, Input => 1, Output => 1) then
Failed ("Didn't call inherited Read - 3");
end if;
 
if X2 /= (D => 7,
S => Str (Ident_Str ("g")),
C1 => Ident_Int (7)) then
Failed
("Inherited Read and Write are not inverses of each other - 3");
end if;
 
Derived2'Output (S'Access, Y1);
if Int_Ops.Get_Counts /=
(Read => 2, Write => 4, Input => 0, Output => 0) then
Failed ("Error writing discriminants - 4");
end if;
if Parent_Ops.Get_Counts /=
(Read => 3, Write => 4, Input => 1, Output => 2) then
Failed ("Didn't call inherited Output - 4");
end if;
 
declare
Y2 : Derived2 := Derived2'Input (S'Access);
begin
if Int_Ops.Get_Counts /=
(Read => 4, Write => 4, Input => 0, Output => 0) then
Failed ("Error reading discriminants - 4");
end if;
if Parent_Ops.Get_Counts /=
(Read => 4, Write => 4, Input => 2, Output => 2) then
Failed ("Didn't call inherited Input - 4");
end if;
 
if Y2 /= (D => 8,
S => Str (Ident_Str ("8")),
C1 => Ident_Int (7)) then
Failed
("Inherited Input and Output are not inverses of each other - 4");
end if;
end;
end Test2;
 
Result;
end CDD2A02;
/cd1009j.ada
0,0 → 1,66
-- CD1009J.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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE
-- VISIBLE OR PRIVATE PART OF A PACKAGE FOR AN ACCESS TYPE
-- DECLARED IN THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/07/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009J IS
BEGIN
TEST ("CD1009J", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " &
"VISIBLE OR PRIVATE PART OF A PACKAGE FOR AN " &
"ACCESS TYPE DECLARED IN THE VISIBLE PART OF " &
"THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE * 10;
 
TYPE CHECK_TYPE_1 IS ACCESS INTEGER;
FOR CHECK_TYPE_1'STORAGE_SIZE
USE SPECIFIED_SIZE;
 
TYPE CHECK_TYPE_2 IS ACCESS INTEGER;
PRIVATE
FOR CHECK_TYPE_2'STORAGE_SIZE USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
BEGIN
IF CHECK_TYPE_1'STORAGE_SIZE < SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO SMALL");
END IF;
 
IF CHECK_TYPE_2'STORAGE_SIZE < SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_2'STORAGE_SIZE IS TOO SMALL");
END IF;
END;
 
RESULT;
END CD1009J;
/cd1009l.ada
0,0 → 1,69
-- CD1009L.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 A 'SMALL' CLAUSE MAY BE GIVEN IN THE VISIBLE OR
-- PRIVATE PART OF A PACKAGE FOR A FIXED POINT TYPE DECLARED
-- IN THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- VCL 10/08/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CHANGED
-- COMMENT FROM FLOATING POINT TO FIXED POINT.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009L IS
BEGIN
TEST ("CD1009L", "A 'SMALL' CLAUSE MAY BE GIVEN IN THE VISIBLE " &
"OR PRIVATE PART OF A PACKAGE FOR A " &
"FIXED POINT TYPE DECLARED IN THE VISIBLE " &
"PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
TYPE SPECIFIED IS DELTA 2.0 ** (-2) RANGE 0.0 .. 1.0;
 
SPECIFIED_SMALL : CONSTANT := SPECIFIED'SMALL;
 
TYPE CHECK_TYPE_1 IS DELTA 2.0 ** (-1) RANGE 0.0 .. 1.0;
FOR CHECK_TYPE_1'SMALL
USE SPECIFIED_SMALL;
 
TYPE CHECK_TYPE_2 IS DELTA 2.0 ** (-1) RANGE 0.0 .. 1.0;
PRIVATE
FOR CHECK_TYPE_2'SMALL USE SPECIFIED_SMALL;
END PACK;
 
USE PACK;
BEGIN
IF CHECK_TYPE_1'SMALL /= SPECIFIED_SMALL THEN
FAILED ("INCORRECT RESULTS FOR CHECK_TYPE_1'SMALL");
END IF;
 
IF CHECK_TYPE_2'SMALL /= SPECIFIED_SMALL THEN
FAILED ("INCORRECT RESULTS FOR CHECK_TYPE_2'SMALL");
END IF;
END;
 
RESULT;
END CD1009L;
/cd2a21a.ada
0,0 → 1,215
-- CD2A21A.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN
-- ENUMERATION TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE
-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE.
 
-- HISTORY:
-- RJW 07/28/87 CREATED ORIGINAL TEST.
-- DHH 04/17/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON
-- REPRESENTATION CLAUSE.
-- JRL 03/26/92 ELIMINATED REDUNDANT TESTING.
 
WITH REPORT; USE REPORT;
WITH LENGTH_CHECK; -- CONTAINS A CALLED TO 'FAILED'.
PROCEDURE CD2A21A IS
 
BASIC_SIZE : CONSTANT := INTEGER'SIZE/2;
 
TYPE CHECK_TYPE IS (ZERO, ONE, TWO);
 
FOR CHECK_TYPE'SIZE USE BASIC_SIZE;
 
C0 : CHECK_TYPE := ZERO;
C1 : CHECK_TYPE := ONE;
C2 : CHECK_TYPE := TWO;
 
TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE;
CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO);
 
TYPE REC_TYPE IS RECORD
COMP0 : CHECK_TYPE := ZERO;
COMP1 : CHECK_TYPE := ONE;
COMP2 : CHECK_TYPE := TWO;
END RECORD;
 
CHREC : REC_TYPE;
 
PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE);
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN ONE;
END IF;
END IDENT;
 
PROCEDURE PROC (CI0, CI2 : CHECK_TYPE;
CIO1, CIO2 : IN OUT CHECK_TYPE;
CO2 : OUT CHECK_TYPE) IS
BEGIN
IF NOT ((CI0 < IDENT (ONE)) AND
(IDENT (CI2) > IDENT (CIO1)) AND
(CIO1 <= IDENT (ONE)) AND(IDENT (TWO) = CI2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " &
"- 1");
END IF;
 
IF CHECK_TYPE'POS (CI0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (CIO1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (CI2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 1");
END IF;
 
IF CHECK_TYPE'SUCC (CI0) /= IDENT (CIO1) OR
CHECK_TYPE'SUCC (CIO1) /= IDENT (CI2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 1");
END IF;
 
IF CHECK_TYPE'IMAGE (CI0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (CIO1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (CI2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 1");
END IF;
 
CO2 := TWO;
 
END PROC;
 
BEGIN
TEST ("CD2A21A", "CHECK THAT WHEN A SIZE SPECIFICATION IS " &
"GIVEN FOR AN ENUMERATION TYPE, THEN " &
"OPERATIONS ON VALUES OF SUCH A TYPE ARE " &
"NOT AFFECTED BY THE REPRESENTATION CLAUSE");
 
PROC (ZERO, TWO, C1, C2, C2);
CHECK_1 (TWO, INTEGER'SIZE/2, "CHECK_TYPE");
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((IDENT (C1) IN C1 .. C2) AND
(C0 NOT IN IDENT (ONE) .. C2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2");
END IF;
 
IF CHECK_TYPE'FIRST /= IDENT (ZERO) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST - 2");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR
CHECK_TYPE'VAL (1) /= IDENT (C1) OR
CHECK_TYPE'VAL (2) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 2");
END IF;
 
IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR
CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 2");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 2");
END IF;
 
IF CHARRAY (1)'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHARRAY (1)'SIZE");
END IF;
 
IF NOT ((CHARRAY (0) < IDENT (ONE)) AND
(IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND
(CHARRAY (1) <= IDENT (ONE)) AND
(IDENT (TWO) = CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3");
END IF;
 
IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND
(CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3");
END IF;
 
IF CHECK_TYPE'POS (CHARRAY (0)) /= IDENT_INT (0) OR
CHECK_TYPE'POS (CHARRAY (1)) /= IDENT_INT (1) OR
CHECK_TYPE'POS (CHARRAY (2)) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 3");
END IF;
 
IF CHECK_TYPE'SUCC (CHARRAY (0)) /= IDENT (CHARRAY (1)) OR
CHECK_TYPE'SUCC (CHARRAY (1)) /= IDENT (CHARRAY (2)) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 3");
END IF;
 
IF CHECK_TYPE'IMAGE (CHARRAY (0)) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (CHARRAY (1)) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (CHARRAY (2)) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 3");
END IF;
 
IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE");
END IF;
 
IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND
(IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND
(CHREC.COMP1 <= IDENT (ONE)) AND
(IDENT (TWO) = CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4");
END IF;
 
IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND
(CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'VAL (1) /= IDENT (CHREC.COMP1) OR
CHECK_TYPE'VAL (2) /= IDENT (CHREC.COMP2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 4");
END IF;
 
IF CHECK_TYPE'PRED (CHREC.COMP1) /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'PRED (CHREC.COMP2) /= IDENT (CHREC.COMP1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 4");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHREC.COMP0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (CHREC.COMP1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (CHREC.COMP2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 4");
END IF;
 
RESULT;
END CD2A21A;
/cd1009n.ada
0,0 → 1,147
-- CD1009N.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 A RECORD REPRESENTATION CLAUSE MAY BE GIVEN
-- IN THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A RECORD TYPE
-- DECLARED IN THE VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- VCL 10/08/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CORRECTED
-- CHECKS FOR FAILURE.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE CD1009N IS
BEGIN
TEST ("CD1009N", "A RECORD REPRESENTATION CLAUSE MAY BE GIVEN " &
"IN THE VISIBLE OR PRIVATE PART OF A PACKAGE " &
"FOR A RECORD TYPE DECLARED IN THE " &
"VISIBLE PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) /
SYSTEM.STORAGE_UNIT;
 
TYPE CHECK_TYPE_1 IS
RECORD
I1 : INTEGER RANGE 0 .. 255;
B1 : BOOLEAN;
B2 : BOOLEAN;
I2 : INTEGER RANGE 0 .. 15;
END RECORD;
FOR CHECK_TYPE_1 USE
RECORD
I1 AT 0 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
B1 AT 1 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
B2 AT 2 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
I2 AT 3 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
END RECORD;
 
TYPE CHECK_TYPE_2 IS
RECORD
I1 : INTEGER RANGE 0 .. 255;
B1 : BOOLEAN;
B2 : BOOLEAN;
I2 : INTEGER RANGE 0 .. 15;
END RECORD;
 
PRIVATE
FOR CHECK_TYPE_2 USE
RECORD
I1 AT 0 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
B1 AT 1 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
B2 AT 2 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
I2 AT 3 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
END RECORD;
END PACK;
 
USE PACK;
 
R1 : CHECK_TYPE_1;
 
R2 : CHECK_TYPE_2;
BEGIN
IF R1.I1'FIRST_BIT /= 0 OR
R1.I1'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I1'POSITION /= 0 THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I1");
END IF;
 
IF R1.B1'FIRST_BIT /= 0 OR
R1.B1'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B1'POSITION /= 1 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B1");
END IF;
 
IF R1.B2'FIRST_BIT /= 0 OR
R1.B2'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B2'POSITION /= 2 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B2");
END IF;
 
IF R1.I2'FIRST_BIT /= 0 OR
R1.I2'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I2'POSITION /= 3 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I2");
END IF;
 
 
IF R2.I1'FIRST_BIT /= 0 OR
R2.I1'LAST_BIT /= INTEGER'SIZE - 1 OR
R2.I1'POSITION /= 0 THEN
FAILED ("INCORRECT REPRESENTATION FOR R2.I1");
END IF;
 
IF R2.B1'FIRST_BIT /= 0 OR
R2.B1'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R2.B1'POSITION /= 1 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R2.B1");
END IF;
 
IF R2.B2'FIRST_BIT /= 0 OR
R2.B2'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R2.B2'POSITION /= 2 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R2.B2");
END IF;
 
IF R2.I2'FIRST_BIT /= 0 OR
R2.I2'LAST_BIT /= INTEGER'SIZE - 1 OR
R2.I2'POSITION /= 3 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R2.I2");
END IF;
END;
 
RESULT;
END CD1009N;
/cd2a21c.ada
0,0 → 1,116
-- CD2A21C.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 A SIZE SPECIFICATION CAN BE GIVEN FOR AN ENUMERATION
-- TYPE:
-- IN THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TYPE
-- DECLARED IN THE VISIBLE PART;
-- FOR A DERIVED ENUMERATION TYPE;
-- FOR A DERIVED PRIVATE TYPE WHOSE FULL DECLARATION IS AS
-- AN ENUMERATION TYPE.
 
-- HISTORY:
-- PWB 06/17/87 CREATED ORIGINAL TEST.
-- DHH 04/17/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON
-- REPRESENTATION CLAUSE.
-- JRL 03/26/92 REMOVED TESTING OF NONOBJECTIVE TYPES.
 
WITH REPORT; USE REPORT;
WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'.
PROCEDURE CD2A21C IS
 
TYPE BASIC_ENUM IS (A, B, C, D, E);
SPECIFIED_SIZE : CONSTANT := BASIC_ENUM'SIZE;
 
MINIMUM_SIZE : INTEGER := IDENT_INT(SPECIFIED_SIZE);
 
TYPE DERIVED_ENUM IS NEW BASIC_ENUM;
FOR DERIVED_ENUM'SIZE USE SPECIFIED_SIZE;
 
PACKAGE P IS
TYPE ENUM_IN_P IS (A1, B1, C1, D1, E1, F1, G1);
FOR ENUM_IN_P'SIZE USE SPECIFIED_SIZE;
TYPE PRIVATE_ENUM IS PRIVATE;
TYPE ALT_ENUM_IN_P IS (A2, B2, C2, D2, E2, F2, G2);
PRIVATE
TYPE PRIVATE_ENUM IS (A3, B3, C3, D3, E3, F3, G3);
FOR ALT_ENUM_IN_P'SIZE USE SPECIFIED_SIZE;
END P;
 
TYPE DERIVED_PRIVATE_ENUM IS NEW P.PRIVATE_ENUM;
FOR DERIVED_PRIVATE_ENUM'SIZE USE SPECIFIED_SIZE;
 
USE P;
 
PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (DERIVED_ENUM);
PROCEDURE CHECK_2 IS NEW LENGTH_CHECK (ENUM_IN_P);
PROCEDURE CHECK_3 IS NEW LENGTH_CHECK (ALT_ENUM_IN_P);
 
BEGIN
 
TEST("CD2A21C", "CHECK THAT 'SIZE SPECIFICATIONS CAN BE GIVEN " &
"IN THE VISIBLE OR PRIVATE PART OF A PACKAGE " &
"FOR ENUMERATION TYPES DECLARED IN THE VISIBLE " &
"PART, AND FOR DERIVED ENUMERATION " &
"TYPES AND DERIVED PRIVATE TYPES WHOSE FULL " &
"DECLARATIONS ARE AS ENUMERATION TYPES");
 
CHECK_1 (C, SPECIFIED_SIZE, "DERIVED_ENUM");
CHECK_2 (C1, SPECIFIED_SIZE, "ENUM_IN_P");
CHECK_3 (C2, SPECIFIED_SIZE, "ALT_ENUM_IN_P");
 
IF DERIVED_ENUM'SIZE /= MINIMUM_SIZE THEN
FAILED ("DERIVED_ENUM'SIZE SHOULD NOT BE GREATER THAN" &
INTEGER'IMAGE(MINIMUM_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_ENUM'SIZE));
END IF;
 
IF ENUM_IN_P'SIZE /= MINIMUM_SIZE THEN
FAILED ("ENUM_IN_P'SIZE SHOULD NOT BE GREATER THAN" &
INTEGER'IMAGE(MINIMUM_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(ENUM_IN_P'SIZE));
END IF;
 
IF ALT_ENUM_IN_P'SIZE /= MINIMUM_SIZE THEN
FAILED ("ALT_ENUM_IN_P'SIZE SHOULD NOT BE GREATER THAN" &
INTEGER'IMAGE(MINIMUM_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(ALT_ENUM_IN_P'SIZE));
END IF;
 
IF DERIVED_PRIVATE_ENUM'SIZE /= MINIMUM_SIZE THEN
 
FAILED ("DERIVED_PRIVATE_ENUM'SIZE SHOULD NOT BE GREATER " &
"THAN " & INTEGER'IMAGE(MINIMUM_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_PRIVATE_ENUM'SIZE));
END IF;
 
RESULT;
 
END CD2A21C;
/cd1c03b.ada
0,0 → 1,78
-- CD1C03B.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 SIZE OF A DERIVED TYPE IS INHERITED FROM THE
-- PARENT IF THE SIZE OF THE PARENT WAS DETERMINED BY A PRAGMA
-- PACK.
 
-- HISTORY:
-- JET 09/16/87 CREATED ORIGINAL TEST.
-- PWB 03/27/89 MODIFIED COMPARISON OF OBJECT SIZE TO PARENT SIZE.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1C03B IS
 
TYPE ENUM IS (E1, E2, E3);
 
TYPE NORMAL_TYPE IS ARRAY (1 .. 100) OF ENUM;
 
TYPE PARENT_TYPE IS ARRAY (1 .. 100) OF ENUM;
PRAGMA PACK (PARENT_TYPE);
 
TYPE DERIVED_TYPE IS NEW PARENT_TYPE;
X : DERIVED_TYPE := (OTHERS => ENUM'FIRST);
 
BEGIN
 
TEST("CD1C03B", "CHECK THAT THE SIZE OF A DERIVED TYPE IS " &
"INHERITED FROM THE PARENT IF THE SIZE OF " &
"THE PARENT WAS DETERMINED BY A PRAGMA PACK");
 
IF PARENT_TYPE'SIZE = IDENT_INT (NORMAL_TYPE'SIZE) THEN
COMMENT ("PRAGMA PACK HAD NO EFFECT ON THE SIZE OF " &
"PARENT_TYPE, WHICH IS" &
INTEGER'IMAGE(PARENT_TYPE'SIZE));
ELSIF PARENT_TYPE'SIZE > IDENT_INT (NORMAL_TYPE'SIZE) THEN
FAILED ("PARENT_TYPE'SIZE SHOULD NOT BE GREATER THAN" &
INTEGER'IMAGE(NORMAL_TYPE'SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(PARENT_TYPE'SIZE));
END IF;
 
IF DERIVED_TYPE'SIZE > IDENT_INT (PARENT_TYPE'SIZE) THEN
FAILED ("DERIVED_TYPE'SIZE SHOULD NOT BE GREATER THAN" &
INTEGER'IMAGE(PARENT_TYPE'SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_TYPE'SIZE));
END IF;
 
IF X'SIZE < DERIVED_TYPE'SIZE THEN
FAILED ("OBJECT SIZE TOO LARGE. FIRST VALUE IS " &
ENUM'IMAGE ( X(1) ) );
END IF;
 
RESULT;
 
END CD1C03B;
/cd1009p.ada
0,0 → 1,66
-- CD1009P.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 A 'SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE PART
-- OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL DECLARATION
-- IS AN ENUMERATION TYPE, DECLARED IN THE VISIBLE PART OF THE SAME
-- PACKAGE.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/09/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009P IS
BEGIN
TEST ("CD1009P", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE VISIBLE " &
"PART OF A PACKAGE FOR AN INCOMPLETE TYPE, " &
"WHOSE FULL DECLARATION IS AN ENUMERATION " &
"TYPE, DECLARED IN THE VISIBLE PART OF THE " &
"SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE;
 
TYPE CHECK_TYPE_1;
TYPE ACC IS ACCESS CHECK_TYPE_1;
 
TYPE CHECK_TYPE_1 IS (A0, A1, A2, A3);
 
PRIVATE
FOR CHECK_TYPE_1'SIZE
USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
BEGIN
IF CHECK_TYPE_1'SIZE > SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'SIZE IS TOO LARGE");
END IF;
END;
 
RESULT;
END CD1009P;
/cd2a21e.ada
0,0 → 1,153
-- CD2A21E.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN
-- ENUMERATION TYPE, THEN SUCH A TYPE CAN
-- BE PASSED AS AN ACTUAL PARAMETER TO A GENERIC PROCEDURE.
 
-- HISTORY:
-- JET 08/18/87 CREATED ORIGINAL TEST.
-- DHH 04/17/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON
-- REPRESENTATION CLAUSE.
-- BCB 03/05/90 ADDED CALL TO LENGTH_CHECK TO VERIFY THAT THE SIZE
-- SPECIFICATION IS OBEYED.
-- LDC 10/03/90 ADDED CASES FOR >=, /=, ASSIGNMENT, QUALIFICATION,
-- AND EXPLICIT CONVERSION.
-- JRL 03/26/92 ELIMINATED REDUNDANT TESTING.
 
WITH REPORT; USE REPORT;
WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'.
PROCEDURE CD2A21E IS
 
TYPE BASIC_ENUM IS (ZERO, ONE, TWO);
BASIC_SIZE : CONSTANT := INTEGER'SIZE / 2;
 
FOR BASIC_ENUM'SIZE USE BASIC_SIZE;
 
BEGIN
TEST ("CD2A21E", "CHECK THAT WHEN A SIZE SPECIFICATION IS " &
"GIVEN FOR AN ENUMERATION TYPE, " &
"THEN SUCH A TYPE CAN BE " &
"PASSED AS AN ACTUAL PARAMETER TO A GENERIC " &
"PROCEDURE");
 
DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE.
 
GENERIC
TYPE GPARM IS (<>);
PROCEDURE GENPROC (C0, C1, C2: GPARM);
 
PROCEDURE GENPROC (C0, C1, C2: GPARM) IS
 
SUBTYPE CHECK_TYPE IS GPARM;
 
C3 : GPARM;
 
CHECKVAR : CHECK_TYPE;
 
PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE);
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN C1;
END IF;
END IDENT;
 
BEGIN -- GENPROC.
 
CHECKVAR := IDENT (C0);
 
CHECK_1 (CHECKVAR, CHECK_TYPE'SIZE, "CHECK_TYPE");
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((IDENT (C1) IN C1 .. C2) AND
(IDENT(C0) NOT IN IDENT (C1) .. C2)) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " &
"OPERATORS");
END IF;
 
IF CHECK_TYPE'LAST /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST");
END IF;
 
IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR
CHECK_TYPE'VAL (1) /= IDENT (C1) OR
CHECK_TYPE'VAL (2) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL");
END IF;
 
IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR
CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED");
END IF;
 
IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR
CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR
CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE");
END IF;
 
CHECKVAR := CHECK_TYPE'VALUE ("ONE");
C3 := GPARM(CHECKVAR);
IF C3 /= IDENT(C1) THEN
FAILED ("INCORRECT VALUE FOR CONVERSION");
END IF;
 
CHECK_1 (IDENT(C0), BASIC_SIZE, "CHECK_ENUM");
 
 
IF CHECK_TYPE'(C2) /= IDENT(C2) THEN
FAILED ("INCORRECT VALUE FOR QUALIFICATION");
END IF;
 
C3 := CHECK_TYPE'VALUE ("TWO");
IF C3 /= IDENT(C2) THEN
FAILED ("INCORRECT VALUE FOR ASSIGNMENT");
END IF;
 
END GENPROC;
 
PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM);
 
BEGIN
 
NEWPROC (ZERO, ONE, TWO);
 
END;
 
RESULT;
 
END CD2A21E;
/cd1009r.ada
0,0 → 1,64
-- CD1009R.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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE
-- PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL
-- DECLARATION IS AN ACCESS TYPE, DECLARED IN THE VISIBLE PART OF
-- THE SAME PACKAGE.
 
-- HISTORY:
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- VCL 10/21/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1009R IS
BEGIN
TEST ("CD1009R", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " &
"PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE " &
"TYPE, WHOSE FULL TYPE DECLARATION IS AN " &
"ACCESS TYPE, DECLARED IN THE VISIBLE PART OF " &
"THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE * 10;
 
TYPE CHECK_TYPE_1;
TYPE ACC IS ACCESS CHECK_TYPE_1;
 
TYPE CHECK_TYPE_1 IS ACCESS INTEGER;
PRIVATE
FOR CHECK_TYPE_1'STORAGE_SIZE
USE SPECIFIED_SIZE;
END PACK;
 
USE PACK;
BEGIN
IF CHECK_TYPE_1'STORAGE_SIZE < SPECIFIED_SIZE THEN
FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO SMALL");
END IF;
END;
 
RESULT;
END CD1009R;
/cd1c03f.ada
0,0 → 1,76
-- CD1C03F.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 VALUE OF 'SMALL FOR A DERIVED FIXED POINT TYPE
-- IS INHERITED FROM THE PARENT IF THE VALUE OF 'SMALL FOR THE
-- PARENT WAS DETERMINED BY A 'SMALL SPECIFICATION CLAUSE.
 
-- HISTORY:
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- JET 09/17/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1C03F IS
 
SPECIFIED_SMALL : CONSTANT := 0.25;
 
TYPE FLT IS NEW FLOAT;
 
TYPE PARENT_TYPE IS DELTA 1.0 RANGE 0.0 .. 100.0;
 
FOR PARENT_TYPE'SMALL USE SPECIFIED_SMALL;
 
TYPE DERIVED_TYPE IS NEW PARENT_TYPE;
 
FUNCTION IDENT_FLT (F : FLT) RETURN FLT IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN F;
ELSE
RETURN 0.0;
END IF;
END;
 
BEGIN
 
TEST("CD1C03F", "CHECK THAT THE VALUE OF 'SMALL FOR A " &
"DERIVED FIXED POINT TYPE IS INHERITED " &
"FROM THE PARENT IF THE VALUE OF 'SMALL " &
"FOR THE PARENT WAS DETERMINED BY A 'SMALL " &
"SPECIFICATION CLAUSE");
 
IF PARENT_TYPE'SMALL /= IDENT_FLT (SPECIFIED_SMALL) THEN
FAILED ("PARENT_TYPE'SMALL SHOULD BE EQUAL TO " &
"THE SPECIFIED VALUE");
END IF;
 
IF DERIVED_TYPE'SMALL /= IDENT_FLT (SPECIFIED_SMALL) THEN
FAILED ("DERIVED_TYPE'SMALL SHOULD BE EQUAL TO " &
"THE SPECIFIED VALUE");
END IF;
 
RESULT;
 
END CD1C03F;
/cd1c03h.ada
0,0 → 1,122
-- CD1C03H.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 RECORD SIZE AND THE COMPONENT POSITIONS AND
-- SIZES OF A DERIVED RECORD TYPE ARE INHERITED FROM THE
-- PARENT IF THOSE ASPECTS OF THE PARENT WERE DETERMINED BY A
-- RECORD REPRESENTATION CLAUSE.
 
-- HISTORY:
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- JET 09/17/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
WITH SYSTEM; USE SYSTEM;
 
PROCEDURE CD1C03H IS
 
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) /
SYSTEM.STORAGE_UNIT;
 
TYPE E_TYPE IS (RED, BLUE, GREEN);
 
TYPE PARENT_TYPE IS
RECORD
I : INTEGER RANGE 0 .. 127 := 127;
C : CHARACTER := 'S';
B : BOOLEAN := FALSE;
E : E_TYPE := BLUE;
END RECORD;
 
FOR PARENT_TYPE USE
RECORD
C AT 0 * UNITS_PER_INTEGER RANGE 0 .. CHARACTER'SIZE - 1;
B AT 1 * UNITS_PER_INTEGER RANGE 0 .. BOOLEAN'SIZE - 1;
I AT 2 * UNITS_PER_INTEGER RANGE 0 .. INTEGER'SIZE/2 - 1;
E AT 3 * UNITS_PER_INTEGER RANGE 0 .. CHARACTER'SIZE - 1;
END RECORD;
 
TYPE DERIVED_TYPE IS NEW PARENT_TYPE;
 
P_REC : PARENT_TYPE;
REC : DERIVED_TYPE;
 
BEGIN
 
TEST("CD1C03H", "CHECK THAT THE RECORD SIZE AND THE COMPONENT " &
"POSITIONS AND SIZES OF A DERIVED RECORD " &
"TYPE ARE INHERITED FROM THE PARENT IF THOSE " &
"ASPECTS OF THE PARENT WERE DETERMINED BY " &
"A RECORD REPRESENTATION CLAUSE");
 
IF DERIVED_TYPE'SIZE /= IDENT_INT (PARENT_TYPE'SIZE) THEN
FAILED ("DERIVED_TYPE'SIZE WAS NOT INHERITED FROM " &
"PARENT_TYPE");
END IF;
 
IF REC.I'SIZE /= P_REC.I'SIZE OR
REC.C'SIZE /= P_REC.C'SIZE OR
REC.B'SIZE /= P_REC.B'SIZE OR
REC.E'SIZE /= P_REC.E'SIZE THEN
FAILED ("THE SIZES OF DERIVED_TYPE ELEMENTS WERE NOT " &
"INHERITED FROM PARENT_TYPE");
END IF;
 
REC := (12, 'T', TRUE, RED);
 
IF (REC.I /= 12) OR (REC.C /= 'T') OR
(NOT REC.B) OR (REC.E /= RED) THEN
FAILED ("THE VALUES OF DERIVED_TYPE COMPONENTS WERE " &
"INCORRECT");
END IF;
 
IF REC.I'POSITION /= P_REC.I'POSITION OR
REC.C'POSITION /= P_REC.C'POSITION OR
REC.B'POSITION /= P_REC.B'POSITION OR
REC.E'POSITION /= P_REC.E'POSITION THEN
FAILED ("THE POSITIONS OF DERIVED_TYPE COMPONENTS WERE " &
"NOT INHERITED FROM PARENT_TYPE");
END IF;
 
IF REC.I'FIRST_BIT /= P_REC.I'FIRST_BIT OR
REC.C'FIRST_BIT /= P_REC.C'FIRST_BIT OR
REC.B'FIRST_BIT /= P_REC.B'FIRST_BIT OR
REC.E'FIRST_BIT /= P_REC.E'FIRST_BIT THEN
FAILED ("THE FIRST_BITS OF DERIVED_TYPE COMPONENTS WERE " &
"NOT INHERITED FROM PARENT_TYPE");
END IF;
 
IF REC.I'LAST_BIT /= P_REC.I'LAST_BIT OR
REC.C'LAST_BIT /= P_REC.C'LAST_BIT OR
REC.B'LAST_BIT /= P_REC.B'LAST_BIT OR
REC.E'LAST_BIT /= P_REC.E'LAST_BIT THEN
FAILED ("THE LAST_BITS OF DERIVED_TYPE COMPONENTS WERE " &
"NOT INHERITED FROM PARENT_TYPE");
END IF;
 
RESULT;
 
END CD1C03H;
/cd1009v.ada
0,0 → 1,76
-- CD1009V.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 AN ENUMERATION REPRESENTATION CLAUSE MAY BE GIVEN IN
-- THE PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE
-- FULL TYPE DECLARATION IS AN ENUMERATION TYPE DECLARED IN THE
-- VISIBLE PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- VCL 10/21/87 CREATED ORIGINAL TEST.
-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP'
-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES.
 
WITH REPORT; USE REPORT;
WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'.
PROCEDURE CD1009V IS
BEGIN
TEST ("CD1009V", "AN ENUMERATION REPRESENTATION CLAUSE MAY BE " &
"GIVEN IN THE PRIVATE PART OF A " &
"PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL " &
"TYPE DECLARATION IS AN ENUMERATION TYPE, " &
"DECLARED IN THE VISIBLE PART OF THE SAME " &
"PACKAGE");
DECLARE
PACKAGE PACK IS
TYPE CHECK_TYPE_1;
TYPE ACC IS ACCESS CHECK_TYPE_1;
 
TYPE CHECK_TYPE_1 IS (A0, A2, A4, A8);
PRIVATE
 
FOR CHECK_TYPE_1 USE (A0 => 9,
A2 => 13,
A4 => 15,
A8 => 18);
TYPE INT1 IS RANGE 9 .. 18;
FOR INT1'SIZE USE CHECK_TYPE_1'SIZE;
 
PROCEDURE CHECK_1 IS NEW ENUM_CHECK(CHECK_TYPE_1, INT1);
 
END PACK;
 
PACKAGE BODY PACK IS
BEGIN
CHECK_1 (A2, 13, "CHECK_TYPE_1");
END PACK;
 
USE PACK;
BEGIN
NULL;
END;
 
RESULT;
END CD1009V;
/cd1009x.ada
0,0 → 1,105
-- CD1009X.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 A RECORD REPRESENTATION CLAUSE MAY BE GIVEN
-- IN THE PRIVATE PART OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE
-- FULL TYPE DECLARATION IS A RECORD TYPE DECLARED IN THE VISIBLE
-- PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- VCL 10/21/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CORRECTED
-- CHECKS FOR FAILURE.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE CD1009X IS
BEGIN
TEST ("CD1009X", "A RECORD REPRESENTATION CLAUSE MAY BE GIVEN " &
"IN THE PRIVATE PART OF A PACKAGE FOR AN " &
"INCOMPLETE TYPE, WHOSE FULL TYPE DECLARATION " &
"IS A RECORD TYPE DECLARED IN THE " &
"VISIBLE PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) /
SYSTEM.STORAGE_UNIT;
 
TYPE CHECK_TYPE_1;
TYPE ACC IS ACCESS CHECK_TYPE_1;
 
TYPE CHECK_TYPE_1 IS
RECORD
I1 : INTEGER RANGE 0 .. 255;
B1 : BOOLEAN;
B2 : BOOLEAN;
I2 : INTEGER RANGE 0 .. 15;
END RECORD;
PRIVATE
FOR CHECK_TYPE_1 USE
RECORD
I1 AT 0 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
B1 AT 1 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
B2 AT 2 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
I2 AT 3 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
END RECORD;
END PACK;
 
USE PACK;
 
R1 : CHECK_TYPE_1;
BEGIN
IF R1.I1'FIRST_BIT /= 0 OR
R1.I1'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I1'POSITION /= 0 THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I1");
END IF;
 
IF R1.B1'FIRST_BIT /= 0 OR
R1.B1'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B1'POSITION /= 1 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B1");
END IF;
 
IF R1.B2'FIRST_BIT /= 0 OR
R1.B2'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B2'POSITION /= 2 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B2");
END IF;
 
IF R1.I2'FIRST_BIT /= 0 OR
R1.I2'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I2'POSITION /= 3 * UNITS_PER_INTEGER THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I2");
END IF;
END;
 
RESULT;
END CD1009X;
/cdd2001.a
0,0 → 1,203
-- CDD2001.A
--
-- Grant of Unlimited Rights
--
-- The Ada Conformity Assessment Authority (ACAA) holds unlimited
-- rights in the software and documentation contained herein. Unlimited
-- rights are the same as those granted by the U.S. Government for older
-- parts of the Ada Conformity Assessment Test Suite, and are defined
-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA
-- intends to confer upon all recipients unlimited rights equal to those
-- held by the ACAA. 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 default implementation of Read and Input raise End_Error
-- if the end of stream is reached before the reading of a value is
-- completed. (Defect Report 8652/0045,
-- Technical Corrigendum 13.13.2(35.1/1)).
--
-- CHANGE HISTORY:
-- 12 FEB 2001 PHL Initial version.
-- 29 JUN 2001 RLB Reformatted for ACATS.
--
--!
 
with Ada.Streams;
use Ada.Streams;
package CDD2001_0 is
 
type My_Stream (Size : Stream_Element_Count) is new Root_Stream_Type with
record
First : Stream_Element_Offset := 1;
Last : Stream_Element_Offset := 0;
Contents : Stream_Element_Array (1 .. Size);
end record;
 
procedure Clear (Stream : in out My_Stream);
 
procedure Read (Stream : in out My_Stream;
Item : out Stream_Element_Array;
Last : out Stream_Element_Offset);
 
procedure Write (Stream : in out My_Stream; Item : in Stream_Element_Array);
 
end CDD2001_0;
 
package body CDD2001_0 is
 
procedure Clear (Stream : in out My_Stream) is
begin
Stream.First := 1;
Stream.Last := 0;
end Clear;
 
procedure Read (Stream : in out My_Stream;
Item : out Stream_Element_Array;
Last : out Stream_Element_Offset) is
begin
if Item'Length >= Stream.Last - Stream.First + 1 then
Item (Item'First .. Item'First + Stream.Last - Stream.First) :=
Stream.Contents (Stream.First .. Stream.Last);
Last := Item'First + Stream.Last - Stream.First;
Stream.First := Stream.Last + 1;
else
Item := Stream.Contents (Stream.First ..
Stream.First + Item'Length - 1);
Last := Item'Last;
Stream.First := Stream.First + Item'Length;
end if;
end Read;
 
procedure Write (Stream : in out My_Stream;
Item : in Stream_Element_Array) is
begin
Stream.Contents (Stream.Last + 1 .. Stream.Last + Item'Length) := Item;
Stream.Last := Stream.Last + Item'Length;
end Write;
 
end CDD2001_0;
 
with Ada.Exceptions;
use Ada.Exceptions;
with CDD2001_0;
use CDD2001_0;
with Io_Exceptions;
use Io_Exceptions;
with Report;
use Report;
procedure CDD2001 is
 
subtype Int is Integer range -20 .. 20;
 
type R (D : Int) is
record
C1 : Character := Ident_Char ('a');
case D is
when 0 .. 20 =>
C2 : String (1 .. D) := (others => Ident_Char ('b'));
when others =>
C3, C4 : Float := Float (-D);
end case;
end record;
 
S : aliased My_Stream (200);
 
begin
Test
("CDD2001",
"Check that the default implementation of Read and Input " &
"raise End_Error if the end of stream is reached before the " &
"reading of a value is completed");
 
Read:
declare
X : R (Ident_Int (13));
begin
Clear (S);
 
-- A complete object.
R'Write (S'Access, X);
X.C1 := Ident_Char ('A');
X.C2 := (others => Ident_Char ('B'));
R'Read (S'Access, X);
if X.C1 /= Ident_Char ('a') or X.C2 /=
(1 .. 13 => Ident_Char ('b')) then
Failed ("Read did not produce the expected result");
end if;
 
Clear (S);
 
-- Not enough data.
Character'Write (S'Access, 'a');
String'Write (S'Access, "bbb");
 
begin
R'Read (S'Access, X);
Failed
("No exception raised when the end of stream is reached " &
"before the reading of a value is completed - 1");
exception
when End_Error =>
null;
when E: others =>
Failed ("Wrong Exception " & Exception_Name (E) &
" - " & Exception_Information (E) &
" - " & Exception_Message (E) & " - 1");
end;
 
end Read;
 
Input:
declare
X : R (Ident_Int (-11));
begin
Clear (S);
 
-- A complete object.
R'Output (S'Access, X);
X.C1 := Ident_Char ('A');
X.C3 := 4.0;
X.C4 := 5.0;
X := R'Input (S'Access);
if X.C1 /= Ident_Char ('a') or X.C3 /= 11.0 or X.C4 /= 11.0 then
Failed ("Input did not produce the expected result");
end if;
 
Clear (S);
 
-- Not enough data.
Integer'Output (S'Access, Ident_Int (-11)); -- The discriminant
Character'Output (S'Access, 'a');
Float'Output (S'Access, 11.0);
 
begin
X := R'Input (S'Access);
Failed
("No exception raised when the end of stream is reached " &
"before the reading of a value is completed - 2");
exception
when End_Error =>
null;
when E: others =>
Failed ("Wrong exception " & Exception_Name (E) &
" - " & Exception_Message (E) & " - 2");
end;
 
end Input;
 
Result;
end CDD2001;
 
/cd1009z.ada
0,0 → 1,115
-- CD1009Z.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 A RECORD REPRESENTATION CLAUSE MAY BE GIVEN IN THE
-- PRIVATE PART OF A PACKAGE FOR A LIMITED-PRIVATE TYPE, WHOSE
-- FULL TYPE DECLARATION IS A RECORD TYPE, DECLARED IN THE VISIBLE
-- PART OF THE SAME PACKAGE.
 
-- HISTORY:
-- VCL 10/09/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CORRECTED
-- CHECKS FOR FAILURE.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE CD1009Z IS
BEGIN
TEST ("CD1009Z", "A RECORD REPRESENTATION CLAUSE MAY BE GIVEN " &
"IN THE PRIVATE PART OF A PACKAGE FOR A " &
"LIMITED PRIVATE TYPE, WHOSE FULL TYPE " &
"DECLARATION IS A RECORD TYPE DECLARED IN THE " &
"VISIBLE PART OF THE SAME PACKAGE");
DECLARE
PACKAGE PACK IS
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) /
SYSTEM.STORAGE_UNIT;
 
TYPE CHECK_TYPE_1 IS LIMITED PRIVATE;
 
PROCEDURE P;
PRIVATE
TYPE CHECK_TYPE_1 IS
RECORD
I1 : INTEGER RANGE 0 .. 255;
B1 : BOOLEAN;
B2 : BOOLEAN;
I2 : INTEGER RANGE 0 .. 15;
END RECORD;
FOR CHECK_TYPE_1 USE
RECORD
I1 AT 0 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
B1 AT 1 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
B2 AT 2 * UNITS_PER_INTEGER
RANGE 0 .. BOOLEAN'SIZE - 1;
I2 AT 3 * UNITS_PER_INTEGER
RANGE 0 .. INTEGER'SIZE - 1;
END RECORD;
END PACK;
 
PACKAGE BODY PACK IS
PROCEDURE P IS
R1 : CHECK_TYPE_1;
BEGIN
IF R1.I1'FIRST_BIT /= 0 OR
R1.I1'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I1'POSITION /= 0 THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I1");
END IF;
 
IF R1.B1'FIRST_BIT /= 0 OR
R1.B1'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B1'POSITION /= 1 * UNITS_PER_INTEGER
THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B1");
END IF;
 
IF R1.B2'FIRST_BIT /= 0 OR
R1.B2'LAST_BIT /= BOOLEAN'SIZE - 1 OR
R1.B2'POSITION /= 2 * UNITS_PER_INTEGER
THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.B2");
END IF;
 
IF R1.I2'FIRST_BIT /= 0 OR
R1.I2'LAST_BIT /= INTEGER'SIZE - 1 OR
R1.I2'POSITION /= 3 * UNITS_PER_INTEGER
THEN
FAILED ("INCORRECT REPRESENTATION FOR R1.I2");
END IF;
END P;
END PACK;
 
USE PACK;
 
BEGIN
P;
END;
 
RESULT;
END CD1009Z;
/cd72a02.a
0,0 → 1,225
-- CD72A02.A
--
-- 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 package System.Address_To_Access_Conversions may be
-- instantiated for various composite types.
--
-- Check that To_Pointer and To_Address are inverse operations.
--
-- Check that To_Pointer(X'Address) equals X'Unchecked_Access for an
-- X that allows Unchecked_Access.
--
-- Check that To_Pointer(Null_Address) returns null.
--
-- TEST DESCRIPTION:
-- This test is identical to CD72A01 with the exception that it tests
-- the composite types where CD72A01 tests "simple" types.
--
-- This test checks that the semantics provided in
-- Address_To_Access_Conversions are present and operate
-- within expectations (to the best extent possible in a portable
-- implementation independent fashion).
--
-- The functions Address_To_Hex and Hex_To_Address test the invertability
-- of the To_Integer and To_Address functions, along with a great deal
-- of optimizer chaff and protection from the fact that type
-- Storage_Elements.Integer_Address may be either a modular or a signed
-- integer type.
--
-- This test has some interesting usage paradigms in that users
-- occasionally want to store address information in a transportable
-- fashion, and often resort to some textual representation of values.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 13 JUL 95 SAIC Initial version (CD72001)
-- 08 FEB 96 SAIC Split from CD72001 by reviewer request for 2.1
-- 12 NOV 96 SAIC Corrected typo in RM ref
-- 16 FEB 98 EDS Modified documentation.
-- 22 JAN 02 RLB Corrected test description.
--!
 
with Report;
with Impdef;
with FD72A00;
with System.Storage_Elements;
with System.Address_To_Access_Conversions;
procedure CD72A02 is
use System;
use FD72A00;
 
type Tagged_Record is tagged record
Value : Natural;
end record;
 
package Class_ATAC is
new System.Address_To_Access_Conversions(Tagged_Record'Class);
-- ANX-C RQMT
 
use type Class_ATAC.Object_Pointer;
 
task type TC_Task_Type is
entry E;
entry F;
end TC_Task_Type;
 
package Task_ATAC is
new System.Address_To_Access_Conversions(TC_Task_Type);
-- ANX-C RQMT
 
use type Task_ATAC.Object_Pointer;
 
task body TC_Task_Type is
begin
select
accept E;
or
accept F;
Report.Failed("Task rendezvoused on wrong path");
end select;
end TC_Task_Type;
 
protected type TC_Protec is
procedure E;
procedure F;
private
Visited : Boolean := False;
end TC_Protec;
 
package Protected_ATAC is
new System.Address_To_Access_Conversions(TC_Protec);
-- ANX-C RQMT
 
use type Protected_ATAC.Object_Pointer;
 
protected body TC_Protec is
procedure E is
begin
Visited := True;
end E;
procedure F is
begin
if not Visited then
Report.Failed("Protected Object took wrong path");
end if;
end F;
end TC_Protec;
 
type Test_Cases is ( Tagged_Type, Task_Type, Protected_Type );
 
type Naive_Dynamic_String is access String;
 
type String_Store is array(Test_Cases) of Naive_Dynamic_String;
 
The_Strings : String_Store;
 
-- create several aliased objects with distinct values
 
My_Rec : aliased Tagged_Record := (Value => Natural'Last);
My_Task : aliased TC_Task_Type;
My_Prot : aliased TC_Protec;
 
use type System.Storage_Elements.Integer_Address;
 
begin -- Main test procedure.
 
Report.Test ("CD72A02", "Check package " &
"System.Address_To_Access_Conversions " &
"for composite types" );
 
-- take several pointer objects, convert them to addresses, and store
-- the address as a hexadecimal representation for later reconversion
 
The_Strings(Tagged_Type) := new String'(
Address_To_Hex(Class_ATAC.To_Address(My_Rec'Access)) );
 
The_Strings(Task_Type) := new String'(
Address_To_Hex(Task_ATAC.To_Address(My_Task'Access)) );
 
The_Strings(Protected_Type) := new String'(
Address_To_Hex(Protected_ATAC.To_Address(My_Prot'Access)) );
 
-- now, reconvert the hexadecimal address values back to pointers,
-- and check that the dereferenced pointer still designates the
-- value placed at that location. The use of the intermediate
-- string representation should foil even the cleverest of optimizers
 
if Tagged_Record(Class_ATAC.To_Pointer(
Hex_To_Address(The_Strings(Tagged_Type))).all)
/= Tagged_Record'(Value => Natural'Last) then
Report.Failed("Tagged_Record reconversion");
end if;
 
Task_ATAC.To_Pointer(Hex_To_Address(The_Strings(Task_Type))).E;
 
begin
select -- allow for task to have completed.
My_Task.F; -- should not happen, will call Report.Fail in task
else
null; -- expected case, "Report.Pass;"
end select;
exception
when Tasking_Error => null; -- task terminated, which is OK
end;
 
Protected_ATAC.To_Pointer(
Hex_To_Address(The_Strings(Protected_Type))).E;
My_Prot.F; -- checks that call to E occurred
 
 
-- check that the resulting values are equal to the 'Unchecked_Access
-- of the value
 
if Class_ATAC.To_Pointer(Hex_To_Address(The_Strings(Tagged_Type)))
/= My_Rec'Unchecked_Access then
Report.Failed("Tagged_Record Unchecked_Access");
end if;
 
if Task_ATAC.To_Pointer(Hex_To_Address(The_Strings(Task_Type)))
/= My_Task'Unchecked_Access then
Report.Failed("Task Unchecked_Access");
end if;
 
if Protected_ATAC.To_Pointer(
Hex_To_Address(The_Strings(Protected_Type)))
/= My_Prot'Unchecked_Access then
Report.Failed("Protected Unchecked_Access");
end if;
 
Report.Result;
 
end CD72A02;
/cd3014a.ada
0,0 → 1,132
-- CD3014A.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 AN ENUMERATION TYPE WITH A REPRESENTATION CLAUSE CAN
-- BE USED CORRECTLY IN ORDERING RELATIONS, INDEXING ARRAYS, AND IN
-- GENERIC INSTANTIATIONS.
 
-- HISTORY
-- DHH 09/30/87 CREATED ORIGINAL TEST.
-- BCB 03/20/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- BCB 03/07/90 REVISED WORDING IN HEADER COMMENT AND IN CALL TO
-- REPORT.TEST. ADDED CHECK FOR NON-CONTIGUOUS CODES.
-- REVISED CHECK FOR ARRAY INDEXING.
-- THS 09/18/90 REVISED WORDING IN HEADER AND MODIFIED FAILED ERROR
-- MESSAGE.
 
WITH REPORT; USE REPORT;
PROCEDURE CD3014A IS
 
BEGIN
 
TEST ("CD3014A", "CHECK THAT AN ENUMERATION TYPE WITH A " &
"REPRESENTATION CLAUSE CAN BE USED CORRECTLY " &
"IN ORDERING RELATIONS, INDEXING ARRAYS, AND " &
"IN GENERIC INSTANTIATIONS");
 
DECLARE
PACKAGE PACK IS
 
TYPE HUE IS (RED,BLUE,YELLOW,'R','B','Y');
 
FOR HUE USE (RED => 8, BLUE => 9,
YELLOW => 10, 'R' => 11,
'B' => 12, 'Y' => 13);
 
TYPE BASE IS ARRAY(HUE) OF INTEGER;
COLOR,BASIC : HUE;
BARRAY : BASE;
 
TYPE HUE1 IS ('Y','B','R',YELLOW,BLUE,RED);
 
FOR HUE1 USE ('Y' => 10, 'B' => 14, 'R' => 16,
YELLOW => 19, BLUE => 41, RED => 46);
 
TYPE BASE1 IS ARRAY(HUE1) OF INTEGER;
COLOR1,BASIC1 : HUE1;
BARRAY1 : BASE1;
 
GENERIC
TYPE ENUM IS (<>);
PROCEDURE CHANGE(X,Y : IN OUT ENUM);
 
END PACK;
 
PACKAGE BODY PACK IS
 
PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS
T : ENUM;
BEGIN
T := X;
X := Y;
Y := T;
END CHANGE;
 
PROCEDURE PROC IS NEW CHANGE(HUE);
PROCEDURE PROC1 IS NEW CHANGE(HUE1);
 
BEGIN
BASIC := RED;
COLOR := HUE'SUCC(BASIC);
BASIC1 := RED;
COLOR1 := HUE1'PRED(BASIC1);
IF (COLOR < BASIC OR BASIC >= 'R' OR 'Y' <= COLOR OR
COLOR > 'B') OR
NOT (COLOR1 < BASIC1 AND BASIC1 >= 'R' AND
'Y' <= COLOR1 AND COLOR1 > 'B') THEN
FAILED("ORDERING RELATIONS ARE INCORRECT");
END IF;
 
PROC(BASIC,COLOR);
PROC1(BASIC1,COLOR1);
 
IF COLOR /= RED OR COLOR1 /= RED THEN
FAILED("VALUES OF PARAMETERS TO INSTANCE OF " &
"GENERIC UNIT NOT CORRECT AFTER CALL");
END IF;
 
BARRAY := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3),
IDENT_INT(4),IDENT_INT(5),IDENT_INT(6));
 
BARRAY1 := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3),
IDENT_INT(4),IDENT_INT(5),IDENT_INT(6));
 
IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR
BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR
BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) OR
NOT (BARRAY1 (RED) = 6 AND BARRAY1 (BLUE) = 5 AND
BARRAY1 (YELLOW) = 4 AND BARRAY1 ('R') = 3 AND
BARRAY1 ('B') = 2 AND BARRAY1 ('Y') = 1)
THEN
FAILED("INDEXING ARRAY FAILURE");
END IF;
 
END PACK;
BEGIN
NULL;
END;
 
RESULT;
END CD3014A;
/cd7002a.ada
0,0 → 1,52
-- CD7002A.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 A VARIABLE OF TYPE ADDRESS CAN BE DECLARED IN A UNIT
-- WHICH HAS A WITH CLAUSE NAMING SYSTEM.
 
-- HISTORY:
-- DHH 08/31/88 CREATED ORIGINAL TEST.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
PROCEDURE CD7002A IS
 
I : INTEGER;
 
OBJECT : SYSTEM.ADDRESS := I'ADDRESS;
 
SUBTYPE MY_ADDRESS IS SYSTEM.ADDRESS;
 
BEGIN
TEST ("CD7002A", "CHECK THAT A VARIABLE OF TYPE ADDRESS CAN BE " &
"DECLARED IN A UNIT WHICH HAS A WITH CLAUSE " &
"NAMING SYSTEM");
 
IF NOT IDENT_BOOL(OBJECT IN MY_ADDRESS) THEN
FAILED("INCORRECT RESULT");
END IF;
 
RESULT;
END CD7002A;
/cd3014c.ada
0,0 → 1,85
-- CD3014C.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 AN ENUMERATION REPRESENTATION CLAUSE CAN BE GIVEN IN
-- THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TYPE DECLARED IN
-- THE VISIBLE PART.
 
-- HISTORY
-- DHH 09/30/87 CREATED ORIGINAL TEST
-- DHH 03/27/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA',CHANGED
-- FROM 'A' TEST TO 'C' TEST AND ADDED CHECK FOR
-- REPRESENTATION CLAUSE.
 
WITH REPORT; USE REPORT;
WITH ENUM_CHECK; -- CONTAINS CALL TO 'FAILED'
PROCEDURE CD3014C IS
 
BEGIN
 
TEST ("CD3014C", "CHECK THAT AN ENUMERATION " &
"REPRESENTATION CLAUSE CAN BE GIVEN IN THE " &
"VISIBLE OR PRIVATE PART OF A PACKAGE FOR " &
"A TYPE DECLARED IN THE VISIBLE PART");
 
DECLARE
PACKAGE PACK IS
 
TYPE HUE IS (RED,BLUE,YELLOW);
TYPE NEWHUE IS (RED,BLUE,YELLOW);
 
FOR HUE USE
(RED => 8, BLUE => 16,
YELLOW => 32);
A : HUE := BLUE;
PRIVATE
 
FOR NEWHUE USE (RED => 8, BLUE => 16, YELLOW => 32);
 
B : NEWHUE := RED;
 
TYPE INT_HUE IS RANGE 8 .. 32;
FOR INT_HUE'SIZE USE HUE'SIZE;
 
TYPE INT_NEW IS RANGE 8 .. 32;
FOR INT_NEW'SIZE USE NEWHUE'SIZE;
 
PROCEDURE CHECK_HUE IS NEW ENUM_CHECK(HUE, INT_HUE);
PROCEDURE CHECK_NEW IS NEW ENUM_CHECK(NEWHUE, INT_NEW);
 
END PACK;
 
PACKAGE BODY PACK IS
BEGIN
CHECK_HUE (RED, 8, "HUE");
CHECK_NEW (YELLOW, 32, "NEWHUE");
END PACK;
 
BEGIN
NULL;
END;
 
RESULT;
END CD3014C;
/cd5014a.ada
0,0 → 1,84
-- CD5014A.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF AN
-- ENUMERATION TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE
-- PART OF THE SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 09/30/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014A IS
 
BEGIN
 
TEST ("CD5014A", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE VISIBLE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF AN " &
"ENUMERATION TYPE, WHERE THE VARIABLE IS " &
"DECLARED IN THE VISIBLE PART OF THE " &
"SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE ENUM_TYPE IS (RED,BLUE,GREEN);
ENUM_OBJ1 : ENUM_TYPE := RED;
FOR ENUM_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
ENUM_OBJ1 := BLUE;
END IF;
 
IF ENUM_OBJ1 /= BLUE THEN
FAILED ("INCORRECT VALUE FOR ENUMERATION VARIABLE");
END IF;
 
IF ENUM_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR ENUMERATION VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014A;
/cd5014c.ada
0,0 → 1,84
-- CD5014C.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF AN INTEGER
-- TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE
-- SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 09/30/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014C IS
 
BEGIN
 
TEST ("CD5014C", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE PRIVATE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF AN INTEGER " &
"TYPE, WHERE THE VARIABLE IS DECLARED IN THE " &
"VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE INTEGER_TYPE IS RANGE 0 .. 100;
INTEGER_OBJ1 : INTEGER_TYPE := 50;
PRIVATE
FOR INTEGER_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
INTEGER_OBJ1 := 7;
END IF;
 
IF INTEGER_OBJ1 /= 7 THEN
FAILED ("INCORRECT VALUE FOR INTEGER VARIABLE");
END IF;
 
IF INTEGER_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR INTEGER VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014C;
/cd20001.a
0,0 → 1,275
-- CD20001.A
--
-- 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 for packed records the components are packed as tightly
-- as possible subject to the Size of the component subtypes.
-- Specifically check that Boolean objects are packed one to a bit.
--
-- Check that the Component_Size for a packed array type is less than
-- or equal to the smallest of those factors of the word size that are
-- greater than or equal to the Size of the component subtype.
--
-- TEST DESCRIPTION:
-- This test defines and packs several types, and checks that the sizes
-- of the resulting objects is as expected.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as
-- inapplicable. Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 22 JUL 95 SAIC Initial version
-- 08 MAY 96 SAIC Strengthened for 2.1
-- 29 JAN 98 EDS Deleted check that Component_Size is really a
-- factor of Word_Size.
--!
 
----------------------------------------------------------------- CD20001_0
 
with System;
package CD20001_0 is
 
type Wordlong_Bool_Array is array(1..System.Word_Size) of Boolean;
pragma Pack(Wordlong_Bool_Array); -- ANX-C RQMT
 
type Def_Rep_Components is range 0..2**(System.Storage_Unit-2);
 
type Spec_Rep_Components is range 0..2**(System.Storage_Unit-2);
for Spec_Rep_Components'Size use System.Storage_Unit; -- ANX-C RQMT
 
type Packed_Array_Def_Components is array(1..32) of Def_Rep_Components;
pragma Pack(Packed_Array_Def_Components); -- ANX-C RQMT
 
type Packed_Array_Spec_Components is array(1..32) of Spec_Rep_Components;
pragma Pack(Packed_Array_Spec_Components); -- ANX-C RQMT
 
procedure TC_Check_Values;
 
end CD20001_0;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with Report;
with TCTouch;
package body CD20001_0 is
 
procedure TC_Check_Values is
My_Word : Wordlong_Bool_Array := (others => False);
 
Cited_Unit : Spec_Rep_Components := 0;
 
Packed_Array : Packed_Array_Def_Components := (others => 0);
 
Cited_Packed : Packed_Array_Spec_Components := (others => 0);
 
begin
TCTouch.Assert( My_Word'Size = System.Word_Size,
"pragma Pack on array of Booleans does not pack one Boolean per bit" );
 
TCTouch.Assert( My_Word'Component_Size = 1,
"size of Boolean array component not 1 bit");
 
TCTouch.Assert( Cited_Unit'Size = System.Storage_Unit,
"Object specified to be Storage_Unit bits not " &
"Storage_Unit bits in size");
 
TCTouch.Assert( Packed_Array'Component_Size <= System.Storage_Unit,
"Packed array component expected to be less than or " &
"equal to Storage_Unit bits in size is greater than " &
"Storage_Unit bits in size");
 
TCTouch.Assert( Cited_Packed'Component_Size = System.Storage_Unit,
"Array component specified to be Storage_Unit " &
"bits not Storage_Unit bits in size");
 
end TC_Check_Values;
 
end CD20001_0;
 
----------------------------------------------------------------- CD20001_1
 
with System;
package CD20001_1 is
 
type Bits_2 is range 0..2**2-1;
for Bits_2'Size use 2; -- ANX-C RQMT
 
type Bits_3 is range 0..2**3-1;
for Bits_3'Size use 3; -- ANX-C RQMT
 
type Bits_7 is range 0..2**7-1;
for Bits_7'Size use 7; -- ANX-C RQMT
 
type Bits_8 is range 0..2**8-1;
for Bits_8'Size use 8; -- ANX-C RQMT
 
type Bits_9 is range 0..2**9-1;
for Bits_9'Size use 9; -- ANX-C RQMT
 
type Bits_15 is range 0..2**15-1;
for Bits_15'Size use 15; -- ANX-C RQMT
 
type Pact_Aray_2 is array(0..31) of Bits_2;
pragma Pack( Pact_Aray_2 ); -- ANX-C RQMT
 
type Pact_Aray_3 is array(0..31) of Bits_3;
pragma Pack( Pact_Aray_3 ); -- ANX-C RQMT
 
type Pact_Aray_7 is array(0..31) of Bits_7;
pragma Pack( Pact_Aray_7 ); -- ANX-C RQMT
 
type Pact_Aray_8 is array(0..31) of Bits_8;
pragma Pack( Pact_Aray_8 ); -- ANX-C RQMT
 
type Pact_Aray_9 is array(0..31) of Bits_9;
pragma Pack( Pact_Aray_9 ); -- ANX-C RQMT
 
type Pact_Aray_15 is array(0..31) of Bits_15;
pragma Pack( Pact_Aray_15 ); -- ANX-C RQMT
 
 
procedure TC_Check_Values;
 
end CD20001_1;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with Report;
with TCTouch;
package body CD20001_1 is
 
function Next_Factor ( Value : Positive ) return Integer is
-- Returns the factor of Word_Size that is next larger than Value.
-- If Value is greater than Word_Size, then returns Word_Size.
Test : Integer := Value;
Found : Boolean := False;
begin -- Next_Factor
while not Found and Test <= System.Word_Size loop
if System.Word_Size mod Test = 0 then
Found := True;
else
Test := Test + 1;
end if;
end loop;
if Found then
return Test;
else
return System.Word_Size;
end if;
end Next_Factor;
 
procedure TC_Check_Values is
begin
if Pact_Aray_2'Component_Size > Next_Factor ( Bits_2'Size ) then
Report.Failed
( "2 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_2'Component_Size <= Pact_Aray_2'Size,
"2 bit Component_Size greater than array size" );
 
if Pact_Aray_3'Component_Size > Next_Factor ( Bits_3'Size ) then
Report.Failed
( "3 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_3'Component_Size <= Pact_Aray_3'Size,
"3 bit Component_Size greater than array size" );
 
if Pact_Aray_7'Component_Size > Next_Factor ( Bits_7'Size ) then
Report.Failed
( "7 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_7'Component_Size <= Pact_Aray_7'Size,
"7 bit Component_Size greater than array size" );
 
if Pact_Aray_8'Component_Size > Next_Factor ( Bits_8'Size ) then
Report.Failed
( "8 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_8'Component_Size <= Pact_Aray_8'Size,
"8 bit Component_Size greater than array size" );
 
if System.Word_Size > 8 then
 
if Pact_Aray_9'Component_Size > Next_Factor ( Bits_9'Size ) then
Report.Failed
( "9 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_9'Component_Size <= Pact_Aray_9'Size,
"9 bit Component_Size greater than array size" );
 
if Pact_Aray_15'Component_Size > Next_Factor ( Bits_15'Size ) then
Report.Failed
( "15 bit element Packed Array'Component_Size too big" );
end if;
 
TCTouch.Assert( Pact_Aray_15'Component_Size <= Pact_Aray_15'Size,
"15 bit Component_Size greater than array size" );
 
end if;
 
end TC_Check_Values;
 
end CD20001_1;
 
------------------------------------------------------------------- CD20001
 
with Report;
with CD20001_0;
with CD20001_1;
 
procedure CD20001 is
 
begin -- Main test procedure.
 
Report.Test ("CD20001", "Check that packed records are packed as tightly " &
"as possible. Check that Boolean objects are " &
"packed one to a bit. " &
"Check that the Component_Size for a packed " &
"array type is the value which is less than or " &
"equal to the Size of the component type, " &
"rounded up to the nearest factor of word_size" );
CD20001_0.TC_Check_Values;
 
CD20001_1.TC_Check_Values;
 
Report.Result;
 
end CD20001;
/cd5014e.ada
0,0 → 1,84
-- CD5014E.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FLOATING
-- POINT TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART
-- OF THE SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 08/19/87 CREATED ORIGINAL TEST.
-- BCB 09/30/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014E IS
 
BEGIN
 
TEST ("CD5014E", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE VISIBLE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF A FLOATING " &
"POINT TYPE, WHERE THE VARIABLE IS DECLARED " &
"IN THE VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE FLOAT_TYPE IS DIGITS SYSTEM.MAX_DIGITS
RANGE 0.0 .. 100.0;
FLOAT_OBJ1 : FLOAT_TYPE := 50.0;
FOR FLOAT_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
FLOAT_OBJ1 := 5.0;
END IF;
 
IF FLOAT_OBJ1 /= 5.0 THEN
FAILED ("INCORRECT VALUE FOR FLOATING POINT VARIABLE");
END IF;
 
IF FLOAT_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR FLOATING POINT VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014E;
/cd7103d.ada
0,0 → 1,52
-- CD7103D.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 CONSTANT FINE_DELTA = 2.0 ** (- MAX_MANTISSA).
 
-- HISTORY:
-- BCB 09/10/87 CREATED ORIGINAL TEST.
 
-- DTN 11/21/91 DELETED SUBPART (A). CHANGED EXTENSION FROM '.TST' TO
-- '.ADA'.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
 
PROCEDURE CD7103D IS
 
MANTISSA_VAL : CONSTANT := 2.0 ** (-SYSTEM.MAX_MANTISSA);
 
BEGIN
 
TEST ("CD7103D", "CHECK THAT THE CONSTANT FINE_DELTA " &
"= 2.0 ** (- MAX_MANTISSA)");
 
IF SYSTEM.FINE_DELTA /= MANTISSA_VAL THEN
FAILED ("INCORRECT VALUE FOR SYSTEM.FINE_DELTA");
END IF;
 
RESULT;
 
END CD7103D;
/cd300050.am
0,0 → 1,154
-- CD30005.A
--
-- 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 Address clauses are supported for imported subprograms.
--
-- TEST DESCRIPTION:
-- This test imports a simple C function and specifies it's location.
--
-- The implementation may choose to implement
-- Impdef.CD30005_1_Foreign_Address so as to dynamically call a C
-- function that returns the appropriate address for the external
-- function identified by Impdef.CD30005_1_External_Name.
--
-- TEST FILES:
-- CD300050.AM
-- CD300051.C -- the C function: (included below for reference)
--
-- SPECIAL REQUIREMENTS:
-- The file CD300051.C must be compiled with a C compiler.
-- Implementation dialects of C may require alteration of the C program
-- syntax. The program is included here for reference:
--
-- int _cd30005_1( Value )
-- {
-- /* int Value */
--
-- return Value + 1;
-- }
--
-- Implementations may require special linkage commands to include the
-- C code.
--
-- APPLICABILITY CRITERIA:
-- This test is not applicable to implementations not providing an interface
-- to C language units. OTHERWISE:
--
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 22 JUL 95 SAIC Initial version
-- 30 APR 96 SAIC Added commentary for 2.1
-- 09 MAY 96 SAIC Changed reporting for 2.1
-- 04 NOV 96 SAIC Added use type System.Address
-- 16 FEB 98 EDS Modified documentation.
-- 29 JUN 98 EDS Modified main program name.
--!
 
----------------------------------------------------------------- CD30005_0
 
with Impdef;
package CD30005_0 is
 
-- Check that Address clauses are supported for imported subprograms.
 
type External_Func_Ref is access function(N:Integer) return Integer;
pragma Convention( C, External_Func_Ref );
 
 
function CD30005_1( I: Integer ) return Integer;
 
pragma Import( C, CD30005_1,
Impdef.CD30005_1_External_Name ); -- N/A => ERROR.
 
for CD30005_1'Address use
Impdef.CD30005_1_Foreign_Address; -- ANX-C RQMT.
 
procedure TC_Check_Imports;
 
end CD30005_0;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
with Report;
with System.Storage_Elements;
with System.Address_To_Access_Conversions;
package body CD30005_0 is
 
use type System.Address;
 
procedure TC_Check_Imports is
S : External_Func_Ref := CD30005_1'Access;
I,K : Integer := 99;
begin
 
K := S.all(I);
if K /= 100 then
Report.Failed("C program returned" & Integer'Image(K));
end if;
 
I := CD30005_1( I );
if I /= 100 then
Report.Failed("C program returned" & Integer'Image(I));
end if;
 
if CD30005_1'Address /= Impdef.CD30005_1_Foreign_Address then
Report.Failed("Address not that specified");
end if;
 
end TC_Check_Imports;
 
end CD30005_0;
 
------------------------------------------------------------------- CD300050
 
with Report;
with CD30005_0;
 
procedure CD300050 is
 
begin -- Main test procedure.
 
Report.Test ("CD30005",
"Check that Address clauses are supported for imported " &
"subprograms" );
-- Check that Address clauses are supported for imported subprograms.
 
CD30005_0.TC_Check_Imports;
 
Report.Result;
 
end CD300050;
/cd30002.a
0,0 → 1,207
-- CD30002.A
--
-- 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 implementation supports Alignments for subtypes and
-- objects specified as factors and multiples of the number of storage
-- elements per word, unless those values cannot be loaded and stored.
-- Check that the largest alignment returned by default is supported.
--
-- Check that the implementation supports Alignments supported by the
-- target linker for stand-alone library-level objects of statically
-- constrained subtypes.
--
-- TEST DESCRIPTION:
-- This test defines several types and objects, specifying various
-- alignments for them (as factors and multiples of the number of
-- storage elements per word). It then checks the alignments by
-- declaring some objects, and checking that the integer values of
-- their addresses is mod the specified alignment. This will not
-- prevent false passes where the lucky compiler gets it right by
-- chance, but will catch compilers that specifically do not obey
-- the alignment clauses.
--
-- APPLICABILITY CRITERIA:
-- All implementations must attempt to compile this test.
--
-- For implementations validating against Systems Programming Annex (C):
-- this test must execute and report PASSED.
--
-- For implementations not validating against Annex C:
-- this test may report compile time errors at one or more points
-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable.
-- Otherwise, the test must execute and report PASSED.
--
--
-- CHANGE HISTORY:
-- 22 JUL 95 SAIC Initial version
-- 09 MAY 96 SAIC Strengthened for 2.1
-- 26 FEB 97 PWB.CTA Allowed for unexpected word sizes
-- 16 FEB 98 EDS Modified documentation.
-- 26 SEP 98 RLB Fixed value on line 130 so check and dec. match.
-- 30 OCT 98 RLB Split Multiple_Alignment and revised the
-- calculation to work on all targets.
-- 18 JAN 99 RLB Repaired again to work on targets where word size
-- equals storage unit.
--!
 
----------------------------------------------------------------- CD30002_0
 
with Impdef;
with System.Storage_Elements;
package CD30002_0 is
 
S_Units_per_Word : constant := System.Word_Size/System.Storage_Unit;
-- Must be 1 or greater.
 
Multiple_Type_Alignment : constant :=
Integer'Min ( Impdef.Max_Default_Alignment,
2 * S_Units_per_Word );
-- Calculate a reasonable alignment, but not larger than the
-- implementation is required to support.
 
Multiple_Object_Alignment : constant :=
Integer'Min ( Impdef.Max_Linker_Alignment,
2 * S_Units_per_Word );
-- Calculate a reasonable object alignment, but not larger than
-- the implementation is required to support.
 
Small_Alignment : constant :=
Integer'Max ( S_Units_per_Word / 2, 1);
-- Calculate a reasonable small alignment, but not less than 1.
-- (If S_Units_per_Word = 1, 1/2 => 0 which causes problems
-- verifying alignment.)
 
subtype Storage_Element is System.Storage_Elements.Storage_Element;
 
type Some_Stuff is array(1..S_Units_Per_Word) of Storage_Element;
for Some_Stuff'Alignment
use Impdef.Max_Default_Alignment; -- ANX-C RQMT.
 
Library_Level_Object : Some_Stuff;
for Library_Level_Object'Alignment
use Impdef.Max_Linker_Alignment; -- ANX-C RQMT.
 
type Quarter is mod 4; -- two bits
for Quarter'Alignment use Small_Alignment; -- ANX-C RQMT.
 
type Half is mod 16; -- nibble
for Half'Alignment use Multiple_Type_Alignment; -- ANX-C RQMT.
type O_Some_Stuff is array(1..S_Units_Per_Word) of Storage_Element;
type O_Quarter is mod 4; -- two bits
 
type O_Half is mod 16; -- nibble
 
end CD30002_0;
 
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
-- there is no package body CD30002_0
 
------------------------------------------------------------------- CD30002
 
with Report;
with Impdef;
with CD30002_0;
with System.Storage_Elements;
procedure CD30002 is
 
My_Stuff : CD30002_0.Some_Stuff;
-- Impdef.Max_Default_Alignment
 
My_Quarter : CD30002_0.Quarter;
-- CD30002_0.S_Units_per_Word / 2
 
My_Half : CD30002_0.Half;
-- CD30002_0.S_Units_per_Word * 2
 
Stuff_Object : CD30002_0.O_Some_Stuff;
for Stuff_Object'Alignment
use Impdef.Max_Default_Alignment; -- ANX-C RQMT.
 
Quarter_Object : CD30002_0.O_Quarter;
for Quarter_Object'Alignment
use CD30002_0.Small_Alignment; -- ANX-C RQMT.
 
Half_Object : CD30002_0.O_Half;
for Half_Object'Alignment
use CD30002_0.Multiple_Object_Alignment; -- ANX-C RQMT.
 
subtype IntAdd is System.Storage_Elements.Integer_Address;
use type System.Storage_Elements.Integer_Address;
 
function A2I(Value: System.Address) return IntAdd renames
System.Storage_Elements.To_Integer;
 
NAC : constant String := " not aligned correctly";
 
begin -- Main test procedure.
 
Report.Test ("CD30002", "Check that the implementation supports " &
"Alignments for subtypes and objects specified " &
"as factors and multiples of the number of " &
"storage elements per word, unless those values " &
"cannot be loaded and stored. Check that the " &
"largest alignment returned by default is " &
"supported. Check that the implementation " &
"supports Alignments supported by the target " &
"linker for stand-alone library-level objects " &
"of statically constrained subtypes" );
 
if A2I(CD30002_0.Library_Level_Object'Address)
mod Impdef.Max_Linker_Alignment /= 0 then
Report.Failed("Library_Level_Object" & NAC);
end if;
 
if A2I(My_Stuff'Address) mod Impdef.Max_Default_Alignment /= 0 then
Report.Failed("Max alignment subtype" & NAC);
end if;
 
if A2I(My_Quarter'Address) mod (CD30002_0.Small_Alignment) /= 0 then
Report.Failed("Factor of words subtype" & NAC);
end if;
 
if A2I(My_Half'Address) mod (CD30002_0.Multiple_Type_Alignment) /= 0 then
Report.Failed("Multiple of words subtype" & NAC);
end if;
 
if A2I(Stuff_Object'Address) mod Impdef.Max_Default_Alignment /= 0 then
Report.Failed("Stuff alignment object" & NAC);
end if;
 
if A2I(Quarter_Object'Address)
mod (CD30002_0.Small_Alignment) /= 0 then
Report.Failed("Factor of words object" & NAC);
end if;
 
if A2I(Half_Object'Address) mod (CD30002_0.Multiple_Object_Alignment) /= 0 then
Report.Failed("Multiple of words object" & NAC);
end if;
 
Report.Result;
 
end CD30002;
/cd7204c.ada
0,0 → 1,91
-- CD7204C.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 PREFIX OF THE 'POSITION, 'LAST_BIT, AND 'FIRST_BIT
-- ATTRIBUTES CAN DENOTE A RECORD COMPONENT, AND THE ATTRIBUTES
-- RETURN APPROPRIATE VALUES WHEN A RECORD REPRESENTATION CLAUSE
-- IS GIVEN.
 
-- HISTORY:
-- BCB 09/14/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
 
PROCEDURE CD7204C IS
 
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1)/SYSTEM.STORAGE_UNIT;
 
TYPE BASIC_REC IS RECORD
CHECK_INT : INTEGER;
CHECK_CHAR : CHARACTER;
END RECORD;
 
FOR BASIC_REC USE
RECORD
CHECK_INT AT 0 RANGE 0..INTEGER'SIZE - 1;
CHECK_CHAR AT 1*UNITS_PER_INTEGER
RANGE 0..CHARACTER'SIZE - 1;
END RECORD;
 
CHECK_REC : BASIC_REC;
 
BEGIN
 
TEST ("CD7204C", "THE PREFIX OF THE 'POSITION, " &
"'LAST_BIT, AND 'FIRST_BIT ATTRIBUTES CAN " &
"DENOTE A RECORD COMPONENT, AND THE ATTRIBUTES " &
"RETURN APPROPRIATE VALUES WHEN A RECORD " &
"REPRESENTATION CLAUSE IS GIVEN");
 
IF CHECK_REC.CHECK_INT'POSITION /= 0 THEN
FAILED ("INCORRECT VALUE FOR POSITION OF CHECK_INT");
END IF;
 
IF CHECK_REC.CHECK_INT'FIRST_BIT /= IDENT_INT (0) THEN
FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHECK_INT");
END IF;
 
IF CHECK_REC.CHECK_INT'LAST_BIT /= INTEGER'SIZE - 1 THEN
FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHECK_INT");
END IF;
 
IF CHECK_REC.CHECK_CHAR'POSITION /= IDENT_INT (UNITS_PER_INTEGER)
THEN FAILED ("INCORRECT VALUE FOR POSITION OF CHECK_CHAR");
END IF;
 
IF CHECK_REC.CHECK_CHAR'FIRST_BIT /= 0 THEN
FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHECK_CHAR");
END IF;
 
IF CHECK_REC.CHECK_CHAR'LAST_BIT /= IDENT_INT (CHARACTER'SIZE - 1)
THEN FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHECK_CHAR");
END IF;
 
RESULT;
 
END CD7204C;
/cd5014g.ada
0,0 → 1,84
-- CD5014G.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FIXED
-- POINT TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF
-- THE SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 10/01/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014G IS
 
BEGIN
 
TEST ("CD5014G", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE PRIVATE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF A FIXED " &
"POINT TYPE, WHERE THE VARIABLE IS DECLARED " &
"IN THE VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE FIXED_TYPE IS DELTA 0.5 RANGE 0.0 .. 100.0;
FIXED_OBJ1 : FIXED_TYPE := 50.0;
PRIVATE
FOR FIXED_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
FIXED_OBJ1 := 5.0;
END IF;
 
IF FIXED_OBJ1 /= 5.0 THEN
FAILED ("INCORRECT VALUE FOR FIXED POINT VARIABLE");
END IF;
 
IF FIXED_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR FIXED POINT VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014G;
/cd5014i.ada
0,0 → 1,83
-- CD5014I.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF AN ARRAY
-- TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE
-- SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 10/01/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014I IS
 
BEGIN
 
TEST ("CD5014I", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE VISIBLE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF AN ARRAY " &
"TYPE, WHERE THE VARIABLE IS DECLARED IN THE " &
"VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE ARR_TYPE IS ARRAY (1..2) OF INTEGER;
ARR_OBJ1 : ARR_TYPE := (5,10);
FOR ARR_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
ARR_OBJ1 := (13,21);
END IF;
 
IF ARR_OBJ1 /= (13,21) THEN
FAILED ("INCORRECT VALUE FOR ARRAY VARIABLE");
END IF;
 
IF ARR_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR ARRAY VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014I;
/cd2a91c.tst
0,0 → 1,134
-- CD2A91C.TST
 
-- 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 A SIZE SPECIFICATION FOR A TASK TYPE CAN BE GIVEN IN
-- THE VISIBLE OR PRIVATE PART OF A PACKAGE.
 
-- MACRO SUBSTITUTION:
-- $TASK_SIZE IS THE NUMBER OF BITS NEEDED BY THE IMPLEMENTATION TO
-- HOLD ANY POSSIBLE OBJECT OF THE TASK TYPE "BASIC_TYPE".
 
-- HISTORY:
-- BCB 09/08/87 CREATED ORIGINAL TEST.
-- RJW 05/12/89 MODIFIED CHECKS INVOLVING 'SIZE ATTRIBUTE.
-- REMOVED APPLICABILTY CRITERIA.
-- DTN 11/20/91 DELETED SUBPARTS (B and C).
 
WITH REPORT; USE REPORT;
PROCEDURE CD2A91C IS
 
BASIC_SIZE : CONSTANT := $TASK_SIZE;
 
VAL : INTEGER := 1;
 
TASK TYPE BASIC_TYPE IS
ENTRY HERE(NUM : IN OUT INTEGER);
END BASIC_TYPE;
 
FOR BASIC_TYPE'SIZE USE BASIC_SIZE;
 
BASIC_TASK : BASIC_TYPE;
 
PACKAGE P IS
TASK TYPE TASK_IN_P IS
ENTRY HERE(NUM : IN OUT INTEGER);
END TASK_IN_P;
FOR TASK_IN_P'SIZE USE BASIC_SIZE;
TASK TYPE ALT_TASK_IN_P IS
ENTRY HERE(NUM : IN OUT INTEGER);
END ALT_TASK_IN_P;
PRIVATE
FOR ALT_TASK_IN_P'SIZE USE BASIC_SIZE;
END P;
 
USE P;
 
ALT_TASK : ALT_TASK_IN_P;
IN_TASK : TASK_IN_P;
 
TASK BODY BASIC_TYPE IS
BEGIN
SELECT
ACCEPT HERE(NUM : IN OUT INTEGER) DO
NUM := 0;
END HERE;
OR
TERMINATE;
END SELECT;
END BASIC_TYPE;
 
PACKAGE BODY P IS
TASK BODY TASK_IN_P IS
BEGIN
SELECT
ACCEPT HERE(NUM : IN OUT INTEGER) DO
NUM := 0;
END HERE;
OR
TERMINATE;
END SELECT;
END TASK_IN_P;
TASK BODY ALT_TASK_IN_P IS
BEGIN
SELECT
ACCEPT HERE(NUM : IN OUT INTEGER) DO
NUM := 0;
END HERE;
OR
TERMINATE;
END SELECT;
END ALT_TASK_IN_P;
END P;
 
BEGIN
TEST ("CD2A91C", "CHECK THAT A SIZE SPECIFICATION FOR A TASK " &
"TYPE CAN BE GIVEN IN THE VISIBLE OR PRIVATE " &
"PART OF A PACKAGE");
 
BASIC_TASK.HERE(VAL);
 
IF VAL /= IDENT_INT (0) THEN
FAILED ("INCORRECT RESULTS FROM ENTRY CALL - 1");
END IF;
 
VAL := 1;
 
ALT_TASK.HERE(VAL);
IF VAL /= IDENT_INT (0) THEN
FAILED ("INCORRECT RESULTS FROM ENTRY CALL - 2");
END IF;
VAL := 1;
 
IN_TASK.HERE(VAL);
 
IF VAL /= IDENT_INT (0) THEN
FAILED ("INCORRECT RESULTS FROM ENTRY CALL - 3");
END IF;
 
 
RESULT;
END CD2A91C;
/cd5014k.ada
0,0 → 1,87
-- CD5014K.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A RECORD
-- TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE
-- SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 10/01/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014K IS
 
BEGIN
 
TEST ("CD5014K", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE PRIVATE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF A RECORD " &
"TYPE, WHERE THE VARIABLE IS DECLARED IN THE " &
"VISIBLE PART OF THE SPECIFICATION");
 
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE REC_TYPE IS RECORD
VAL : INTEGER;
END RECORD;
REC_OBJ1 : REC_TYPE := (VAL => 10);
PRIVATE
FOR REC_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
REC_OBJ1.VAL := 100;
END IF;
 
IF REC_OBJ1.VAL /= 100 THEN
FAILED ("INCORRECT VALUE FOR RECORD VARIABLE COMPONENT");
END IF;
 
IF REC_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR RECORD VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014K;
/cd2b11a.ada
0,0 → 1,214
-- CD2B11A.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 IF A COLLECTION SIZE SPECIFICATION CAN BE GIVEN FOR AN
-- ACCESS TYPE, THEN OPERATIONS ON VALUES OF THE ACCESS TYPE ARE NOT
-- AFFECTED.
 
-- HISTORY:
-- BCB 11/01/88 CREATED ORIGINAL TEST.
-- RJW 05/17/89 CHANGED FROM '.DEP' TEST TO '.ADA' TEST.
-- ADDED CHECK FOR UNCHECKED_DEALLOCATION.
 
WITH REPORT; USE REPORT;
WITH SYSTEM;
WITH UNCHECKED_DEALLOCATION;
PROCEDURE CD2B11A IS
 
BASIC_SIZE : CONSTANT := 1024;
 
TYPE MAINTYPE IS ARRAY (INTEGER RANGE <>) OF INTEGER;
TYPE ACC_TYPE IS ACCESS MAINTYPE;
SUBTYPE ACC_RANGE IS ACC_TYPE (1 .. 3);
 
FOR ACC_TYPE'STORAGE_SIZE USE BASIC_SIZE;
 
TYPE RECORD_TYPE IS RECORD
COMP : ACC_TYPE;
END RECORD;
 
CHECK_TYPE1 : ACC_TYPE;
CHECK_TYPE2 : ACC_TYPE;
CHECK_TYPE3 : ACC_TYPE(1..3);
 
CHECK_ARRAY : ARRAY (1..2) OF ACC_TYPE;
 
CHECK_RECORD1 : RECORD_TYPE;
CHECK_RECORD2 : RECORD_TYPE;
 
CHECK_PARAM1 : ACC_TYPE;
CHECK_PARAM2 : ACC_TYPE;
 
CHECK_NULL : ACC_TYPE := NULL;
 
PROCEDURE PROC (ACC1,ACC2 : IN OUT ACC_TYPE) IS
 
BEGIN
 
IF (ACC1.ALL /= ACC2.ALL) THEN
FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS " &
"- 1");
END IF;
 
IF EQUAL (3,3) THEN
ACC2 := ACC1;
END IF;
 
IF ACC2 /= ACC1 THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " &
"-1");
END IF;
 
IF (ACC1 IN ACC_RANGE) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 1");
END IF;
 
END PROC;
 
BEGIN
 
TEST ("CD2B11A", "CHECK THAT IF A COLLECTION SIZE SPECIFICATION " &
"CAN BE GIVEN FOR AN ACCESS TYPE, THEN " &
"OPERATIONS ON VALUES OF THE ACCESS TYPE ARE " &
"NOT AFFECTED");
 
CHECK_PARAM1 := NEW MAINTYPE'(25,35,45);
CHECK_PARAM2 := NEW MAINTYPE'(25,35,45);
 
PROC (CHECK_PARAM1,CHECK_PARAM2);
 
IF ACC_TYPE'STORAGE_SIZE < BASIC_SIZE THEN
FAILED ("INCORRECT VALUE FOR ACCESS TYPE STORAGE_SIZE");
END IF;
 
CHECK_TYPE1 := NEW MAINTYPE'(25,35,45);
CHECK_TYPE2 := NEW MAINTYPE'(25,35,45);
CHECK_TYPE3 := NEW MAINTYPE'(1 => 1,2 => 2,3 => 3);
 
CHECK_ARRAY (1) := NEW MAINTYPE'(25,35,45);
CHECK_ARRAY (2) := NEW MAINTYPE'(25,35,45);
 
CHECK_RECORD1.COMP := NEW MAINTYPE'(25,35,45);
CHECK_RECORD2.COMP := NEW MAINTYPE'(25,35,45);
 
IF (CHECK_TYPE1.ALL /= CHECK_TYPE2.ALL) THEN
FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 2");
END IF;
 
IF EQUAL (3,3) THEN
CHECK_TYPE2 := CHECK_TYPE1;
END IF;
 
IF CHECK_TYPE2 /= CHECK_TYPE1 THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 2");
END IF;
 
IF (CHECK_TYPE1 IN ACC_RANGE) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 2");
END IF;
 
IF (CHECK_ARRAY (1).ALL /= CHECK_ARRAY (2).ALL) THEN
FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 3");
END IF;
 
IF EQUAL (3,3) THEN
CHECK_ARRAY (2) := CHECK_ARRAY (1);
END IF;
 
IF CHECK_ARRAY (2) /= CHECK_ARRAY (1) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3");
END IF;
 
IF (CHECK_ARRAY (1) IN ACC_RANGE) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 3");
END IF;
 
IF (CHECK_RECORD1.COMP.ALL /= CHECK_RECORD2.COMP.ALL) THEN
FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 4");
END IF;
 
IF EQUAL (3,3) THEN
CHECK_RECORD2 := CHECK_RECORD1;
END IF;
 
IF CHECK_RECORD2 /= CHECK_RECORD1 THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4");
END IF;
 
IF (CHECK_RECORD1.COMP IN ACC_RANGE) THEN
FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 4");
END IF;
 
IF CHECK_TYPE3'FIRST /= IDENT_INT (1) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE3'FIRST");
END IF;
 
IF CHECK_TYPE3'LAST /= IDENT_INT (3) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE3'LAST");
END IF;
 
DECLARE
TYPE ACC_CHAR IS ACCESS CHARACTER;
FOR ACC_CHAR'STORAGE_SIZE USE 128;
 
LIMIT : INTEGER :=
(ACC_CHAR'STORAGE_SIZE * SYSTEM.STORAGE_UNIT)/CHARACTER'SIZE;
 
ACC_ARRAY : ARRAY (1 .. LIMIT + 1) OF ACC_CHAR;
PLACE : INTEGER;
 
PROCEDURE FREE IS
NEW UNCHECKED_DEALLOCATION (CHARACTER, ACC_CHAR);
BEGIN
FOR I IN ACC_ARRAY'RANGE LOOP
ACC_ARRAY (IDENT_INT (I)) :=
NEW CHARACTER'
(IDENT_CHAR ((CHARACTER'VAL (I MOD 128))));
PLACE := I;
END LOOP;
FAILED ("NO EXCEPTION RAISED WHEN COLLECTION SIZE EXCEEDED");
EXCEPTION
WHEN STORAGE_ERROR =>
BEGIN
FOR I IN 1 .. PLACE LOOP
IF I MOD 2 = 0 THEN
FREE (ACC_ARRAY (IDENT_INT (I)));
END IF;
END LOOP;
 
FOR I IN 1 .. PLACE LOOP
IF I MOD 2 = 1 AND THEN
IDENT_CHAR (ACC_ARRAY (I).ALL) /=
CHARACTER'VAL (I MOD IDENT_INT (128)) THEN
FAILED ("INCORRECT VALUE IN ARRAY");
END IF;
END LOOP;
END;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED");
END;
 
RESULT;
END CD2B11A;
/cd5014m.ada
0,0 → 1,88
-- CD5014M.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF AN ACCESS
-- TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF
-- THE SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 10/01/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014M IS
 
BEGIN
 
TEST ("CD5014M", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE VISIBLE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF AN ACCESS " &
"TYPE, WHERE THE VARIABLE IS DECLARED IN THE " &
"VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE ACCESS_TYPE;
TYPE POINTER_TYPE IS ACCESS ACCESS_TYPE;
TYPE ACCESS_TYPE IS RECORD
VAL1 : INTEGER;
NEXT : POINTER_TYPE;
END RECORD;
POINTER_OBJ1 : POINTER_TYPE := NEW ACCESS_TYPE'(0,NULL);
FOR POINTER_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
POINTER_OBJ1 := NEW ACCESS_TYPE'(10,NULL);
END IF;
 
IF POINTER_OBJ1.ALL /= (10,NULL) THEN
FAILED ("INCORRECT VALUE FOR ACCESS VARIABLE");
END IF;
 
IF POINTER_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR ACCESS VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014M;
/cd1c04a.ada
0,0 → 1,147
-- CD1C04A.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 A SIZE CLAUSE CAN BE GIVEN FOR A DERIVED TYPE, A
-- DERIVED PRIVATE TYPE, AND A DERIVED LIMITED PRIVATE TYPE EVEN
-- IF THE SIZE IS INHERITED FROM THE PARENT, AND THAT THE SIZE
-- CLAUSES FOR THE DERIVED TYPES OVERRIDE THE PARENTS'.
 
-- HISTORY:
-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST
-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'.
-- JET 09/16/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
PROCEDURE CD1C04A IS
 
SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE / 2;
 
TYPE PARENT_TYPE IS RANGE 0 .. 100;
 
FOR PARENT_TYPE'SIZE USE INTEGER'SIZE;
 
TYPE DERIVED_TYPE IS NEW PARENT_TYPE;
 
FOR DERIVED_TYPE'SIZE USE SPECIFIED_SIZE;
 
PACKAGE P IS
TYPE PRIVATE_PARENT IS PRIVATE;
TYPE LIM_PRIV_PARENT IS LIMITED PRIVATE;
PRIVATE
TYPE PRIVATE_PARENT IS RANGE 0 .. 100;
FOR PRIVATE_PARENT'SIZE USE INTEGER'SIZE;
TYPE LIM_PRIV_PARENT IS RANGE 0 .. 100;
FOR LIM_PRIV_PARENT'SIZE USE INTEGER'SIZE;
END P;
 
USE P;
 
TYPE DERIVED_PRIVATE_TYPE IS NEW PRIVATE_PARENT;
 
FOR DERIVED_PRIVATE_TYPE'SIZE USE SPECIFIED_SIZE;
 
TYPE DERIVED_LIM_PRIV_TYPE IS NEW LIM_PRIV_PARENT;
 
FOR DERIVED_LIM_PRIV_TYPE'SIZE USE SPECIFIED_SIZE;
 
DT : DERIVED_TYPE := 100;
DPT : DERIVED_PRIVATE_TYPE;
DLPT : DERIVED_LIM_PRIV_TYPE;
 
BEGIN
 
TEST("CD1C04A", "CHECK THAT A SIZE CLAUSE CAN BE GIVEN FOR " &
"A DERIVED TYPE, A DERIVED PRIVATE TYPE, AND " &
"A DERIVED LIMITED PRIVATE TYPE EVEN IF THE " &
"SIZE IS INHERITED FROM THE PARENT, AND THAT " &
"THE SIZE CLAUSES FOR THE DERIVED TYPES " &
"OVERRIDE THE PARENTS'");
 
IF PARENT_TYPE'SIZE /= IDENT_INT (INTEGER'SIZE) THEN
FAILED ("PARENT_TYPE'SIZE SHOULD BE " &
INTEGER'IMAGE(INTEGER'SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(PARENT_TYPE'SIZE));
END IF;
 
IF DERIVED_TYPE'SIZE /= IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DERIVED_TYPE'SIZE SHOULD BE " &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_TYPE'SIZE));
END IF;
 
IF DT'SIZE < IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DT'SIZE SHOULD NOT BE LESS THAN" &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DT'SIZE));
END IF;
 
IF PRIVATE_PARENT'SIZE < IDENT_INT (INTEGER'SIZE) THEN
FAILED ("PRIVATE_PARENT'SIZE SHOULD NOT BE LESS THAN" &
INTEGER'IMAGE(INTEGER'SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(PRIVATE_PARENT'SIZE));
END IF;
 
IF DERIVED_PRIVATE_TYPE'SIZE /= IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DERIVED_PRIVATE_TYPE'SIZE SHOULD BE " &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_PRIVATE_TYPE'SIZE));
END IF;
 
IF DPT'SIZE < IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DPT'SIZE SHOULD NOT BE LESS THAN" &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DPT'SIZE));
END IF;
 
IF LIM_PRIV_PARENT'SIZE /= IDENT_INT (INTEGER'SIZE) THEN
FAILED ("LIM_PRIV_PARENT'SIZE SHOULD BE" &
INTEGER'IMAGE(INTEGER'SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(LIM_PRIV_PARENT'SIZE));
END IF;
 
IF DERIVED_LIM_PRIV_TYPE'SIZE /= IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DERIVED_LIM_PRIV_TYPE'SIZE SHOULD BE " &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DERIVED_LIM_PRIV_TYPE'SIZE));
END IF;
 
IF DLPT'SIZE < IDENT_INT (SPECIFIED_SIZE) THEN
FAILED ("DLPT'SIZE SHOULD NOT BE LESS THAN" &
INTEGER'IMAGE(SPECIFIED_SIZE) &
". ACTUAL SIZE IS" &
INTEGER'IMAGE(DLPT'SIZE));
END IF;
 
RESULT;
 
END CD1C04A;
/cd5014o.ada
0,0 → 1,85
-- CD5014O.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A PRIVATE
-- TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE
-- SPECIFICATION.
 
 
-- HISTORY:
-- CDJ 07/24/87 CREATED ORIGINAL TEST.
-- BCB 10/01/87 CHANGED TEST TO STANDARD FORMAT.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
-- MCH 04/03/90 ADDED INSTANTIATION.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014O IS
 
BEGIN
 
TEST ("CD5014O", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE PRIVATE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF A PRIVATE " &
"TYPE, WHERE THE VARIABLE IS DECLARED IN THE " &
"VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
PACKAGE PKG IS
TYPE PRIVATE_TYPE IS PRIVATE;
PRIVATE
TYPE PRIVATE_TYPE IS RANGE 1 .. 20;
PRIVATE_OBJ1 : PRIVATE_TYPE := 5;
FOR PRIVATE_OBJ1 USE AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF EQUAL(3,3) THEN
PRIVATE_OBJ1 := 9;
END IF;
 
IF PRIVATE_OBJ1 /= 9 THEN
FAILED ("INCORRECT VALUE FOR PRIVATE VARIABLE");
END IF;
 
IF PRIVATE_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR PRIVATE VARIABLE");
END IF;
END PKG;
 
PACKAGE INSTANTIATE IS NEW PKG;
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014O;
/cd2d13a.ada
0,0 → 1,66
-- CD2D13A.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 A SMALL CLAUSE CAN BE GIVEN IN THE VISIBLE
-- OR PRIVATE PART OF A PACKAGE FOR A FIXED POINT TYPE DECLARED
-- IN THE VISIBLE PART.
 
-- HISTORY:
-- BCB 09/01/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; WITH TEXT_IO;
WITH REPORT; USE REPORT;
PROCEDURE CD2D13A IS
 
SPECIFIED_SMALL : CONSTANT := 2.0 ** (-4);
 
PACKAGE P IS
TYPE FIXED_IN_P IS DELTA 1.0 RANGE -4.0 .. 4.0;
FOR FIXED_IN_P'SMALL USE SPECIFIED_SMALL;
TYPE ALT_FIXED_IN_P IS DELTA 1.0 RANGE -4.0 .. 4.0;
PRIVATE
FOR ALT_FIXED_IN_P'SMALL USE SPECIFIED_SMALL;
END P;
 
USE P;
 
BEGIN
 
TEST("CD2D13A", "A SMALL CLAUSE CAN BE GIVEN IN THE VISIBLE " &
"OR PRIVATE PART OF A PACKAGE FOR A FIXED " &
"POINT TYPE DECLARED IN THE VISIBLE PART");
 
IF FIXED_IN_P'SMALL /= SPECIFIED_SMALL THEN
FAILED ("INCORRECT VALUE FOR FIXED_IN_P'SMALL");
END IF;
 
IF ALT_FIXED_IN_P'SMALL /= SPECIFIED_SMALL THEN
FAILED ("INCORRECT VALUE FOR ALT_FIXED_IN_P'SMALL");
END IF;
 
RESULT;
 
END CD2D13A;
/cd2b11e.ada
0,0 → 1,76
-- CD2B11E.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 EXPRESSION IN A COLLECTION SIZE CLAUSE
-- FOR AN ACCESS TYPE IN A GENERIC UNIT NEED NOT BE STATIC.
 
-- HISTORY:
-- BCB 09/23/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH REPORT; USE REPORT;
 
PROCEDURE CD2B11E IS
 
B : BOOLEAN;
 
BEGIN
 
TEST ("CD2B11E", "CHECK THAT THE EXPRESSION IN A COLLECTION " &
"SIZE CLAUSE FOR AN ACCESS TYPE IN A " &
"GENERIC UNIT NEED NOT BE STATIC");
 
DECLARE
 
GENERIC
FUNCTION FUNC RETURN BOOLEAN;
 
FUNCTION FUNC RETURN BOOLEAN IS
 
TYPE TEST_TYPE IS ACCESS INTEGER;
FOR TEST_TYPE'STORAGE_SIZE USE 256;
 
TYPE ACC_TYPE IS ACCESS INTEGER;
FOR ACC_TYPE'STORAGE_SIZE
USE IDENT_INT (256);
 
BEGIN -- FUNC.
 
IF ACC_TYPE'STORAGE_SIZE < IDENT_INT (256) THEN
FAILED ("INCORRECT VALUE FOR STORAGE_SIZE");
END IF;
 
RETURN TRUE;
 
END FUNC;
 
FUNCTION NEWFUNC IS NEW FUNC;
 
BEGIN
B := NEWFUNC;
END;
 
RESULT;
END CD2B11E;
/cd1c04e.ada
0,0 → 1,124
-- CD1C04E.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 A RECORD REPRESENTATION CLAUSE CAN BE GIVEN FOR
-- A DERIVED RECORD TYPE EVEN IF THE REPRESENTATION IS INHERITED
-- FROM THE PARENT, AND THAT THE REPRESENTATION CLAUSE FOR THE
-- DERIVED TYPE OVERRIDES THAT OF THE PARENT TYPE.
 
-- HISTORY:
-- PWB 03/25/89 DELETED CHECKS OF COMPONENT'SIZE; CHANGED
-- EXTENSION FROM '.ADA' TO '.DEP'.
-- JET 09/21/87 CREATED ORIGINAL TEST.
 
WITH REPORT; USE REPORT;
WITH SYSTEM; USE SYSTEM;
 
PROCEDURE CD1C04E IS
 
UNITS_PER_INTEGER : CONSTANT :=
(INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) /
SYSTEM.STORAGE_UNIT;
 
TYPE E_TYPE IS (RED, BLUE, GREEN);
 
TYPE PARENT_TYPE IS
RECORD
I : INTEGER RANGE 0 .. 127 := 127;
C : CHARACTER := 'S';
B : BOOLEAN := FALSE;
E : E_TYPE := BLUE;
END RECORD;
 
FOR PARENT_TYPE USE
RECORD
C AT 0 * UNITS_PER_INTEGER RANGE 0 .. CHARACTER'SIZE - 1;
B AT 1 * UNITS_PER_INTEGER RANGE 0 .. BOOLEAN'SIZE - 1;
I AT 2 * UNITS_PER_INTEGER RANGE 0 .. INTEGER'SIZE/2 - 1;
E AT 3 * UNITS_PER_INTEGER RANGE 0 .. CHARACTER'SIZE - 1;
END RECORD;
 
TYPE DERIVED_TYPE IS NEW PARENT_TYPE;
 
FOR DERIVED_TYPE USE
RECORD
C AT 1 * UNITS_PER_INTEGER RANGE 1 .. CHARACTER'SIZE + 1;
B AT 3 * UNITS_PER_INTEGER RANGE 1 .. BOOLEAN'SIZE + 1;
I AT 5 * UNITS_PER_INTEGER RANGE 1 .. INTEGER'SIZE/2 + 1;
E AT 7 * UNITS_PER_INTEGER RANGE 1 .. CHARACTER'SIZE + 1;
END RECORD;
 
P_REC : PARENT_TYPE;
REC : DERIVED_TYPE;
 
BEGIN
 
TEST("CD1C04E", "CHECK THAT A RECORD REPRESENTATION CLAUSE " &
"CAN BE GIVEN FOR A DERIVED RECORD TYPE EVEN " &
"IF THE REPRESENTATION IS INHERITED FROM " &
"THE PARENT, AND THAT THE REPRESENTATION " &
"CLAUSE FOR THE DERIVED TYPE OVERRIDES THAT " &
"OF THE PARENT TYPE");
 
IF DERIVED_TYPE'SIZE = IDENT_INT (PARENT_TYPE'SIZE) THEN
FAILED ("DERIVED_TYPE'SIZE WAS INHERITED FROM " &
"PARENT_TYPE");
END IF;
 
REC := (12, 'T', TRUE, RED);
 
IF (REC.I /= 12) OR (REC.C /= 'T') OR
(NOT REC.B) OR (REC.E /= RED) THEN
FAILED ("THE VALUES OF DERIVED_TYPE COMPONENTS WERE " &
"INCORRECT");
END IF;
 
IF REC.I'POSITION = P_REC.I'POSITION OR
REC.C'POSITION = P_REC.C'POSITION OR
REC.B'POSITION = P_REC.B'POSITION OR
REC.E'POSITION = P_REC.E'POSITION THEN
FAILED ("THE POSITIONS OF DERIVED_TYPE COMPONENTS WERE " &
"INHERITED FROM PARENT_TYPE");
END IF;
 
IF REC.I'FIRST_BIT = P_REC.I'FIRST_BIT OR
REC.C'FIRST_BIT = P_REC.C'FIRST_BIT OR
REC.B'FIRST_BIT = P_REC.B'FIRST_BIT OR
REC.E'FIRST_BIT = P_REC.E'FIRST_BIT THEN
FAILED ("THE FIRST_BITS OF DERIVED_TYPE COMPONENTS WERE " &
"INHERITED FROM PARENT_TYPE");
END IF;
 
IF REC.I'LAST_BIT = P_REC.I'LAST_BIT OR
REC.C'LAST_BIT = P_REC.C'LAST_BIT OR
REC.B'LAST_BIT = P_REC.B'LAST_BIT OR
REC.E'LAST_BIT = P_REC.E'LAST_BIT THEN
FAILED ("THE LAST_BITS OF DERIVED_TYPE COMPONENTS WERE " &
"INHERITED FROM PARENT_TYPE");
END IF;
 
RESULT;
 
END CD1C04E;
/cd2a22j.ada
0,0 → 1,125
-- CD2A22J.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN
-- ENUMERATION TYPE, THEN SUCH A TYPE OF THE SMALLEST APPROPRIATE
-- UNSIGNED SIZE CAN BE PASSED AS AN ACTUAL PARAMETER TO A GENERIC
-- PROCEDURE.
 
-- HISTORY:
-- JET 08/13/87 CREATED ORIGINAL TEST.
-- DHH 04/17/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED
-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON
-- REPRESENTATION CLAUSE.
-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING.
 
WITH REPORT; USE REPORT;
WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'.
PROCEDURE CD2A22J IS
 
TYPE BASIC_ENUM IS (ZERO, ONE, TWO);
BASIC_SIZE : CONSTANT := 2;
 
FOR BASIC_ENUM'SIZE USE BASIC_SIZE;
 
BEGIN
TEST ("CD2A22J", "CHECK THAT WHEN A SIZE SPECIFICATION IS GIVEN " &
"FOR AN ENUMERATION TYPE, THEN SUCH A TYPE OF " &
"THE SMALLEST APPROPRIATE UNSIGNED SIZE CAN BE " &
"PASSED AS AN ACTUAL PARAMETER TO A GENERIC " &
"PROCEDURE");
 
DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE.
 
GENERIC
TYPE GPARM IS (<>);
PROCEDURE GENPROC (C0, C1, C2: GPARM);
 
PROCEDURE GENPROC (C0, C1, C2: GPARM) IS
 
SUBTYPE CHECK_TYPE IS GPARM;
 
FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS
BEGIN
IF EQUAL (3, 3) THEN
RETURN CH;
ELSE
RETURN C1;
END IF;
END IDENT;
 
PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE);
 
BEGIN -- GENPROC.
CHECK_1 (C0, BASIC_SIZE, "CHECK_TYPE");
 
IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE");
END IF;
 
IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN
FAILED ("INCORRECT VALUE FOR C0'SIZE");
END IF;
 
IF NOT ((C0 < IDENT (C1)) AND
(IDENT (C2) > IDENT (C1)) AND
(C1 <= IDENT (C1)) AND (IDENT (C2) = C2)) THEN
FAILED ("INCORRECT RESULTS FOR RELATIONAL " &
"OPERATORS");
END IF;
 
IF CHECK_TYPE'FIRST /= IDENT (C0) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST");
END IF;
 
IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR
CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR
CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS");
END IF;
 
IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR
CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC");
END IF;
 
IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR
CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR
CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN
FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE");
END IF;
 
END GENPROC;
 
PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM);
 
BEGIN
 
NEWPROC (ZERO, ONE, TWO);
 
END;
 
RESULT;
END CD2A22J;
/cd5014y.ada
0,0 → 1,74
-- CD5014Y.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART
-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FORMAL
-- PRIVATE TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART
-- OF THE SPECIFICATION.
 
-- HISTORY:
-- BCB 10/08/87 CREATED ORIGINAL TEST.
-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'.
 
WITH SYSTEM; USE SYSTEM;
WITH SPPRT13; USE SPPRT13;
WITH REPORT; USE REPORT;
 
PROCEDURE CD5014Y IS
 
BEGIN
 
TEST ("CD5014Y", " AN ADDRESS CLAUSE CAN BE GIVEN " &
"IN THE VISIBLE PART OF A GENERIC PACKAGE " &
"SPECIFICATION FOR A VARIABLE OF A FORMAL " &
"PRIVATE TYPE, WHERE THE VARIABLE IS DECLARED " &
"IN THE VISIBLE PART OF THE SPECIFICATION");
 
DECLARE
 
GENERIC
TYPE FORM_PRIVATE_TYPE IS PRIVATE;
PACKAGE PKG IS
FORM_PRIVATE_OBJ1 : FORM_PRIVATE_TYPE;
FOR FORM_PRIVATE_OBJ1 USE
AT VARIABLE_ADDRESS;
END PKG;
 
PACKAGE BODY PKG IS
BEGIN
IF FORM_PRIVATE_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN
FAILED ("INCORRECT ADDRESS FOR FORMAL PRIVATE " &
"VARIABLE");
END IF;
END PKG;
 
PACKAGE PACK IS NEW PKG(FORM_PRIVATE_TYPE => INTEGER);
 
BEGIN
NULL;
END;
 
RESULT;
END CD5014Y;
/cd7101g.tst
0,0 → 1,70
-- CD7101G.TST
 
-- 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 FOR MIN_INT AND MAX_INT IN PACKAGE SYSTEM AND
-- A PREDEFINED INTEGER TYPE I OTHER THAN INTEGER, SHORT_INTEGER,
-- AND LONG_INTEGER, I'FIRST >= MIN_INT AND I'LAST <= MAX_INT.
 
-- APPLICABILITY CRITERIA:
-- THIS TEST IS APPLICABLE ONLY TO IMPLEMENTATIONS THAT HAVE
-- A PREDEFINED INTEGER TYPE OTHER THAN INTEGER, SHORT_INTEGER,
-- AND LONG_INTEGER.
 
-- IF NO SUCH TYPE EXISTS, THEN THE DECLARATION OF TEST_VAR
-- MUST BE REJECTED.
 
-- HISTORY:
-- JET 09/10/87 CREATED ORIGINAL TEST.
 
-- $NAME IS THE NAME OF A PREDEFINED INTEGER TYPE OTHER THAN
-- INTEGER, SHORT_INTEGER, AND LONG_INTEGER, IF ANY SUCH TYPE
-- EXISTS.
 
WITH SYSTEM;
WITH REPORT; USE REPORT;
 
PROCEDURE CD7101G IS
 
TEST_VAR : $NAME := 0; -- N/A => ERROR.
 
BEGIN
 
TEST ("CD7101G", "CHECK THAT FOR MIN_INT AND MAX_INT IN " &
"PACKAGE SYSTEM AND A PREDEFINED INTEGER " &
"TYPE I OTHER THAN INTEGER, SHORT_INTEGER, " &
"AND LONG_INTEGER, I'FIRST >= MIN_INT AND " &
"I'LAST <= MAX_INT");
 
IF $NAME'POS ($NAME'FIRST) < SYSTEM.MIN_INT THEN
FAILED ("INCORRECT VALUE FOR SYSTEM.MIN_INT");
END IF;
 
IF $NAME'POS ($NAME'LAST) > SYSTEM.MAX_INT THEN
FAILED ("INCORRECT VALUE FOR SYSTEM.MAX_INT");
END IF;
 
RESULT;
 
END CD7101G;
/cd300051.c
0,0 → 1,57
/*
-- CD30051.C
--
-- 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.
--*
--
-- FUNCTION NAME: _cd3005_1
--
-- FUNCTION DESCRIPTION:
-- This C function returns the sum of its parameter and 1 through
-- the function name. The parameter is unchanged.
--
-- INPUTS:
-- This function requires that one parameter, of type int, be passed
-- to it.
--
-- PROCESSING:
-- The function will calculate the sum of its parameter and 1
-- and return this value as the function result through the function
-- name.
--
-- OUTPUTS:
-- The sum of the parameter and 1 is returned through function name.
--
-- CHANGE HISTORY:
-- 12 Oct 95 SAIC Initial prerelease version.
-- 14 Feb 97 PWB.CTA Created this file from code appearing in
-- CD30005.A (as comments).
--!
*/
int _cd30005_1( Value )
{
/* int Value */
 
return Value + 1;
}
cd300051.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: cd5011a.ada =================================================================== --- cd5011a.ada (nonexistent) +++ cd5011a.ada (revision 338) @@ -0,0 +1,87 @@ +-- CD5011A.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF AN +-- ENUMERATION TYPE IN THE DECLARATIVE PART OF A SUBPROGRAM. + +-- HISTORY: +-- PWB 08/06/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; +PROCEDURE CD5011A IS + + TYPE ENUM IS (RED, BLUE, 'R', 'B'); + + PROCEDURE MIX IS + HUE : ENUM := RED; + FOR HUE USE + AT SPPRT13.VARIABLE_ADDRESS; + BEGIN + IF EQUAL (3, 3) THEN + HUE := BLUE; + END IF; + IF HUE /= BLUE THEN + FAILED ("WRONG VALUE FOR VARIABLE IN PROCEDURE"); + END IF; + IF HUE'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN PROCEDURE"); + END IF; + END MIX; + + FUNCTION FIX RETURN BOOLEAN IS + LETTER : ENUM := 'R'; + FOR LETTER USE AT + SPPRT13.VARIABLE_ADDRESS; + BEGIN + IF EQUAL (3, 3) THEN + LETTER := 'B'; + END IF; + IF LETTER /= ENUM'LAST THEN + FAILED ("WRONG VALUE FOR VARIABLE IN FUNCTION"); + END IF; + IF LETTER'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN FUNCTION"); + END IF; + RETURN EQUAL(3,3); + END FIX; + +BEGIN + + TEST ("CD5011A", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN ENUMERATION " & + "TYPE IN THE DECLARATIVE PART OF A " & + "SUBPROGRAM."); + + IF NOT FIX THEN + FAILED ("FUNCTION FIX YIELDS WRONG VALUE"); + END IF; + + MIX; + RESULT; + +END CD5011A; Index: cd5003b.ada =================================================================== --- cd5003b.ada (nonexistent) +++ cd5003b.ada (revision 338) @@ -0,0 +1,77 @@ +-- CD5003B.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN FOR +-- A PROCEDURE BODY CONTAINING AN ADDRESS CLAUSE AS LONG AS A 'WITH' +-- CLAUSE IS GIVEN FOR THE PROCEDURE SPECIFICATION. + +-- HISTORY: +-- VCL 09/04/87 CREATED ORIGINAL TEST. +-- RJW 10/13/88 INITIALIZED THE VARIABLE "CHECK_VAR". +-- BCB 04/18/89 CHANGED EXTENSION TO '.ADA'. REMOVED APPLICABILITY +-- CRITERIA AND N/A ERROR MESSAGES. + +WITH SYSTEM; +PROCEDURE CD5003B; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +PROCEDURE CD5003B IS + TYPE ENUM IS (A0, A1, A2, A3, A4, A5); + + TEST_VAR : ENUM := A0; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + FUNCTION IDENT_ENUM (P : ENUM) RETURN ENUM IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN A0; + END IF; + END IDENT_ENUM; + +BEGIN + TEST ("CD5003B", "CHECK THAT A 'WITH' CLAUSE NAMING 'SYSTEM' " & + "NEED NOT BE GIVEN FOR A PROCEDURE BODY " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE PROCEDURE " & + "SPECIFICATION"); + + TEST_VAR := IDENT_ENUM (A3); + + IF TEST_VAR /= A3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + + RESULT; +END CD5003B; Index: cd5011c.ada =================================================================== --- cd5011c.ada (nonexistent) +++ cd5011c.ada (revision 338) @@ -0,0 +1,69 @@ +-- CD5011C.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF +-- AN INTEGER TYPE IN THE DECLARATIVE PART OF A PACKAGE BODY. + +-- HISTORY: +-- JET 09/11/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011C IS + + PACKAGE CD5011C_PACKAGE IS + END CD5011C_PACKAGE; + + PACKAGE BODY CD5011C_PACKAGE IS + + INT : INTEGER := 0; + FOR INT USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + TEST ("CD5011C", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN INTEGER " & + "TYPE IN THE DECLARATIVE PART OF A " & + "PACKAGE BODY"); + + IF EQUAL (3, 3) THEN + INT := 5; + END IF; + IF INT /= IDENT_INT (5) THEN + FAILED ("WRONG VALUE FOR VARIABLE IN PACKAGE"); + END IF; + IF INT'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN PACKAGE"); + END IF; + END; + +BEGIN + + RESULT; + +END CD5011C; Index: cd4051a.ada =================================================================== --- cd4051a.ada (nonexistent) +++ cd4051a.ada (revision 338) @@ -0,0 +1,92 @@ +-- CD4051A.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 A RECORD REPRESENTATION CLAUSE CAN BE GIVEN FOR +-- DERIVED TYPES WHOSE PARENT TYPES ARE RECORD TYPES WITHOUT +-- DISCRIMINANTS. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- RJW 08/25/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD4051A IS + + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / + SYSTEM.STORAGE_UNIT; + + TYPE BASIC_CLAUSE IS RECORD + INT_COMP : INTEGER; + CHAR_COMP : CHARACTER; + END RECORD; + + TYPE CHECK_CLAUSE IS NEW BASIC_CLAUSE; + + FOR CHECK_CLAUSE USE + RECORD + INT_COMP AT 0 + RANGE 0..INTEGER'SIZE - 1; + CHAR_COMP AT 1*UNITS_PER_INTEGER + RANGE 0..CHARACTER'SIZE - 1; + END RECORD; + + CHECK_RECORD : CHECK_CLAUSE := (1, 'A'); + +BEGIN + TEST ("CD4051A", "CHECK THAT A RECORD REPRESENTATION " & + "CLAUSE CAN BE GIVEN FOR A DERIVED TYPE " & + "WHOSE PARENT TYPE IS IS A RECORD TYPE " & + "WITHOUT DISCRIMINANTS"); + + IF CHECK_RECORD.INT_COMP'FIRST_BIT /= 0 THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'LAST_BIT /= INTEGER'SIZE - 1 THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'POSITION /= 0 THEN + FAILED ("INCORRECT VALUE FOR POSITION OF INT_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'FIRST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'LAST_BIT /= + IDENT_INT (CHARACTER'SIZE - 1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'POSITION /= + IDENT_INT (UNITS_PER_INTEGER) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CHAR_COMP"); + END IF; + + RESULT; +END CD4051A; Index: cd5003d.ada =================================================================== --- cd5003d.ada (nonexistent) +++ cd5003d.ada (revision 338) @@ -0,0 +1,88 @@ +-- CD5003D.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A PROCEDURE BODY SUBUNIT CONTAINING AN ADDRESS CLAUSE AS +-- LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT CONTAINING +-- THE PROCEDURE SPECIFICATION. + +-- HISTORY: +-- VCL 09/08/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +PACKAGE CD5003D_PACK2 IS + PROCEDURE CD5003D_PROC2; +END CD5003D_PACK2; + +WITH SYSTEM; +PACKAGE BODY CD5003D_PACK2 IS + PROCEDURE CD5003D_PROC2 IS SEPARATE; +END CD5003D_PACK2; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +SEPARATE (CD5003D_PACK2) +PROCEDURE CD5003D_PROC2 IS + TYPE FIXD IS DELTA 0.1 RANGE -10.0 .. 10.0; + + TEST_VAR : FIXD := 0.0; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + FUNCTION IDENT_FIXD (P : FIXD) RETURN FIXD IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN 0.0; + END IF; + END IDENT_FIXD; +BEGIN + TEST ("CD5003D", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE " & + "GIVEN FOR A PROCEDURE BODY SUBUNIT " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE UNIT " & + "CONTAINING THE PROCEDURE SPECIFICATION"); + + TEST_VAR := IDENT_FIXD (3.3); + + IF TEST_VAR /= 3.3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + + RESULT; +END CD5003D_PROC2; + +WITH CD5003D_PACK2; USE CD5003D_PACK2; +PROCEDURE CD5003D IS +BEGIN + CD5003D_PROC2; +END CD5003D; Index: cd5011e.ada =================================================================== --- cd5011e.ada (nonexistent) +++ cd5011e.ada (revision 338) @@ -0,0 +1,70 @@ +-- CD5011E.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A +-- FLOATING POINT TYPE IN THE DECLARATIVE PART OF A BLOCK +-- STATEMENT. + +-- HISTORY: +-- JET 09/11/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011E IS + +BEGIN + + TEST ("CD5011E", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF A FLOATING POINT " & + "TYPE IN THE DECLARATIVE PART OF A " & + "BLOCK STATEMENT"); + + DECLARE + + FP : FLOAT := 3.0; + FOR FP USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + IF EQUAL (3, 3) THEN + FP := 2.0; + END IF; + + IF FP /= 2.0 THEN + FAILED ("WRONG VALUE FOR VARIABLE IN BLOCK"); + END IF; + + IF FP'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN BLOCK"); + END IF; + + END; + + RESULT; + +END CD5011E; Index: cd4051c.ada =================================================================== --- cd4051c.ada (nonexistent) +++ cd4051c.ada (revision 338) @@ -0,0 +1,108 @@ +-- CD4051C.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 A RECORD REPRESENTATION CLAUSE CAN BE GIVEN FOR +-- A DERIVED TYPE WHOSE PARENT TYPE IS A RECORD WITH A +-- DISCRIMINANT. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- RJW 08/25/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD4051C IS + + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / + SYSTEM.STORAGE_UNIT; + + TYPE BASIC_CLAUSE (DISC : BOOLEAN) IS RECORD + INT_COMP : INTEGER; + CHAR_COMP : CHARACTER; + END RECORD; + + TYPE CHECK_CLAUSE IS NEW BASIC_CLAUSE; + + FOR CHECK_CLAUSE USE + RECORD + DISC AT 0 + RANGE 0..BOOLEAN'SIZE - 1; + INT_COMP AT 1*UNITS_PER_INTEGER + RANGE 0..INTEGER'SIZE - 1; + CHAR_COMP AT 2*UNITS_PER_INTEGER + RANGE 0..CHARACTER'SIZE - 1; + END RECORD; + + CHECK_RECORD : CHECK_CLAUSE (TRUE) := (TRUE, 1, 'A'); + +BEGIN + TEST ("CD4051C", "CHECK THAT A RECORD REPRESENTATION " & + "CLAUSE CAN BE GIVEN FOR A DERIVED TYPE " & + "WHOSE PARENT TYPE IS IS A RECORD TYPE " & + "WITH DISCRIMINANTS"); + + IF CHECK_RECORD.DISC'FIRST_BIT /= 0 THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF DISC"); + END IF; + + IF CHECK_RECORD.DISC'LAST_BIT /= BOOLEAN'SIZE - 1 THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF DISC"); + END IF; + + IF CHECK_RECORD.DISC'POSITION /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF DISC"); + END IF; + + IF CHECK_RECORD.INT_COMP'FIRST_BIT /= 0 THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'LAST_BIT /= + IDENT_INT (INTEGER'SIZE - 1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'POSITION /= + IDENT_INT (UNITS_PER_INTEGER) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF INT_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'FIRST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'LAST_BIT /= + IDENT_INT (CHARACTER'SIZE - 1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'POSITION /= + IDENT_INT (2 * UNITS_PER_INTEGER) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CHAR_COMP"); + END IF; + + RESULT; +END CD4051C; Index: cd5003f.ada =================================================================== --- cd5003f.ada (nonexistent) +++ cd5003f.ada (revision 338) @@ -0,0 +1,91 @@ +-- CD5003F.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A GENERIC PACKAGE BODY CONTAINING AN ADDRESS CLAUSE +-- AS LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE GENERIC PACKAGE +-- SPECIFICATION. + +-- HISTORY: +-- VCL 09/09/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- PWN 11/30/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL. + +WITH SYSTEM; +GENERIC +PACKAGE CD5003F_PACK2 IS + PROCEDURE REQUIRE_BODY; +END CD5003F_PACK2; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +PACKAGE BODY CD5003F_PACK2 IS + TYPE ATYPE IS ARRAY (1 .. 10) OF INTEGER; + + TEST_VAR : ATYPE := (OTHERS => 0); + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + FUNCTION IDENT (P : ATYPE) RETURN ATYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN (OTHERS => 0); + END IF; + END IDENT; + + PROCEDURE REQUIRE_BODY IS + BEGIN + NULL; + END; +BEGIN + TEST ("CD5003F", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT " & + "BE GIVEN FOR A GENERIC PACKAGE BODY " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE GENERIC " & + "PACKAGE SPECIFICATION"); + + TEST_VAR := IDENT (ATYPE'(OTHERS => 3)); + + IF TEST_VAR /= ATYPE'(OTHERS => 3) THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; +END CD5003F_PACK2; + +WITH CD5003F_PACK2; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (REPORT); +PROCEDURE CD5003F IS + PACKAGE CD5003F_PACK3 IS NEW CD5003F_PACK2; +BEGIN + RESULT; +END CD5003F; Index: cd5011g.ada =================================================================== --- cd5011g.ada (nonexistent) +++ cd5011g.ada (revision 338) @@ -0,0 +1,72 @@ +-- CD5011G.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A +-- FIXED POINT TYPE IN THE DECLARATIVE PART OF A SUBPROGRAM. + +-- HISTORY: +-- JET 09/11/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011G IS + + TYPE FIX_TYPE IS DELTA 0.125 RANGE 0.0 .. 10.0; + + PROCEDURE CD5011G_PROC IS + + FP : FIX_TYPE := 2.0; + FOR FP USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + IF EQUAL (3, 3) THEN + FP := 3.0; + END IF; + + IF FP /= 3.0 THEN + FAILED ("INCORRECT VALUE FOR VARIABLE IN PROCEDURE"); + END IF; + + IF FP'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR VARIABLE IN PROCEDURE"); + END IF; + + END CD5011G_PROC; + +BEGIN + TEST ("CD5011G", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF A FIXED POINT " & + "TYPE IN THE DECLARATIVE PART OF A " & + "SUBPROGRAM"); + + CD5011G_PROC; + + RESULT; + +END CD5011G; Index: cd3015f.ada =================================================================== --- cd3015f.ada (nonexistent) +++ cd3015f.ada (revision 338) @@ -0,0 +1,93 @@ +-- CD3015F.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 AN ENUMERATION REPRESENTATION CLAUSE FOR A DERIVED +-- TYPE CAN BE GIVEN IN THE VISIBLE OR PRIVATE PART OF A GENERIC +-- PACKAGE FOR A DERIVED TYPE DECLARED IN THE VISIBLE PART, WHERE +-- NO ENUMERATION CLAUSE HAS BEEN GIVEN FOR THE PARENT. + +-- HISTORY +-- DHH 10/01/87 CREATED ORIGINAL TEST +-- DHH 03/27/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA',CHANGED +-- FROM 'A' TEST TO 'C' TEST AND ADDED CHECK FOR +-- REPRESENTATION CLAUSE. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3015F IS + +BEGIN + + TEST ("CD3015F", "CHECK THAT AN " & + "ENUMERATION REPRESENTATION CLAUSE FOR A " & + "DERIVED TYPE CAN BE GIVEN IN THE VISIBLE OR " & + "PRIVATE PART OF A GENERIC PACKAGE FOR A " & + "DERIVED TYPE DECLARED IN THE VISIBLE PART, " & + "WHERE NO ENUMERATION CLAUSE HAS BEEN GIVEN " & + "FOR THE PARENT"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW,'R','B','Y'); + + TYPE HUE IS NEW MAIN; + TYPE NEWHUE IS NEW MAIN; + + FOR HUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + + PRIVATE + FOR NEWHUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + + TYPE INT_HUE IS RANGE 8 .. 13; + FOR INT_HUE'SIZE USE HUE'SIZE; + + TYPE INT_NEW IS RANGE 8 .. 13; + FOR INT_NEW'SIZE USE NEWHUE'SIZE; + + PROCEDURE CHECK_HUE IS NEW ENUM_CHECK(HUE, INT_HUE); + PROCEDURE CHECK_NEW IS NEW ENUM_CHECK(NEWHUE, INT_NEW); + + END GENPACK; + + PACKAGE BODY GENPACK IS + + BEGIN + CHECK_HUE (RED, 8, "HUE"); + CHECK_HUE ('R', 11, "NEWHUE"); + END GENPACK; + + PACKAGE P IS NEW GENPACK; + + BEGIN + NULL; + END; + + RESULT; +END CD3015F; Index: cdb0a02.a =================================================================== --- cdb0a02.a (nonexistent) +++ cdb0a02.a (revision 338) @@ -0,0 +1,329 @@ +-- CDB0A02.A +-- +-- 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 several access types can share the same pool. +-- +-- Check that any exception propagated by Allocate is +-- propagated by the allocator. +-- +-- Check that for an access type S, S'Max_Size_In_Storage_Elements +-- denotes the maximum values for Size_In_Storage_Elements that will +-- be requested via Allocate. +-- +-- TEST DESCRIPTION: +-- After checking correct operation of the tree packages, the limits of +-- the storage pools (first the shared user defined storage pool, then +-- the system storage pool) are intentionally exceeded. The test checks +-- that the correct exception is raised. +-- +-- +-- TEST FILES: +-- The following files comprise this test: +-- +-- FDB0A00.A (foundation code) +-- CDB0A02.A +-- +-- +-- CHANGE HISTORY: +-- 10 AUG 95 SAIC Initial version +-- 07 MAY 96 SAIC Disambiguated for 2.1 +-- 13 FEB 97 PWB.CTA Reduced minimum allowable +-- Max_Size_In_Storage_Units, for implementations +-- with larger storage units +-- 25 JAN 01 RLB Removed dubious checks on Max_Size_In_Storage_Units; +-- tightened important one. + +--! + +---------------------------------------------------------- FDB0A00.Pool2 + +package FDB0A00.Pool2 is + Pond : Stack_Heap( 5_000 ); +end FDB0A00.Pool2; + +---------------------------------------------------------------- CDB0A02_2 + +with FDB0A00.Pool2; +package CDB0A02_2 is + + type Small_Cell; + type Small_Tree is access Small_Cell; + + for Small_Tree'Storage_Pool use FDB0A00.Pool2.Pond; -- first usage + + type Small_Cell is record + Data: Character; + Left,Right : Small_Tree; + end record; + + procedure Insert( Item: Character; On_Tree : in out Small_Tree ); + + procedure Traverse( The_Tree : Small_Tree ); + + procedure Defoliate( The_Tree : in out Small_Tree ); + + procedure TC_Exceed_Pool; + + Pool_Max_Elements : constant := 6000; + -- to guarantee overflow in TC_Exceed_Pool + +end CDB0A02_2; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +with TCTouch; +with Report; +with Unchecked_Deallocation; +package body CDB0A02_2 is + procedure Deallocate is new Unchecked_Deallocation(Small_Cell,Small_Tree); + + -- Sort: zeros on the left, ones on the right... + procedure Insert( Item: Character; On_Tree : in out Small_Tree ) is + begin + if On_Tree = null then + On_Tree := new Small_Cell'(Item,null,null); + elsif Item > On_Tree.Data then + Insert(Item,On_Tree.Right); + else + Insert(Item,On_Tree.Left); + end if; + end Insert; + + procedure Traverse( The_Tree : Small_Tree ) is + begin + if The_Tree = null then + null; -- how very symmetrical + else + Traverse(The_Tree.Left); + TCTouch.Touch(The_Tree.Data); + Traverse(The_Tree.Right); + end if; + end Traverse; + + procedure Defoliate( The_Tree : in out Small_Tree ) is + begin + + if The_Tree.Left /= null then + Defoliate(The_Tree.Left); + end if; + + if The_Tree.Right /= null then + Defoliate(The_Tree.Right); + end if; + + Deallocate(The_Tree); + + end Defoliate; + + procedure TC_Exceed_Pool is + Wild_Branch : Small_Tree; + begin + for Ever in 1..Pool_Max_Elements loop + Wild_Branch := new Small_Cell'('a', Wild_Branch, Wild_Branch); + TCTouch.Validate("A","Allocating element for overflow"); + end loop; + Report.Failed(" Pool_Overflow not raised on exceeding user pool size"); + exception + when FDB0A00.Pool_Overflow => null; -- anticipated case + when others => + Report.Failed("wrong exception raised in user Exceed_Pool"); + end TC_Exceed_Pool; + +end CDB0A02_2; + +---------------------------------------------------------------- CDB0A02_3 + +-- This package is essentially identical to CDB0A02_2, except that the size +-- of a cell is significantly larger. This is used to check that different +-- access types may share a single pool + +with FDB0A00.Pool2; +package CDB0A02_3 is + + type Large_Cell; + type Large_Tree is access Large_Cell; + + for Large_Tree'Storage_Pool use FDB0A00.Pool2.Pond; -- second usage + + type Large_Cell is record + Data: Character; + Extra_Data : String(1..2); + Left,Right : Large_Tree; + end record; + + procedure Insert( Item: Character; On_Tree : in out Large_Tree ); + + procedure Traverse( The_Tree : Large_Tree ); + + procedure Defoliate( The_Tree : in out Large_Tree ); + +end CDB0A02_3; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +with TCTouch; +with Unchecked_Deallocation; +package body CDB0A02_3 is + procedure Deallocate is new Unchecked_Deallocation(Large_Cell,Large_Tree); + + -- Sort: zeros on the left, ones on the right... + procedure Insert( Item: Character; On_Tree : in out Large_Tree ) is + begin + if On_Tree = null then + On_Tree := new Large_Cell'(Item,(Item,Item),null,null); + elsif Item > On_Tree.Data then + Insert(Item,On_Tree.Right); + else + Insert(Item,On_Tree.Left); + end if; + end Insert; + + procedure Traverse( The_Tree : Large_Tree ) is + begin + if The_Tree = null then + null; -- how very symmetrical + else + Traverse(The_Tree.Left); + TCTouch.Touch(The_Tree.Data); + Traverse(The_Tree.Right); + end if; + end Traverse; + + procedure Defoliate( The_Tree : in out Large_Tree ) is + begin + + if The_Tree.Left /= null then + Defoliate(The_Tree.Left); + end if; + + if The_Tree.Right /= null then + Defoliate(The_Tree.Right); + end if; + + Deallocate(The_Tree); + + end Defoliate; + +end CDB0A02_3; + +------------------------------------------------------------------ CDB0A02 + +with Report; +with TCTouch; +with System.Storage_Elements; +with CDB0A02_2; +with CDB0A02_3; +with FDB0A00; + +procedure CDB0A02 is + + Banyan : CDB0A02_2.Small_Tree; + Torrey : CDB0A02_3.Large_Tree; + + use type CDB0A02_2.Small_Tree; + use type CDB0A02_3.Large_Tree; + + Countess1 : constant String := "Ada "; + Countess2 : constant String := "Augusta "; + Countess3 : constant String := "Lovelace"; + Cenosstu : constant String := " AALaaacdeeglostuuv"; + Insertion : constant String := "AAAAAAAAAAAAAAAAAAAA" + & "AAAAAAAAAAAAAAAAAAAA"; + Deallocation : constant String := "DDDDDDDDDDDDDDDDDDDD"; + +begin -- Main test procedure. + + Report.Test ("CDB0A02", "Check that several access types can share " & + "the same pool. Check that any exception " & + "propagated by Allocate is propagated by the " & + "allocator. Check that for an access type S, " & + "S'Max_Size_In_Storage_Elements denotes the " & + "maximum values for Size_In_Storage_Elements " & + "that will be requested via Allocate" ); + + -- Check that access types can share the same pool. + + for Count in Countess1'Range loop + CDB0A02_2.Insert( Countess1(Count), Banyan ); + end loop; + + for Count in Countess1'Range loop + CDB0A02_3.Insert( Countess1(Count), Torrey ); + end loop; + + for Count in Countess2'Range loop + CDB0A02_2.Insert( Countess2(Count), Banyan ); + end loop; + + for Count in Countess2'Range loop + CDB0A02_3.Insert( Countess2(Count), Torrey ); + end loop; + + for Count in Countess3'Range loop + CDB0A02_2.Insert( Countess3(Count), Banyan ); + end loop; + + for Count in Countess3'Range loop + CDB0A02_3.Insert( Countess3(Count), Torrey ); + end loop; + + TCTouch.Validate(Insertion, "Allocate calls via CDB0A02_2" ); + + + CDB0A02_2.Traverse(Banyan); + TCTouch.Validate(Cenosstu, "Traversal of Banyan" ); + + CDB0A02_3.Traverse(Torrey); + TCTouch.Validate(Cenosstu, "Traversal of Torrey" ); + + CDB0A02_2.Defoliate(Banyan); + TCTouch.Validate(Deallocation, "Deforestation of Banyan" ); + TCTouch.Assert(Banyan = null, "Banyan Deallocation result not null"); + + CDB0A02_3.Defoliate(Torrey); + TCTouch.Validate(Deallocation, "Deforestation of Torrey" ); + TCTouch.Assert(Torrey = null, "Torrey Deallocation result not null"); + + -- Check that for an access type S, S'Max_Size_In_Storage_Elements + -- denotes the maximum values for Size_In_Storage_Elements that will + -- be requested via Allocate. (Of course, all we can do is check that + -- whatever was requested of Allocate did not exceed the values of the + -- attributes.) + + TCTouch.Assert( FDB0A00.TC_Largest_Request in 1 .. + System.Storage_Elements.Storage_Count'Max ( + CDB0A02_2.Small_Cell'Max_Size_In_Storage_Elements, + CDB0A02_3.Large_Cell'Max_Size_In_Storage_Elements), + "An object of excessive size was allocated. Size: " + & System.Storage_Elements.Storage_Count'Image(FDB0A00.TC_Largest_Request)); + + -- Check that an exception raised in Allocate is propagated by the allocator. + + CDB0A02_2.TC_Exceed_Pool; + + Report.Result; + +end CDB0A02; Index: cd1c06a.tst =================================================================== --- cd1c06a.tst (nonexistent) +++ cd1c06a.tst (revision 338) @@ -0,0 +1,100 @@ +-- CD1C06A.TST + +-- 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 EXPRESSION IN A TASK STORAGE SIZE CLAUSE +-- IS NOT EVALUATED AGAIN WHEN A DERIVED TYPE INHERITS THE +-- STORAGE SIZE OF THE PARENT. + +-- MACRO SUBSTITUTION: +-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR +-- THE ACTIVATION OF A TASK. + +-- HISTORY: +-- JET 09/21/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO A MACRO VALUE AND CHANGED +-- EXTENSION FROM '.DEP' TO '.TST'. + +WITH REPORT; USE REPORT; +PROCEDURE CD1C06A IS + + I : INTEGER := 0; + + SPECIFIED_SIZE : CONSTANT := $TASK_STORAGE_SIZE; + + FUNCTION COUNT_SIZE RETURN INTEGER IS + BEGIN + I := I + 1; + RETURN SPECIFIED_SIZE * I; + END; + +BEGIN + + TEST("CD1C06A", "CHECK THAT THE EXPRESSION IN A TASK STORAGE " & + "SIZE CLAUSE IS NOT EVALUATED AGAIN WHEN A " & + "DERIVED TYPE INHERITS THE STORAGE SIZE OF " & + "THE PARENT"); + + DECLARE + + TASK TYPE PARENT IS + ENTRY E; + END PARENT; + + FOR PARENT'STORAGE_SIZE USE COUNT_SIZE; + + TYPE DERIVED_TYPE IS NEW PARENT; + + TASK BODY PARENT IS + BEGIN + ACCEPT E DO + COMMENT ("ENTRY E ACCEPTED"); + END E; + END PARENT; + + BEGIN + IF PARENT'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("PARENT'STORAGE_SIZE SHOULD NOT BE " & + "LESS THAN" & INTEGER'IMAGE (SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(PARENT'STORAGE_SIZE)); + END IF; + + IF DERIVED_TYPE'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("DERIVED_TYPE'STORAGE_SIZE SHOULD NOT BE " & + "LESS THAN" & INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_TYPE'STORAGE_SIZE)); + END IF; + + IF I > IDENT_INT (1) THEN + FAILED ("THE EXPRESSION FOR THE STORAGE SIZE " & + "SPECIFICATION WAS EVALUATED MORE THAN ONCE"); + END IF; + + END; + + RESULT; + +END CD1C06A; Index: cd5003h.ada =================================================================== --- cd5003h.ada (nonexistent) +++ cd5003h.ada (revision 338) @@ -0,0 +1,89 @@ +-- CD5003H.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A GENERIC PACKAGE BODY SUBUNIT CONTAINING AN ADDRESS +-- CLAUSE AS LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT +-- CONTAINING THE GENERIC PACKAGE SPECIFICATION. + +-- HISTORY: +-- VCL 09/09/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- PWN 11/30/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL. + +WITH SYSTEM; +PACKAGE CD5003H_PACK3 IS + + PROCEDURE REQUIRE_BODY; + + GENERIC + PACKAGE PACK4 IS END PACK4; +END CD5003H_PACK3; + +PACKAGE BODY CD5003H_PACK3 IS + + PROCEDURE REQUIRE_BODY IS + BEGIN + NULL; + END; + + PACKAGE BODY PACK4 IS SEPARATE; +END CD5003H_PACK3; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +SEPARATE (CD5003H_PACK3) +PACKAGE BODY PACK4 IS + TEST_VAR : INTEGER := 0; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; +BEGIN + TEST ("CD5003H", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE " & + "GIVEN FOR A GENERIC PACKAGE BODY SUBUNIT " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS " & + "A 'WITH' CLAUSE IS GIVEN FOR THE UNIT " & + "CONTAINING THE GENERIC PACKAGE SPECIFICATION."); + + TEST_VAR := IDENT_INT (3); + + IF TEST_VAR /= 3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; +END PACK4; + +WITH CD5003H_PACK3; USE CD5003H_PACK3; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (REPORT); +PROCEDURE CD5003H IS + PACKAGE PACK5 IS NEW PACK4; +BEGIN + RESULT; +END CD5003H; Index: cd5011i.ada =================================================================== --- cd5011i.ada (nonexistent) +++ cd5011i.ada (revision 338) @@ -0,0 +1,74 @@ +-- CD5011I.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF +-- AN ARRAY TYPE IN THE DECLARATIVE PART OF A PACKAGE BODY. + +-- HISTORY: +-- JET 09/11/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011I IS + + PACKAGE CD5011I_PACKAGE IS + END CD5011I_PACKAGE; + + PACKAGE BODY CD5011I_PACKAGE IS + + INT : ARRAY (1 .. 10) OF INTEGER; + FOR INT USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + TEST ("CD5011I", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN ARRAY " & + "TYPE IN THE DECLARATIVE PART OF A " & + "PACKAGE BODY"); + + FOR I IN INT'RANGE LOOP + INT (I) := IDENT_INT (I); + END LOOP; + + FOR I IN INT'RANGE LOOP + IF INT (I) /= I THEN + FAILED ("WRONG VALUE FOR ELEMENT" & + INTEGER'IMAGE (I)); + END IF; + END LOOP; + + IF INT'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN PACKAGE"); + END IF; + END; + +BEGIN + + RESULT; + +END CD5011I; Index: cd3015h.ada =================================================================== --- cd3015h.ada (nonexistent) +++ cd3015h.ada (revision 338) @@ -0,0 +1,86 @@ +-- CD3015H.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 AN ENUMERATION REPRESENTATION CLAUSE FOR A DERIVED +-- TYPE CAN BE GIVEN IN THE VISIBLE OR PRIVATE PART OF A PACKAGE +-- FOR A DERIVED TYPE DECLARED IN THE VISIBLE PART, WHERE AN +-- ENUMERATION CLAUSE HAS BEEN GIVEN FOR THE PARENT. + +-- HISTORY +-- DHH 10/01/87 CREATED ORIGINAL TEST +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3015H IS + +BEGIN + + TEST ("CD3015H", "CHECK THAT AN ENUMERATION " & + "REPRESENTATION CLAUSE FOR A DERIVED TYPE CAN " & + "BE GIVEN IN THE VISIBLE OR PRIVATE PART OF A " & + "PACKAGE FOR A DERIVED TYPE DECLARED IN THE " & + "VISIBLE PART, WHERE AN ENUMERATION CLAUSE HAS " & + "BEEN GIVEN FOR THE PARENT"); + + DECLARE + PACKAGE PACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW); + FOR MAIN USE (RED => 1, BLUE => 2, YELLOW => 3); + + TYPE HUE IS NEW MAIN; + TYPE NEWHUE IS NEW MAIN; + + FOR HUE USE + (RED => 8, BLUE => 9, YELLOW => 10); + + PRIVATE + + FOR NEWHUE USE (RED => 6, BLUE => 11, YELLOW => 18); + + TYPE INT1 IS RANGE 8 .. 10; + FOR INT1'SIZE USE HUE'SIZE; + + TYPE INT2 IS RANGE 6 .. 18; + FOR INT2'SIZE USE NEWHUE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(HUE, INT1); + PROCEDURE CHECK_2 IS NEW ENUM_CHECK(NEWHUE, INT2); + + END PACK; + + PACKAGE BODY PACK IS + BEGIN + CHECK_1 (RED, 8, "HUE"); + CHECK_2 (YELLOW, 18, "NEWHUE"); + END PACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015H; Index: cd5011k.ada =================================================================== --- cd5011k.ada (nonexistent) +++ cd5011k.ada (revision 338) @@ -0,0 +1,75 @@ +-- CD5011K.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A +-- RECORD TYPE IN THE DECLARATIVE PART OF A BLOCK STATEMENT. + +-- HISTORY: +-- JET 09/15/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011K IS + +BEGIN + + TEST ("CD5011K", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF A RECORD " & + "TYPE IN THE DECLARATIVE PART OF A " & + "BLOCK STATEMENT"); + + DECLARE + + TYPE REC_TYPE IS RECORD + I : INTEGER := 12; + B : BOOLEAN := TRUE; + END RECORD; + + REC : REC_TYPE; + FOR REC USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + IF EQUAL (3, 3) THEN + REC.I := 17; + REC.B := FALSE; + END IF; + + IF REC.I /= 17 OR REC.B THEN + FAILED ("WRONG VALUE FOR VARIABLE IN BLOCK"); + END IF; + + IF REC'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE IN BLOCK"); + END IF; + + END; + + RESULT; + +END CD5011K; Index: cd5011m.ada =================================================================== --- cd5011m.ada (nonexistent) +++ cd5011m.ada (revision 338) @@ -0,0 +1,72 @@ +-- CD5011M.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF +-- AN ACCESS TYPE IN THE DECLARATIVE PART OF A SUBPROGRAM. + +-- HISTORY: +-- JET 09/15/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011M IS + + TYPE ACC_TYPE IS ACCESS STRING; + + PROCEDURE CD5011M_PROC IS + + ACC : ACC_TYPE := NEW STRING'("THE QUICK BROWN FOX"); + FOR ACC USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + IF EQUAL (3, 3) THEN + ACC := NEW STRING'("THE LAZY DOG"); + END IF; + + IF ACC.ALL /= IDENT_STR ("THE LAZY DOG") THEN + FAILED ("INCORRECT VALUE FOR VARIABLE IN PROCEDURE"); + END IF; + + IF ACC'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR VARIABLE IN PROCEDURE"); + END IF; + + END CD5011M_PROC; + +BEGIN + TEST ("CD5011M", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN ACCESS " & + "TYPE IN THE DECLARATIVE PART OF A " & + "SUBPROGRAM"); + + CD5011M_PROC; + + RESULT; + +END CD5011M; Index: cdd2a03.a =================================================================== --- cdd2a03.a (nonexistent) +++ cdd2a03.a (revision 338) @@ -0,0 +1,325 @@ +-- CDD2A03.A +-- +-- Grant of Unlimited Rights +-- +-- The Ada Conformity Assessment Authority (ACAA) holds unlimited +-- rights in the software and documentation contained herein. Unlimited +-- rights are the same as those granted by the U.S. Government for older +-- parts of the Ada Conformity Assessment Test Suite, and are defined +-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA +-- intends to confer upon all recipients unlimited rights equal to those +-- held by the ACAA. 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 default Read and Write attributes for a limited type +-- extension are created from the parent type's attribute (which may be +-- user-defined) and those for the extension components, if the extension +-- components are non-limited or have user-defined attributes. Check that +-- such limited type extension attributes are callable (Defect Report +-- 8652/0040, as reflected in Technical Corrigendum 1, penultimate sentence +-- of 13.13.2(9/1) and 13.13.2(36/1)). +-- +-- CHANGE HISTORY: +-- 1 AUG 2001 PHL Initial version. +-- 3 DEC 2001 RLB Reformatted for ACATS. +-- +--! +with Ada.Streams; +use Ada.Streams; +with FDD2A00; +use FDD2A00; +with Report; +use Report; +procedure CDD2A03 is + + Input_Output_Error : exception; + + type Int is range 1 .. 1000; + type Str is array (Int range <>) of Character; + + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Int'Base); + procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base); + function Input (Stream : access Root_Stream_Type'Class) return Int'Base; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base); + + for Int'Read use Read; + for Int'Write use Write; + for Int'Input use Input; + for Int'Output use Output; + + + type Lim is limited + record + C : Int; + end record; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Lim); + procedure Write (Stream : access Root_Stream_Type'Class; Item : Lim); + function Input (Stream : access Root_Stream_Type'Class) return Lim; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Lim); + + for Lim'Read use Read; + for Lim'Write use Write; + for Lim'Input use Input; + for Lim'Output use Output; + + + type Parent (D1, D2 : Int; B : Boolean) is tagged limited + record + S : Str (D1 .. D2); + case B is + when False => + C1 : Integer; + when True => + C2 : Float; + end case; + end record; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent); + procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent); + function Input (Stream : access Root_Stream_Type'Class) return Parent; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent); + + for Parent'Read use Read; + for Parent'Write use Write; + for Parent'Input use Input; + for Parent'Output use Output; + + + procedure Actual_Read + (Stream : access Root_Stream_Type'Class; Item : out Int) is + begin + Integer'Read (Stream, Integer (Item)); + end Actual_Read; + + procedure Actual_Write + (Stream : access Root_Stream_Type'Class; Item : Int) is + begin + Integer'Write (Stream, Integer (Item)); + end Actual_Write; + + function Actual_Input (Stream : access Root_Stream_Type'Class) return Int is + begin + return Int (Integer'Input (Stream)); + end Actual_Input; + + procedure Actual_Output + (Stream : access Root_Stream_Type'Class; Item : Int) is + begin + Integer'Output (Stream, Integer (Item)); + end Actual_Output; + + + procedure Actual_Read + (Stream : access Root_Stream_Type'Class; Item : out Lim) is + begin + Integer'Read (Stream, Integer (Item.C)); + end Actual_Read; + + procedure Actual_Write + (Stream : access Root_Stream_Type'Class; Item : Lim) is + begin + Integer'Write (Stream, Integer (Item.C)); + end Actual_Write; + + function Actual_Input (Stream : access Root_Stream_Type'Class) return Lim is + Result : Lim; + begin + Result.C := Int (Integer'Input (Stream)); + return Result; + end Actual_Input; + + procedure Actual_Output + (Stream : access Root_Stream_Type'Class; Item : Lim) is + begin + Integer'Output (Stream, Integer (Item.C)); + end Actual_Output; + + + procedure Actual_Read + (Stream : access Root_Stream_Type'Class; Item : out Parent) is + begin + case Item.B is + when False => + Item.C1 := 7; + when True => + Float'Read (Stream, Item.C2); + end case; + Str'Read (Stream, Item.S); + end Actual_Read; + + procedure Actual_Write + (Stream : access Root_Stream_Type'Class; Item : Parent) is + begin + case Item.B is + when False => + null; -- Don't write C1 + when True => + Float'Write (Stream, Item.C2); + end case; + Str'Write (Stream, Item.S); + end Actual_Write; + + function Actual_Input + (Stream : access Root_Stream_Type'Class) return Parent is + X : Parent (1, 1, True); + begin + raise Input_Output_Error; + return X; + end Actual_Input; + + procedure Actual_Output + (Stream : access Root_Stream_Type'Class; Item : Parent) is + begin + raise Input_Output_Error; + end Actual_Output; + + package Int_Ops is new Counting_Stream_Ops (T => Int'Base, + Actual_Write => Actual_Write, + Actual_Input => Actual_Input, + Actual_Read => Actual_Read, + Actual_Output => Actual_Output); + + package Lim_Ops is new Counting_Stream_Ops (T => Lim, + Actual_Write => Actual_Write, + Actual_Input => Actual_Input, + Actual_Read => Actual_Read, + Actual_Output => Actual_Output); + + package Parent_Ops is + new Counting_Stream_Ops (T => Parent, + Actual_Write => Actual_Write, + Actual_Input => Actual_Input, + Actual_Read => Actual_Read, + Actual_Output => Actual_Output); + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Int'Base) + renames Int_Ops.Read; + procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base) + renames Int_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Int'Base + renames Int_Ops.Input; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base) + renames Int_Ops.Output; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Lim) + renames Lim_Ops.Read; + procedure Write (Stream : access Root_Stream_Type'Class; Item : Lim) + renames Lim_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Lim + renames Lim_Ops.Input; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Lim) + renames Lim_Ops.Output; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent) + renames Parent_Ops.Read; + procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent) + renames Parent_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Parent + renames Parent_Ops.Input; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent) + renames Parent_Ops.Output; + + type Derived1 is new Parent with + record + C3 : Int; + end record; + + type Derived2 (D : Int) is new Parent (D1 => D, + D2 => D, + B => False) with + record + C3 : Lim; + end record; + +begin + Test ("CDD2A03", + "Check that the default Read and Write attributes for a limited " & + "type extension are created from the parent type's " & + "attribute (which may be user-defined) and those for the " & + "extension components, if the extension components are " & + "non-limited or have user-defined attributes; check that such " & + "limited type extension attributes are callable"); + + Test1: + declare + S : aliased My_Stream (1000); + X1 : Derived1 (D1 => Int (Ident_Int (2)), + D2 => Int (Ident_Int (5)), + B => Ident_Bool (True)); + X2 : Derived1 (D1 => Int (Ident_Int (2)), + D2 => Int (Ident_Int (5)), + B => Ident_Bool (True)); + begin + X1.S := Str (Ident_Str ("bcde")); + X1.C2 := Float (Ident_Int (4)); + X1.C3 := Int (Ident_Int (99)); + + Derived1'Write (S'Access, X1); + if Int_Ops.Get_Counts /= + (Read => 0, Write => 1, Input => 0, Output => 0) then + Failed ("Error writing extension components - 1"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 0, Write => 1, Input => 0, Output => 0) then + Failed ("Didn't call parent type's Write - 1"); + end if; + + Derived1'Read (S'Access, X2); + if Int_Ops.Get_Counts /= + (Read => 1, Write => 1, Input => 0, Output => 0) then + Failed ("Error reading extension components - 1"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 1, Write => 1, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 1"); + end if; + end Test1; + + Test2: + declare + S : aliased My_Stream (1000); + X1 : Derived2 (D => Int (Ident_Int (7))); + X2 : Derived2 (D => Int (Ident_Int (7))); + begin + X1.S := Str (Ident_Str ("g")); + X1.C1 := Ident_Int (4); + X1.C3.C := Int (Ident_Int (666)); + + Derived2'Write (S'Access, X1); + if Lim_Ops.Get_Counts /= + (Read => 0, Write => 1, Input => 0, Output => 0) then + Failed ("Error writing extension components - 2"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 1, Write => 2, Input => 0, Output => 0) then + Failed ("Didn't call inherited Write - 2"); + end if; + + Derived2'Read (S'Access, X2); + if Lim_Ops.Get_Counts /= + (Read => 1, Write => 1, Input => 0, Output => 0) then + Failed ("Error reading extension components - 2"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 2, Write => 2, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 2"); + end if; + end Test2; + + Result; +end CDD2A03; Index: cd5011q.ada =================================================================== --- cd5011q.ada (nonexistent) +++ cd5011q.ada (revision 338) @@ -0,0 +1,91 @@ +-- CD5011Q.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A +-- PRIVATE TYPE IN THE DECLARATIVE PART OF A BLOCK STATEMENT. + +-- HISTORY: +-- JET 09/15/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011Q IS + + PACKAGE P IS + TYPE PRIV_TYPE IS PRIVATE; + FUNCTION INT_TO_PRIV (I : INTEGER) RETURN PRIV_TYPE; + FUNCTION EQUAL (P : PRIV_TYPE; I : INTEGER) RETURN BOOLEAN; + PRIVATE + TYPE PRIV_TYPE IS NEW INTEGER; + END P; + + PACKAGE BODY P IS + + FUNCTION INT_TO_PRIV (I : INTEGER) RETURN PRIV_TYPE IS + BEGIN + RETURN PRIV_TYPE(I); + END; + + FUNCTION EQUAL (P : PRIV_TYPE; I : INTEGER) RETURN BOOLEAN IS + BEGIN + RETURN (P = PRIV_TYPE(I)); + END; + + END P; + + USE P; + +BEGIN + + TEST ("CD5011Q", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF A PRIVATE " & + "TYPE IN THE DECLARATIVE PART OF A " & + "BLOCK STATEMENT"); + + DECLARE + + PRIV : PRIV_TYPE := INT_TO_PRIV (12); + FOR PRIV USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + PRIV := INT_TO_PRIV (17); + + IF NOT EQUAL (PRIV, IDENT_INT (17)) THEN + FAILED ("INCORRECT VALUE FOR VARIABLE OF PRIVATE TYPE"); + END IF; + + IF PRIV'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR VARIABLE OF " & + "PRIVATE TYPE"); + END IF; + END; + + RESULT; + +END CD5011Q; Index: cd2a23a.ada =================================================================== --- cd2a23a.ada (nonexistent) +++ cd2a23a.ada (revision 338) @@ -0,0 +1,221 @@ +-- CD2A23A.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 WHEN A SIZE SPECIFICATION AND AN ENUMERATION +-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE, +-- THEN OPERATIONS ON VALUES OF SUCH A TYPE ARE NOT AFFECTED +-- BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- RJW 07/28/87 CREATED ORIGINAL TEST. +-- DHH 04/18/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON +-- REPRESENTATION CLAUSE. +-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES. + + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD2A23A IS + + BASIC_SIZE : CONSTANT := INTEGER'SIZE/2; + + TYPE CHECK_TYPE IS (ZERO, ONE, TWO); + + FOR CHECK_TYPE USE (ZERO => 3, ONE => 4, TWO => 5); + + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; + + C0 : CHECK_TYPE := ZERO; + C1 : CHECK_TYPE := ONE; + C2 : CHECK_TYPE := TWO; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE; + CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO); + + TYPE REC_TYPE IS RECORD + COMP0 : CHECK_TYPE := ZERO; + COMP1 : CHECK_TYPE := ONE; + COMP2 : CHECK_TYPE := TWO; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN ONE; + END IF; + END IDENT; + + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE); + + PROCEDURE PROC (CI0, CI2 : CHECK_TYPE; + CIO1, CIO2 : IN OUT CHECK_TYPE; + CO2 : OUT CHECK_TYPE) IS + BEGIN + IF NOT ((IDENT (CIO1) IN CIO1 .. CIO2) AND + (CI0 NOT IN IDENT (ONE) .. CIO2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS " & + "- 1"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (CI0) OR + CHECK_TYPE'VAL (1) /= IDENT (CIO1) OR + CHECK_TYPE'VAL (2) /= IDENT (CIO2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 1"); + END IF; + + IF CHECK_TYPE'PRED (CIO1) /= IDENT (CI0) OR + CHECK_TYPE'PRED (CIO2) /= IDENT (CIO1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 1"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CI0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (CIO1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (CIO2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 1"); + END IF; + + CO2 := TWO; + + END PROC; + +BEGIN + TEST ("CD2A23A", "CHECK THAT WHEN A SIZE SPECIFICATION AND " & + "AN ENUMERATION REPRESENTATION CLAUSE ARE " & + "GIVEN FOR AN ENUMERATION TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE ARE " & + "NOT AFFECTED BY THE REPRESENTATION CLAUSE"); + + CHECK_1 (C0, BASIC_SIZE, "CHECK_TYPE"); + PROC (ZERO, TWO, C1, C2, C2); + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((C0 < IDENT (ONE)) AND(IDENT (C2) > IDENT (C1)) AND + (C1 <= IDENT (ONE)) AND(IDENT (TWO) = C2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 2"); + END IF; + + IF CHECK_TYPE'LAST /= IDENT (TWO) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST - 2"); + END IF; + + IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 2"); + END IF; + + IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR + CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 2"); + END IF; + + IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 2"); + END IF; + + IF CHARRAY (1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY (1)'SIZE"); + END IF; + + IF NOT ((CHARRAY (0) < IDENT (ONE)) AND + (IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND + (CHARRAY (1) <= IDENT (ONE)) AND + (IDENT (TWO) = CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3"); + END IF; + + IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND + (CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'VAL (1) /= IDENT (CHARRAY (1)) OR + CHECK_TYPE'VAL (2) /= IDENT (CHARRAY (2)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 3"); + END IF; + + IF CHECK_TYPE'PRED (CHARRAY (1)) /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'PRED (CHARRAY (2)) /= IDENT (CHARRAY (1)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 3"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (CHARRAY (1)) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (CHARRAY (2)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 3"); + END IF; + + IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE"); + END IF; + + IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND + (IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND + (CHREC.COMP1 <= IDENT (ONE)) AND + (IDENT (TWO) = CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4"); + END IF; + + IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND + (CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4"); + END IF; + + IF CHECK_TYPE'POS (CHREC.COMP0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (CHREC.COMP1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (CHREC.COMP2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 4"); + END IF; + + IF CHECK_TYPE'SUCC (CHREC.COMP0) /= IDENT (CHREC.COMP1) OR + CHECK_TYPE'SUCC (CHREC.COMP1) /= IDENT (CHREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 4"); + END IF; + + IF CHECK_TYPE'IMAGE (CHREC.COMP0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (CHREC.COMP1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (CHREC.COMP2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 4"); + END IF; + + + RESULT; + +END CD2A23A; Index: cd2a51a.ada =================================================================== --- cd2a51a.ada (nonexistent) +++ cd2a51a.ada (revision 338) @@ -0,0 +1,193 @@ +-- CD2A51A.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR A +-- FIXED POINT TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- RJW 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/12/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- OPERATORS ON 'SIZE TESTS, AND CHANGED 'SIZE CLAUSE +-- SO THAT IT IS NOT A POWER OF TWO. +-- WMC 03/31/92 ELIMINATED TEST REDUNDANCIES. +-- PWN 02/02/95 REMOVED INCONSISTENCIES WITH ADA 9X. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A51A IS + + BASIC_SIZE : CONSTANT := 9; + + TYPE BASIC_TYPE IS DELTA 2.0 ** (-4) RANGE -4.0 .. 4.0; + + TYPE CHECK_TYPE IS DELTA 2.0 ** (-4) RANGE -4.0 .. 4.0; + + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; + + CNEG1 : CHECK_TYPE := -3.5; + CNEG2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); + CPOS1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0); + CPOS2 : CHECK_TYPE := 3.5; + CZERO : CHECK_TYPE; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 3) OF CHECK_TYPE; + CHARRAY : ARRAY_TYPE := + (-3.5, CHECK_TYPE (-1.0/3.0), CHECK_TYPE (4.0/6.0), 3.5); + + TYPE REC_TYPE IS RECORD + COMPN1 : CHECK_TYPE := -3.5; + COMPN2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); + COMPP1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0); + COMPP2 : CHECK_TYPE := 3.5; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (FX : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN FX; + ELSE + RETURN 0.0; + END IF; + END IDENT; + + PROCEDURE PROC (N1_IN, P1_IN : CHECK_TYPE; + N2_INOUT,P2_INOUT : IN OUT CHECK_TYPE; + CZOUT : OUT CHECK_TYPE) IS + BEGIN + + IF +IDENT (N2_INOUT) NOT IN -0.375 .. -0.3125 OR + IDENT (-P1_IN) NOT IN -0.6875 .. -0.625 THEN + FAILED ("INCORRECT RESULTS FOR " & + "UNARY ADDING OPERATORS - 1"); + END IF; + + IF ABS IDENT (N2_INOUT) NOT IN 0.3125 .. 0.375 OR + IDENT (ABS P1_IN) NOT IN 0.625 .. 0.6875 THEN + FAILED ("INCORRECT RESULTS FOR " & + "ABSOLUTE VALUE OPERATORS - 1"); + END IF; + + CZOUT := 0.0; + + END PROC; + +BEGIN + TEST ("CD2A51A", "CHECK THAT WHEN A SIZE SPECICFICATION IS " & + "GIVEN FOR A FIXED POINT TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE ARE " & + "NOT AFFECTED BY THE REPRESENTATION CLAUSE"); + + PROC (CNEG1, CPOS1, CNEG2, CPOS2, CZERO); + + IF IDENT (CZERO) /= 0.0 THEN + FAILED ("INCORRECT VALUE FOR OUT PARAMETER"); + END IF; + + IF CHECK_TYPE'LAST < IDENT (3.9375) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST"); + END IF; + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF CHECK_TYPE'AFT /= BASIC_TYPE'AFT THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'AFT"); + END IF; + + IF CNEG1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CNEG1'SIZE"); + END IF; + + IF IDENT (CNEG1) + CPOS1 NOT IN -2.875 .. -2.8125 OR + CPOS2 - IDENT (CPOS1) NOT IN 2.8125 .. 2.875 THEN + FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 2"); + END IF; + + IF CHECK_TYPE (CNEG1 * IDENT (CPOS1)) NOT IN -2.4375 .. -2.1875 OR + CHECK_TYPE (IDENT (CNEG2) / CPOS2) NOT IN + -0.125 .. -0.0625 THEN + FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 2"); + END IF; + + IF IDENT (CPOS1) NOT IN 0.625 .. 0.6875 OR + CNEG2 IN -0.25 .. 0.0 OR + IDENT (CNEG2) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 2"); + END IF; + + IF CHARRAY (1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY (1)'SIZE"); + END IF; + + IF +IDENT (CHARRAY (1)) NOT IN -0.375 .. -0.3125 OR + IDENT (-CHARRAY (2)) NOT IN -0.6875 .. -0.625 THEN + FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 3"); + END IF; + + IF ABS IDENT (CHARRAY (1)) NOT IN 0.3125 .. 0.375 OR + IDENT (ABS CHARRAY (2)) NOT IN 0.625 .. 0.6875 THEN + FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & + "OPERATORS - 3"); + END IF; + + IF IDENT (CHARRAY (2)) NOT IN 0.625 .. 0.6875 OR + CHARRAY (1) IN -0.25 .. 0.0 OR + IDENT (CHARRAY (1)) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + + IF CHREC.COMPP1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMPP1'SIZE"); + END IF; + + IF IDENT (CHREC.COMPN1) + CHREC.COMPP1 NOT IN + -2.875 .. -2.8125 OR + CHREC.COMPP2 - IDENT (CHREC.COMPP1) NOT IN + 2.8125 .. 2.875 THEN + FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 4"); + END IF; + + IF CHECK_TYPE (CHREC.COMPN1 * IDENT (CHREC.COMPP1)) NOT IN + -2.4375 .. -2.1875 OR + CHECK_TYPE (IDENT (CHREC.COMPN2) / CHREC.COMPP2) NOT IN + -0.125 .. -0.0625 THEN + FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 4"); + END IF; + + IF IDENT (CHREC.COMPP1) NOT IN 0.625 .. 0.6875 OR + CHREC.COMPN2 IN -0.25 .. 0.0 OR + IDENT (CHREC.COMPN2) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + + RESULT; + +END CD2A51A; Index: cd5011s.ada =================================================================== --- cd5011s.ada (nonexistent) +++ cd5011s.ada (revision 338) @@ -0,0 +1,89 @@ +-- CD5011S.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF A +-- LIMITED PRIVATE TYPE IN THE DECLARATIVE PART OF A SUBPROGRAM. + +-- HISTORY: +-- JET 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; + +PROCEDURE CD5011S IS + + PACKAGE P IS + TYPE LIMP_TYPE IS LIMITED PRIVATE; + PROCEDURE TEST_LIMP (LIMP : IN OUT LIMP_TYPE); + PRIVATE + TYPE LIMP_TYPE IS ARRAY (1 .. 10) OF INTEGER; + END P; + + PACKAGE BODY P IS + PROCEDURE TEST_LIMP (LIMP : IN OUT LIMP_TYPE) IS + BEGIN + FOR I IN LIMP'RANGE LOOP + LIMP (I) := IDENT_INT (I); + END LOOP; + + FOR I IN LIMP'RANGE LOOP + IF LIMP (I) /= I THEN + FAILED ("INCORRECT VALUE FOR ELEMENT" & + INTEGER'IMAGE (I)); + END IF; + END LOOP; + END TEST_LIMP; + END P; + + USE P; + + PROCEDURE CD5011S_PROC IS + + LIMP : LIMP_TYPE; + FOR LIMP USE + AT SPPRT13.VARIABLE_ADDRESS; + + BEGIN + TEST_LIMP (LIMP); + + IF LIMP'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE OF A LIMITED " & + "PRIVATE TYPE"); + END IF; + END; + +BEGIN + TEST ("CD5011S", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF A LIMITED " & + "PRIVATE TYPE IN THE DECLARATIVE PART " & + "OF A SUBPROGRAM"); + + CD5011S_PROC; + + RESULT; + +END CD5011S; Index: cd2b16a.ada =================================================================== --- cd2b16a.ada (nonexistent) +++ cd2b16a.ada (revision 338) @@ -0,0 +1,85 @@ +-- CD2B16A.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: +-- IF A COLLECTION SIZE CLAUSE IS GIVEN FOR A PARENT ACCESS TYPE, +-- THEN THE DERIVED TYPE HAS THE SAME COLLECTION SIZE, WHETHER THE +-- DERIVED TYPE IS DECLARED BEFORE OR AFTER THE PARENT COLLECTION +-- SIZE SPECIFICATION. + +-- HISTORY: +-- DHH 09/29/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; +WITH REPORT; USE REPORT; +PROCEDURE CD2B16A IS +BEGIN + TEST ("CD2B16A", "IF A COLLECTION SIZE IS GIVEN FOR A " & + "PARENT ACCESS TYPE, THEN THE DERIVED TYPE HAS " & + "THE SAME COLLECTION SIZE, WHETHER THE " & + "DERIVED TYPE IS DECLARED BEFORE OR AFTER " & + "THE PARENT COLLECTION SIZE SPECIFICATION"); + + DECLARE + + COLLECTION_SIZE : CONSTANT :=128; + TYPE V IS ARRAY(1..4) OF INTEGER; + + TYPE CELL IS + RECORD + VALUE : V; + END RECORD; + + TYPE LINK IS ACCESS CELL; + TYPE NEWLINK1 IS NEW LINK; + + FOR LINK'STORAGE_SIZE USE + COLLECTION_SIZE; + + TYPE NEWLINK2 IS NEW LINK; + + BEGIN -- ACTIVE DECLARE + + IF LINK'STORAGE_SIZE < COLLECTION_SIZE THEN + FAILED("STORAGE_SIZE SMALLER THAN STORAGE_SIZE " & + "SPECIFIED WAS ALLOCATED"); + END IF; + + IF LINK'STORAGE_SIZE /= NEWLINK1'STORAGE_SIZE THEN + FAILED("STORAGE_SIZE OF THE FIRST DERIVED TYPE" & + "IS NOT THE SAME SIZE AS THAT OF THE " & + "PARENT"); + END IF; + + IF LINK'STORAGE_SIZE /= NEWLINK2'STORAGE_SIZE THEN + FAILED("STORAGE_SIZE OF THE SECOND DERIVED TYPE" & + "IS NOT THE SAME SIZE AS THAT OF THE " & + "PARENT"); + END IF; + + END; --ACTIVE DECLARE + + RESULT; +END CD2B16A; Index: cd2a23e.ada =================================================================== --- cd2a23e.ada (nonexistent) +++ cd2a23e.ada (revision 338) @@ -0,0 +1,198 @@ +-- CD2A23E.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 WHEN A SIZE SPECIFICATION AND AN ENUMERATION +-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE, +-- THEN SUCH A TYPE CAN BE PASSED AS AN ACTUAL PARAMETER TO A +-- GENERIC PROCEDURE. + +-- HISTORY: +-- JET 08/18/87 CREATED ORIGINAL TEST. +-- DHH 04/18/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- OPERATORS ON 'SIZE TESTS, AND ADDED CHECK ON +-- REPRESENTATION CLAUSE. +-- BCB 03/05/90 ADDED CALL TO LENGTH_CHECK TO VERIFY THAT THE SIZE +-- SPECIFICATION IS OBEYED. +-- LDC 10/03/90 ADDED EXCEPTION HANDER FOR CHECK OF 'SUCC, 'PRED, +-- ADDED CASES FOR >=, /=, ASSIGNMENT, QUALIFICATION, +-- AND EXPLICIT CONVERSION. +-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES. + + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD2A23E IS + + TYPE BASIC_ENUM IS (ZERO, ONE, TWO); + BASIC_SIZE : CONSTANT := 8; + + FOR BASIC_ENUM USE (ZERO => 3, ONE => 4, TWO => 5); + FOR BASIC_ENUM'SIZE USE BASIC_SIZE; + +BEGIN + TEST ("CD2A23E", "CHECK THAT WHEN A SIZE SPECIFICATION AND AN " & + "ENUMERATION REPRESENTATION CLAUSE ARE " & + "GIVEN FOR AN ENUMERATION TYPE, " & + "THEN SUCH A TYPE CAN BE " & + "PASSED AS AN ACTUAL PARAMETER TO A GENERIC " & + "PROCEDURE"); + + DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE. + + GENERIC + TYPE GPARM IS (<>); + PROCEDURE GENPROC (C0, C1, C2: GPARM); + + PROCEDURE GENPROC (C0, C1, C2: GPARM) IS + + SUBTYPE CHECK_TYPE IS GPARM; + + C3 : GPARM; + + CHECKVAR : CHECK_TYPE; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN C1; + END IF; + END IDENT; + + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE); + + + BEGIN -- GENPROC. + + CHECK_1 (C0, BASIC_SIZE, "CHECK_TYPE"); + + CHECKVAR := IDENT (C0); + + CHECK_1 (CHECKVAR, CHECK_TYPE'SIZE, "CHECK_TYPE"); + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((IDENT(C0) < IDENT (C1)) AND + (IDENT(C2) > IDENT (C1)) AND + (IDENT(C1) <= IDENT (C1)) AND + (IDENT(C2) = IDENT (C2))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS"); + END IF; + + IF CHECK_TYPE'FIRST /= IDENT (C0) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST"); + END IF; + + IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS"); + END IF; + + IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR + CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC"); + END IF; + + BEGIN + IF CHECK_TYPE'SUCC (IDENT(C2)) /= IDENT (C1) THEN + FAILED ("CONSTRAINT ERROR NOT RAISED FOR " & + "CHECK_TYPE'SUCC"); + END IF; + EXCEPTION + WHEN CONSTRAINT_ERROR => + IF 3 /= IDENT_INT(3) THEN + COMMENT ("DON'T OPTIMIZE EXCEPTION -1"); + END IF; + WHEN OTHERS => + FAILED ("WRONG EXCEPTION RAISED FOR " & + "CHECK_TYPE'SUCC"); + END; + + BEGIN + IF CHECK_TYPE'PRED(IDENT(C0)) /= IDENT (C1) THEN + FAILED ("CONSTRAINT ERROR NOT RAISED FOR " & + "CHECK_TYPE'PRED"); + END IF; + EXCEPTION + WHEN CONSTRAINT_ERROR => + IF 3 /= IDENT_INT(3) THEN + COMMENT ("DON'T OPTIMIZE EXCEPTION -2"); + END IF; + WHEN OTHERS => + FAILED ("WRONG EXCEPTION RAISED FOR " & + "CHECK_TYPE'PRED"); + END; + + IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR + CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED"); + END IF; + + IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE"); + END IF; + + CHECKVAR := CHECK_TYPE'VALUE ("ONE"); + C3 := GPARM(CHECKVAR); + IF C3 /= IDENT(C1) THEN + FAILED ("INCORRECT VALUE FOR CONVERSION"); + END IF; + + CHECK_1 (IDENT(C0), BASIC_SIZE, "CHECK_ENUM"); + + + IF CHECK_TYPE'(C2) /= IDENT(C2) THEN + FAILED ("INCORRECT VALUE FOR QUALIFICATION"); + END IF; + + C3 := CHECK_TYPE'VALUE ("TWO"); + IF C3 /= IDENT(C2) THEN + FAILED ("INCORRECT VALUE FOR ASSIGNMENT"); + END IF; + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM); + + BEGIN + + NEWPROC (ZERO, ONE, TWO); + + END; + + RESULT; + +END CD2A23E; Index: cd4041a.tst =================================================================== --- cd4041a.tst (nonexistent) +++ cd4041a.tst (revision 338) @@ -0,0 +1,92 @@ +-- CD4041A.TST + +-- 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 AN ALIGNMENT CLAUSE CAN BE GIVEN FOR A RECORD +-- REPRESENTATION CLAUSE. + +-- HISTORY: +-- RJW 08/25/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED MOD 4 TO A MACRO VALUE AND CHANGED +-- EXTENSION FROM '.DEP' TO '.TST'. + +-- MACRO SUBSTITUTION: +-- $ALIGNMENT IS THE VALUE USED TO ALIGN A RECORD ON A BOUNDARY +-- DEFINED BY THE IMPLEMENTATION. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD4041A IS + + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / + SYSTEM.STORAGE_UNIT; + + TYPE CHECK_CLAUSE IS RECORD + INT_COMP : INTEGER; + CHAR_COMP : CHARACTER; + END RECORD; + + FOR CHECK_CLAUSE USE + RECORD AT MOD $ALIGNMENT; + INT_COMP AT 0 + RANGE 0..INTEGER'SIZE - 1; + CHAR_COMP AT 1*UNITS_PER_INTEGER + RANGE 0..CHARACTER'SIZE - 1; + END RECORD; + + CHECK_RECORD : CHECK_CLAUSE := (1, 'A'); + +BEGIN + TEST ("CD4041A", "CHECK THAT AN ALIGNMENT CLAUSE CAN BE " & + "GIVEN FOR A RECORD REPRESENTATION CLAUSE"); + + IF CHECK_RECORD.INT_COMP'FIRST_BIT /= 0 THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'LAST_BIT /= INTEGER'SIZE - 1 THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'POSITION /= 0 THEN + FAILED ("INCORRECT VALUE FOR POSITION OF INT_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'FIRST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'LAST_BIT /= + IDENT_INT (CHARACTER'SIZE - 1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'POSITION /= + IDENT_INT (UNITS_PER_INTEGER) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CHAR_COMP"); + END IF; + + RESULT; +END CD4041A; Index: cd7101e.dep =================================================================== --- cd7101e.dep (nonexistent) +++ cd7101e.dep (revision 338) @@ -0,0 +1,62 @@ +-- CD7101E.DEP + +-- 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 FOR MIN_INT AND MAX_INT IN PACKAGE SYSTEM, +-- SHORT_INTEGER'FIRST >= MIN_INT AND SHORT_INTEGER'LAST <= MAX_INT. + +-- APPLICABILITY CRITERIA: +-- THIS TEST IS APPLICABLE ONLY TO THOSE IMPLEMENTATIONS THAT +-- SUPPORT THE SHORT_INTEGER DATA TYPE. + +-- IF THE SHORT_INTEGER TYPE IS NOT SUPPORTED THEN THE +-- DECLARATION OF "TEST_VAR" MUST BE REJECTED. + +-- HISTORY: +-- JET 09/10/87 CREATED ORIGINAL TEST. + +WITH SYSTEM; +WITH REPORT; USE REPORT; + +PROCEDURE CD7101E IS + + TEST_VAR : SHORT_INTEGER := 0; -- N/A => ERROR. + +BEGIN + + TEST ("CD7101E", "CHECK THAT FOR MIN_INT AND MAX_INT IN PACKAGE " & + "SYSTEM, SHORT_INTEGER'FIRST >= MIN_INT AND " & + "SHORT_INTEGER'LAST <= MAX_INT"); + + IF SHORT_INTEGER'POS (SHORT_INTEGER'FIRST) < SYSTEM.MIN_INT THEN + FAILED ("INCORRECT VALUE FOR SYSTEM.MIN_INT"); + END IF; + + IF SHORT_INTEGER'POS (SHORT_INTEGER'LAST) > SYSTEM.MAX_INT THEN + FAILED ("INCORRECT VALUE FOR SYSTEM.MAX_INT"); + END IF; + + RESULT; + +END CD7101E; Index: cd1009k.tst =================================================================== --- cd1009k.tst (nonexistent) +++ cd1009k.tst (revision 338) @@ -0,0 +1,94 @@ +-- CD1009K.TST + +-- 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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE +-- VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TASK TYPE DECLARED IN +-- THE VISIBLE PART OF THE SAME PACKAGE. + +-- MACRO SUBSTITUTION: +-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR +-- THE ACTIVATION OF A TASK. + +-- HISTORY: +-- VCL 10/08/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO A MACRO VALUE AND CHANGED +-- EXTENSION FROM '.DEP' TO '.TST'. +-- TMB 02/29/96 EFFECT OF SETTING 'STORAGE_SIZE IS IMPLEMENTATION +-- DEPENDENT. +-- ONLY GUARANTEE WHEN EXAMINING 'STORAGE_SIZE IS THAT +-- IT IS NOT NEGATIVE. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009K IS +BEGIN + TEST ("CD1009K", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " & + "VISIBLE OR PRIVATE PART OF A PACKAGE FOR A " & + "TASK TYPE DECLARED IN THE VISIBLE PART OF " & + "THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := $TASK_STORAGE_SIZE; + + TASK TYPE CHECK_TYPE_1 IS + END CHECK_TYPE_1; + + FOR CHECK_TYPE_1'STORAGE_SIZE + USE SPECIFIED_SIZE; + + TASK TYPE CHECK_TYPE_2 IS + END CHECK_TYPE_2; + + PRIVATE + FOR CHECK_TYPE_2'STORAGE_SIZE USE SPECIFIED_SIZE; + END PACK; + + PACKAGE BODY PACK IS + TASK BODY CHECK_TYPE_1 IS + I : INTEGER; + BEGIN + NULL; + END CHECK_TYPE_1; + + TASK BODY CHECK_TYPE_2 IS + I : INTEGER; + BEGIN + NULL; + END CHECK_TYPE_2; + + END PACK; + + USE PACK; + BEGIN + IF CHECK_TYPE_1'STORAGE_SIZE < 0 THEN + FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO SMALL"); + END IF; + + IF CHECK_TYPE_2'STORAGE_SIZE < 0 THEN + FAILED ("CHECK_TYPE_2'STORAGE_SIZE IS TOO SMALL"); + END IF; + END; + + RESULT; +END CD1009K; Index: cd5012b.ada =================================================================== --- cd5012b.ada (nonexistent) +++ cd5012b.ada (revision 338) @@ -0,0 +1,77 @@ +-- CD5012B.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF AN +-- INTEGER TYPE IN THE DECLARATIVE PART OF A GENERIC PACKAGE BODY. + +-- HISTORY: +-- DHH 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; +PROCEDURE CD5012B IS + +BEGIN + + TEST ("CD5012B", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN INTEGER " & + "TYPE IN THE DECLARATIVE PART OF A " & + "GENERIC PACKAGE BODY"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + END GENPACK; + + PACKAGE BODY GENPACK IS + + INT2 : INTEGER :=2; + + FOR INT2 USE AT + SPPRT13.VARIABLE_ADDRESS; + + BEGIN + IF EQUAL (3, 3) THEN + INT2 := 1; + END IF; + IF INT2 /= 1 THEN + FAILED ("WRONG VALUE FOR VARIABLE IN " & + "A GENERIC PACKAGE BODY"); + END IF; + IF INT2'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE " & + "IN A GENERIC PACKAGE BODY"); + END IF; + END GENPACK; + + PACKAGE PACK IS NEW GENPACK; + BEGIN + NULL; + END; + RESULT; +END CD5012B; Index: cd10001.a =================================================================== --- cd10001.a (nonexistent) +++ cd10001.a (revision 338) @@ -0,0 +1,300 @@ +-- CD10001.A +-- +-- 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 representation items may contain nonstatic expressions +-- in the case that each expression in the representation item is a +-- name that statically denotes a constant declared before the entity. +-- +-- +-- TEST DESCRIPTION: +-- For each of the specific items in the objective, this test checks +-- an example of each of the categories of representation specification +-- that are applicable to that objective, to wit: +-- address clause ....................... Expressions need not be static +-- alignment clause ..................... Expressions must be static +-- bit order clause ..................... Not tested +-- component size clause ................ Expressions must be static +-- enumeration representation clause .... Expressions must be static +-- external tag clause .................. Expressions must be static +-- Import, Export and Convention pragmas Not tested +-- input clause ......................... Not tested +-- output clause ........................ Not tested +-- Pack pragma .......................... Not tested +-- read clause .......................... Not tested +-- record representation clause ......... Expressions must be static +-- size clause .......................... Expressions must be static +-- small clause ......................... Expressions must be static +-- storage pool clause .................. Not tested +-- storage size clause .................. Expressions must be static +-- write clause ......................... Not tested +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute. +-- +-- For implementations not validating against Annex C: +-- if this test compiles without error messages at compilation, +-- it must bind and execute. +-- +-- PASS/FAIL CRITERIA: +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute, report PASSED, and complete normally, +-- otherwise the test FAILS +-- +-- For implementations not validating against Annex C: +-- PASSING behavior is: +-- this test executes, reports PASSED, and completes normally +-- or +-- this test executes and reports NOT_APPLICABLE +-- or +-- this test produces at least one error message at compilation, and +-- the error message is associated with one of the items marked: +-- -- N/A => ERROR. +-- +-- All other behaviors are FAILING. +-- + +-- CHANGE HISTORY: +-- 11 JUL 95 SAIC Initial version +-- 10 MAR 97 PWB.CTA Made Nonstatic_Entity nonstatic; changed +-- Tenths'Small from 1.0/32.0 to 1.0/10.0, +-- as expected by the later check; improved +-- internal documentation. +-- 16 FEB 98 EDS Modified test documentation. +-- 24 NOV 98 RLB Changed Tenths'Small to 1.0/32.0, as this is +-- necessary so that all implementations can +-- process this test. (3.5.9(21) means non-binary +-- smalls are optional.) +-- 11 MAR 99 RLB Merged versions. Most EDS changes removed (as +-- they made the test less applicable than the ACAA +-- version). +--! + +----------------------------------------------------------------- CD10001_0 + +with System; +with System.Storage_Elements; +with Impdef; +with SPPRT13; +package CD10001_0 is + + -- a few types and objects to work with. + + type Int is range -2048 .. 2047; + My_Int : Int := 1024; + + type Enumeration is (First, Second, Third, Fourth, Fifth); + + -- a few names that statically denote constants: + + Nonstatic_Entity : constant System.Address := -- Non-static + System.Storage_Elements."+" + ( SPPRT13.Variable_Address, + System.Storage_Elements.Storage_Offset'(0) ); + + Tag_String : constant String := Impdef.External_Tag_Value; -- Static + -- Check to ensure that Tag_String is static + Tag_String_Length : constant := Tag_String'Length; + + A_Reasonable_Size_Value : constant := System.Storage_Unit; -- Static + + Zero : constant := 0; -- Static + One : constant := 1; -- Static + Two : constant := 2; -- Static + Three : constant := 3; -- Static + Four : constant := 4; -- Static + Five : constant := 5; -- Static + + K : constant Int := My_Int; -- Non-Static + +-- Check that representation items containing nonstatic expressions are +-- supported in the case that the representation item is a name that +-- statically denotes a constant declared before the entity. +-- +-- address clause +-- Expression must be static - RM 13.3(12) + + Object_Address : Enumeration; + for Object_Address'Address use Nonstatic_Entity; -- N/A => ERROR. + +-- alignment clause +-- Expression must be static - RM 13.3(25) + + Object_Alignment : Enumeration; + for Object_Alignment'Alignment use One; -- N/A => ERROR. + +-- bit order clause +-- no interesting test can be specified + +-- component size clause +-- Expression must be static - RM 13.3(69) + + type Array_With_Components is array(1..10) of Enumeration; + for Array_With_Components'Component_Size + use A_Reasonable_Size_Value; -- N/A => ERROR. + +-- enumeration representation clause +-- Expressions must be static - RM 13.4(6) + + type Enumeration_1 is (First, Second, Third); + for Enumeration_1 use (First => One, Second => Two, Third => Three); + +-- external tag clause +-- Expression must be static - RM 13.3(75) + + type Some_Tagged_Type is tagged null record; + for Some_Tagged_Type'External_Tag use Tag_String; -- N/A => ERROR. + +-- Import, Export and Convention pragmas +-- no interesting test can be specified + +-- input clause +-- no interesting test can be specified + +-- output clause +-- no interesting test can be specified + +-- Pack pragma +-- no interesting test can be specified + +-- read clause +-- no interesting test can be specified + +-- record representation clause +-- Expressions must be static - RM 13.3(10) + + type Record_To_Layout is record + Bit_0 : Boolean; + Bit_1 : Boolean; + end record; + for Record_To_Layout use record -- N/A => ERROR. + Bit_0 at Zero range Zero..Zero; -- N/A => ERROR. + Bit_1 at Zero range Four..Four; -- N/A => ERROR. + end record; -- N/A => ERROR. + +-- size clause +-- Expression must be static - RM 13.3(41) + + Object_Size : Enumeration; + for Object_Size'Size use A_Reasonable_Size_Value; -- N/A => ERROR. + +-- small clause +-- Expression must be static - RM 3.5.10(2) + + type Tenths is delta 0.1 range 0.0..10.0; + for Tenths'Small use 1.0 / (Two ** Five); -- N/A => ERROR. + +-- storage pool clause +-- Not tested + +-- storage size clause +-- Expression may be non-static - RM 13.11(15) + type Reference is access Record_To_Layout; + for Reference'Storage_Size use Four * K; -- N/A => ERROR. + + +-- write clause +-- no interesting test can be specified + + procedure TC_Check_Values; + +end CD10001_0; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +with TCTouch; +package body CD10001_0 is + + use type System.Address; + + procedure Assert( Truth : Boolean; Message: String ) is + begin + if not Truth then + TCTouch.Implementation_Check( Message ); + end if; + end Assert; + + procedure TC_Check_Values is + Record_Object : Record_To_Layout; + begin + + Assert(Object_Address'Address = Nonstatic_Entity, + "Object not at specified address"); + + Assert(Object_Alignment'Alignment >= One, + "Object not at specified alignment"); + + Assert(Array_With_Components'Component_Size = A_Reasonable_Size_Value, + "Array Components not specified size"); + +-- I don't see how to reliably check this one: +-- +-- type Enumeration_1 is (First, Second, Third); +-- for Enumeration_1 use (First => One, Second => Two, Third => Three); + + Assert(Some_Tagged_Type'External_Tag = Tag_String, + "External_Tag not specified value"); + Assert(Record_Object.Bit_0'First_Bit = Zero, + "Record object First_Bit not zero"); + + Assert(Record_Object.Bit_1'Last_Bit = Four, + "Record object Last_Bit not four"); + + Assert(Object_Size'Size = A_Reasonable_Size_Value, + "Object size not specified value"); + + Assert(Tenths'Small = 1.0 / Two ** Five, + "Tenths small not specified value"); + + Assert(Reference'Storage_Size = 4096, -- Four * K, + "Reference storage size not specified value"); + + end TC_Check_Values; + +end CD10001_0; + +------------------------------------------------------------------- CD10001 + +with Report; +with CD10001_0; + +procedure CD10001 is + +begin -- Main test procedure. + + Report.Test ("CD10001", "Check that representation items containing " & + "nonstatic expressions are supported in the " & + "case that the representation item is a name " & + "that statically denotes a constant declared " & + "before the entity" ); + + CD10001_0.TC_Check_Values; + + Report.Result; + +end CD10001; Index: cd5012f.ada =================================================================== --- cd5012f.ada (nonexistent) +++ cd5012f.ada (revision 338) @@ -0,0 +1,78 @@ +-- CD5012F.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 AN ADDRESS CLAUSE CAN BE GIVEN FOR A VARIABLE OF AN +-- ARRAY TYPE IN THE DECLARATIVE PART OF A GENERIC +-- PACKAGE BODY. + +-- HISTORY: +-- DHH 09/17/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +WITH SPPRT13; +PROCEDURE CD5012F IS + +BEGIN + + TEST ("CD5012F", "AN ADDRESS CLAUSE CAN BE " & + "GIVEN FOR A VARIABLE OF AN ARRAY " & + "TYPE IN THE DECLARATIVE " & + "PART OF A GENERIC PACKAGE BODY"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + END GENPACK; + + PACKAGE BODY GENPACK IS + ARRAY_VAR : ARRAY (0..4) OF INTEGER := (0,1,2,3,4); + + FOR ARRAY_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + + + BEGIN + IF EQUAL (3, 3) THEN + ARRAY_VAR := (4,3,2,1,0); + END IF; + IF ARRAY_VAR /= (4,3,2,1,0) THEN + FAILED ("WRONG VALUE FOR VARIABLE IN " & + "A GENERIC PACKAGE BODY"); + END IF; + IF ARRAY_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("WRONG ADDRESS FOR VARIABLE " & + "IN A GENERIC PACKAGE BODY"); + END IF; + END GENPACK; + + PACKAGE PACK IS NEW GENPACK; + BEGIN + NULL; + END; + RESULT; +END CD5012F; Index: cd2c11d.tst =================================================================== --- cd2c11d.tst (nonexistent) +++ cd2c11d.tst (revision 338) @@ -0,0 +1,87 @@ +--CD2C11D.TST + +-- 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 EXPRESSION IN A TASK STORAGE SIZE CLAUSE NEED +-- NOT BE STATIC. + +-- MACRO SUBSTITUTION: +-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR +-- THE ACTIVATION OF A TASK. + +-- HISTORY +-- DHH 09/29/87 CREATED ORIGINAL TEST +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.TST'. + +WITH SYSTEM; USE SYSTEM; +WITH REPORT; USE REPORT; +PROCEDURE CD2C11D IS + +BEGIN + + TEST ("CD2C11D","THE EXPRESSION IN A TASK STORAGE SIZE CLAUSE " & + "NEED NOT BE STATIC"); + + DECLARE + + STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE; + PACKAGE PACK IS + TASK TYPE CHECK_TYPE; + + FOR CHECK_TYPE'STORAGE_SIZE USE + STORAGE_SIZE; + TASK TYPE TTYPE IS + ENTRY ADD(J :IN INTEGER; K : IN OUT INTEGER); + END TTYPE; + + FOR TTYPE'STORAGE_SIZE USE IDENT_INT(STORAGE_SIZE); + + END PACK; + + PACKAGE BODY PACK IS + + TASK BODY TTYPE IS + BEGIN + ACCEPT ADD(J :IN INTEGER; K : IN OUT INTEGER); + END TTYPE; + + TASK BODY CHECK_TYPE IS + BEGIN + NULL; + END CHECK_TYPE; + + BEGIN + + IF TTYPE'STORAGE_SIZE < IDENT_INT(STORAGE_SIZE) THEN + FAILED("STORAGE_SIZE SPECIFIED IS " & + "GREATER THAN MEMORY ALLOCATED"); + END IF; + + END PACK; + BEGIN + NULL; + END; + + RESULT; +END CD2C11D; Index: cd1c03e.tst =================================================================== --- cd1c03e.tst (nonexistent) +++ cd1c03e.tst (revision 338) @@ -0,0 +1,82 @@ +-- CD1C03E.TST + +-- 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 STORAGE SIZE OF A DERIVED TASK TYPE IS +-- INHERITED FROM THE PARENT IF THE STORAGE SIZE OF THE +-- PARENT WAS DETERMINED BY A TASK STORAGE SIZE CLAUSE. + +-- MACRO SUBSTITUTION: +-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR +-- THE ACTIVATION OF A TASK. + +-- HISTORY: +-- JET 09/16/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO A MACRO VALUE AND CHANGED +-- EXTENSION FROM '.DEP' TO '.TST'. + +WITH REPORT; USE REPORT; +PROCEDURE CD1C03E IS + + SPECIFIED_SIZE : CONSTANT := $TASK_STORAGE_SIZE; + + TASK TYPE PARENT_TYPE IS + ENTRY E; + END PARENT_TYPE; + + FOR PARENT_TYPE'STORAGE_SIZE USE SPECIFIED_SIZE; + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + + TASK BODY PARENT_TYPE IS + BEGIN + ACCEPT E DO + COMMENT ("ENTRY E ACCEPTED"); + END E; + END PARENT_TYPE; + +BEGIN + + TEST("CD1C03E", "CHECK THAT THE STORAGE SIZE OF A DERIVED " & + "TASK TYPE IS INHERITED FROM THE PARENT IF " & + "THE STORAGE SIZE OF THE PARENT WAS " & + "DETERMINED BY A TASK STORAGE SIZE CLAUSE"); + + IF PARENT_TYPE'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("PARENT_TYPE'STORAGE_SIZE SHOULD NOT BE LESS THAN" & + INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(PARENT_TYPE'STORAGE_SIZE)); + END IF; + + IF DERIVED_TYPE'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("DERIVED_TYPE'STORAGE_SIZE SHOULD NOT BE LESS THAN " & + INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_TYPE'STORAGE_SIZE)); + END IF; + + RESULT; + +END CD1C03E; Index: cd30003.a =================================================================== --- cd30003.a (nonexistent) +++ cd30003.a (revision 338) @@ -0,0 +1,227 @@ +-- CD30003.A +-- +-- 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 a Size clause for an object is supported if the specified +-- size is at least as large as the subtype's size, and correspond to a +-- size in storage elements that is a multiple of the object's (non-zero) +-- Alignment. RM 13.3(43) +-- +-- TEST DESCRIPTION: +-- This test defines several types and then asserts specific sizes for +-- the, it then checks that the size set is reported back. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- +-- CHANGE HISTORY: +-- 22 JUL 95 SAIC Initial version +-- 08 MAY 96 SAIC Corrected and strengthened for 2.1 +-- 14 FEB 97 PWB.CTA Changed 'Size specifications to multiples +-- of System.Storage_Unit; restricted 'Size spec +-- for enumeration object to max integer size. +-- 16 FEB 98 EDS Modify Documentation. +-- 25 JAN 99 RLB Repaired to properly set and check sizes. +-- 29 JAN 99 RLB Added Pack pragma needed for some implementations. +-- Corrected to support a Storage_Unit size < 8. +--! + +------------------------------------------------------------------- CD30003 + +with Report; +with System; +procedure CD30003 is + + --------------------------------------------------------------------------- + -- types and subtypes + --------------------------------------------------------------------------- + + type Bit is mod 2**1; + for Bit'Size use 1; -- ANX-C RQMT. + + type Byte is mod 2**8; + for Byte'Size use 8; -- ANX-C RQMT. + + type Smallword is mod 2**8; + for Smallword'size use 16; -- ANX-C RQMT. + + type Byte_Array is array(1..4) of Byte; + pragma Pack(Byte_Array); -- ANX-C RQMT. + -- size should be 32 + + type Smallword_Array is array(1..4) of Smallword; + pragma Pack(Smallword_Array); -- Required if Storage_Unit > 16. -- ANX-C RQMT. + + -- Use to calulate maximum required size: + type Max_Modular is mod System.Max_Binary_Modulus; + type Max_Integer is range System.Min_Int .. System.Max_Int; + Enum_Size : constant := Integer'Min (32, + Integer'Min (Max_Modular'Size, Max_Integer'Size)); + type Transmission_Data is ( Empty, Input, Output, IO, Control ); + for Transmission_Data'Size use Enum_Size; -- ANX-C RQMT. + + -- Sizes to try: + + -- The basic sizes are based on a "normal" Storage_Unit = 8 implementation. + -- We then use formulas to insure that the specified sizes meet the + -- the minimum level of support and AI-0051. + + Modular_Single_Size : constant := Integer'Min (((8 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit, Max_Modular'Size); + -- Calulate an appropriate, legal, and required to be supported size to + -- try, which is the size of Byte. Note that object sizes must be + -- a multiple of the storage unit for the compiler. + + Modular_Double_Size : constant := Integer'Min (((16 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit, Max_Modular'Size); + + Modular_Quad_Size : constant := Integer'Min (((32 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit, Max_Modular'Size); + + Array_Quad_Size : constant := ((4 * 8 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit; + + Array_Octo_Size : constant := ((4 * 16 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit; + + Rounded_Enum_Size : constant := ((Enum_Size + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit; + + Enum_Quad_Size : constant := Integer'Min (((32 + (System.Storage_Unit-1)) + /System.Storage_Unit)*System.Storage_Unit, + Integer'Min (Max_Modular'Size, Max_Integer'Size)); + + + --------------------------------------------------------------------------- + -- objects + --------------------------------------------------------------------------- + + Bit_8 : Bit :=0; + for Bit_8'Size use System.Storage_Unit; -- ANX-C RQMT. + + Bit_G : Bit :=0; + for Bit_G'Size use Modular_Double_Size; -- ANX-C RQMT. + + Byte_8 : Byte :=0; + for Byte_8'Size use Modular_Single_Size; -- ANX-C RQMT. + + Byte_G : Byte :=0; + for Byte_G'Size use Modular_Double_Size; -- ANX-C RQMT. + + Smallword_1 : Smallword :=0; + for Smallword_1'Size use Modular_Double_Size; -- ANX-C RQMT. + + Smallword_2 : Smallword :=0; + for Smallword_2'Size use Modular_Quad_Size; -- ANX-C RQMT. + + Byte_Array_1 : Byte_Array := (others=>0); + for Byte_Array_1'Size use Array_Quad_Size; -- ANX-C RQMT. + + Smallword_Array_1 : Smallword_Array := (others=>0); + for Smallword_Array_1'Size use Array_Octo_Size; -- ANX-C RQMT. + + Transmission_Data_1 : aliased Transmission_Data := Empty; + + Transmission_Data_2 : Transmission_Data := Control; + for Transmission_Data_2'Size use Enum_Quad_Size; -- ANX-C RQMT. + +begin -- Main test procedure. + + Report.Test ("CD30003", "Check that Size clauses are supported for " & + "values at least as large as the subtypes " & + "size, and correspond to a size in storage " & + "elements that is a multiple of the objects " & + "(non-zero) Alignment" ); + + if Bit_8'Size /= System.Storage_Unit then + Report.Failed("Expected Bit_8'Size =" & Integer'Image(System.Storage_Unit) + & " , actually =" & Integer'Image(Bit_8'Size)); + end if; + + if Bit_G'Size /= Modular_Double_Size then + Report.Failed("Expected Bit_G'Size =" & Integer'Image(Modular_Double_Size) + & " , actually =" & Integer'Image(Bit_G'Size)); + end if; + + if Byte_8'Size /= Modular_Single_Size then + Report.Failed("Expected Byte_8'Size =" & Integer'Image(Modular_Single_Size) + & " , actually =" & Integer'Image(Byte_8'Size)); + end if; + + if Byte_G'Size /= Modular_Double_Size then + Report.Failed("Expected Bit_G'Size =" & Integer'Image(Modular_Double_Size) + & " , actually =" & Integer'Image(Byte_G'Size)); + end if; + + if Smallword_1'Size /= Modular_Double_Size then + Report.Failed("Expected Smallword_1'Size =" & + Integer'Image(Modular_Double_Size) & + ", actually =" & Integer'Image(Smallword_1'Size)); + end if; + + if Smallword_2'Size /= Modular_Quad_Size then + Report.Failed("Expected Smallword_2'Size =" & + Integer'Image(Modular_Quad_Size) & + ", actually =" & Integer'Image(Smallword_2'Size)); + end if; + + if Byte_Array_1'Size /= Array_Quad_Size then + Report.Failed("Expected Byte_Array_1'Size =" & + Integer'Image(Array_Quad_Size) & + ", actually =" & Integer'Image(Byte_Array_1'Size)); + end if; + + if Smallword_Array_1'Size /= Array_Octo_Size then + Report.Failed( + "Expected Smallword_Array_1'Size =" & + Integer'Image(Array_Octo_Size) & + ", actually =" & Integer'Image(Smallword_Array_1'Size)); + end if; + + if Transmission_Data_1'Size /= Enum_Size and then + Transmission_Data_1'Size /= Rounded_Enum_Size then + Report.Failed( + "Expected Transmission_Data_1'Size =" & Integer'Image(Rounded_Enum_Size) & + ", actually =" & Integer'Image(Transmission_Data_1'Size)); + end if; + + if Transmission_Data_2'Size /= Enum_Quad_Size then + Report.Failed( + "Expected Transmission_Data_2'Size =" & Integer'Image(Enum_Quad_Size) & + ", actually =" & Integer'Image(Transmission_Data_2'Size)); + end if; + + Report.Result; + +end CD30003; Index: cd1009u.tst =================================================================== --- cd1009u.tst (nonexistent) +++ cd1009u.tst (revision 338) @@ -0,0 +1,84 @@ +-- CD1009U.TST + +-- 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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE +-- PART OF A PACKAGE FOR A LIMITED PRIVATE TYPE, WHOSE FULL TYPE +-- DECLARATION IS A TASK TYPE, DECLARED IN THE VISIBLE PART OF THE +-- SAME PACKAGE. + +-- MACRO SUBSTITUTION: +-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR +-- THE ACTIVATION OF A TASK. + +-- HISTORY: +-- VCL 10/09/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO A MACRO VALUE AND CHANGED +-- EXTENSION FROM '.DEP' TO '.TST'. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009U IS +BEGIN + TEST ("CD1009U", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " & + "PRIVATE PART OF A PACKAGE FOR A LIMITED " & + "PRIVATE TYPE, WHOSE FULL TYPE DECLARATION IS " & + "A TASK TYPE, DECLARED IN THE VISIBLE PART OF " & + "THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := $TASK_STORAGE_SIZE; + + TYPE CHECK_TYPE_1 IS LIMITED PRIVATE; + + PROCEDURE P; + PRIVATE + TASK TYPE CHECK_TYPE_1 IS + END CHECK_TYPE_1; + + FOR CHECK_TYPE_1'STORAGE_SIZE USE SPECIFIED_SIZE; + END PACK; + + PACKAGE BODY PACK IS + PROCEDURE P IS + BEGIN + IF CHECK_TYPE_1'STORAGE_SIZE < SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO " & + "SMALL"); + END IF; + END P; + + TASK BODY CHECK_TYPE_1 IS + I : INTEGER; + BEGIN + NULL; + END CHECK_TYPE_1; + END PACK; + + USE PACK; + BEGIN + P; + END; + + RESULT; +END CD1009U; Index: cda201a.ada =================================================================== --- cda201a.ada (nonexistent) +++ cda201a.ada (revision 338) @@ -0,0 +1,70 @@ +-- CDA201A.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 UNCHECKED_CONVERSION CAN BE INSTANTIATED FOR +-- CONVERSION BETWEEN INTEGER AND BOOLEAN ARRAY TYPES. + +-- HISTORY: +-- JET 09/12/88 CREATED ORIGINAL TEST. +-- DHH 05/17/89 CHANGED FROM '.DEP' TEST TO '.ADA' TEST. + +WITH REPORT; USE REPORT; +WITH UNCHECKED_CONVERSION; +PROCEDURE CDA201A IS + + TYPE BOOL_ARR IS ARRAY (1..INTEGER'SIZE) OF BOOLEAN; + PRAGMA PACK (BOOL_ARR); + + I : INTEGER; + B : BOOL_ARR; + + FUNCTION INT_TO_BOOL IS NEW + UNCHECKED_CONVERSION (INTEGER, BOOL_ARR); + + FUNCTION BOOL_TO_INT IS NEW UNCHECKED_CONVERSION(BOOL_ARR,INTEGER); + +BEGIN + TEST ("CDA201A", "CHECK THAT UNCHECKED_CONVERSION CAN BE " & + "INSTANTIATED FOR CONVERSION BETWEEN " & + "INTEGER AND BOOLEAN ARRAY TYPES"); + + I := BOOL_TO_INT((1..INTEGER'SIZE => IDENT_BOOL(TRUE))); + + IF INT_TO_BOOL(IDENT_INT(I)) /= (1..INTEGER'SIZE => TRUE) THEN + FAILED("INCORRECT RESULT FROM ARRAY-INTEGER-ARRAY"); + END IF; + + B := INT_TO_BOOL(IDENT_INT(-1)); + + FOR J IN B'RANGE LOOP + B(J) := IDENT_BOOL(B(J)); + END LOOP; + + IF BOOL_TO_INT(B) /= -1 THEN + FAILED("INCORRECT RESULT FROM INTEGER-ARRAY-INTEGER"); + END IF; + + RESULT; +END CDA201A; Index: cd90001.a =================================================================== --- cd90001.a (nonexistent) +++ cd90001.a (revision 338) @@ -0,0 +1,233 @@ +-- CD90001.A +-- +-- 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 Unchecked_Conversion is supported and is reversible in +-- the cases where: +-- Source'Size = Target'Size +-- Source'Alignment = Target'Alignment +-- Source and Target are both represented contiguously +-- Bit pattern in Source is a meaningful value of Target type +-- +-- TEST DESCRIPTION: +-- This test declares an enumeration type with a representation +-- specification that should fit neatly into an 8 bit object; and a +-- modular type that should also be able to fit easily into 8 bits; +-- uses size representation clauses on both of them for 8 bit +-- representations. It then defines two instances of +-- Unchecked_Conversion; to convert both ways between the types. +-- Using several distinctive values, it checks that the conversions +-- are performed, and reversible. +-- As a second case, the above is performed with an integer type and +-- a packed array of booleans. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- +-- CHANGE HISTORY: +-- 22 JUL 95 SAIC Initial version +-- 07 MAY 96 SAIC Changed Boolean to Character for 2.1 +-- 27 JUL 96 SAIC Allowed for partial N/A to be PASS +-- 14 FEB 97 PWB.CTA Corrected "=" to "/=" in alignment check. +-- 16 FEB 98 EDS Modified documentation. +--! + +----------------------------------------------------------------- CD90001_0 + +with Report; +with Unchecked_Conversion; +package CD90001_0 is + + -- Case 1 : Modular <=> Enumeration + + type Eight_Bits is mod 2**8; + for Eight_Bits'Size use 8; + + type User_Enums is ( One, Two, Four, Eight, + Sixteen, Thirty_Two, Sixty_Four, One_Twenty_Eight ); + for User_Enums'Size use 8; + + for User_Enums use + ( One => 1, -- ANX-C RQMT. + Two => 2, -- ANX-C RQMT. + Four => 4, -- ANX-C RQMT. + Eight => 8, -- ANX-C RQMT. + Sixteen => 16, -- ANX-C RQMT. + Thirty_Two => 32, -- ANX-C RQMT. + Sixty_Four => 64, -- ANX-C RQMT. + One_Twenty_Eight => 128 ); -- ANX-C RQMT. + + function EB_2_UE is new Unchecked_Conversion( Eight_Bits, User_Enums ); + + function UE_2_EB is new Unchecked_Conversion( User_Enums, Eight_Bits ); + + procedure TC_Check_Case_1; + + -- Case 2 : Integer <=> Packed Character array + + type Signed_16 is range -2**15+1 .. 2**15-1; + -- +1, -1 allows for both 1's and 2's comp + + type Bits_16 is array(0..1) of Character; + pragma Pack(Bits_16); -- ANX-C RQMT. + + function S16_2_B16 is new Unchecked_Conversion( Signed_16, Bits_16 ); + + function B16_2_S16 is new Unchecked_Conversion( Bits_16, Signed_16 ); + + procedure TC_Check_Case_2; + +end CD90001_0; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +with Report; +package body CD90001_0 is + + Check_List : constant array(1..8) of Eight_Bits + := ( 1, 2, 4, 8, 16, 32, 64, 128 ); + + Check_Enum : constant array(1..8) of User_Enums + := ( One, Two, Four, Eight, + Sixteen, Thirty_Two, Sixty_Four, One_Twenty_Eight ); + + procedure TC_Check_Case_1 is + Mod_Value : Eight_Bits; + Enum_Val : User_Enums; + begin + for I in Check_List'Range loop + + if EB_2_UE(Check_List(I)) /= Check_Enum(I) then + Report.Failed("EB => UE conversion failed"); + end if; + + if Check_List(I) /= UE_2_EB(Check_Enum(I)) then + Report.Failed ("EU => EB conversion failed"); + end if; + + end loop; + end TC_Check_Case_1; + + procedure TC_Check_Case_2 is + S: Signed_16; + T,U: Signed_16; + B: Bits_16; + C,D: Bits_16; -- allow for byte swapping + begin + --FDEC_BA98_7654_3210 + S := 2#0011_0000_0111_0111#; + B := S16_2_B16( S ); + C := ( Character'Val(2#0011_0000#), Character'Val(2#0111_0111#) ); + D := ( Character'Val(2#0111_0111#), Character'Val(2#0011_0000#) ); + + if (B /= C) and (B /= D) then + Report.Failed("Int => Chararray conversion failed"); + end if; + + B := ( Character'Val(2#0011_1100#), Character'Val(2#0101_0101#) ); + S := B16_2_S16( B ); + T := 2#0011_1100_0101_0101#; + U := 2#0101_0101_0011_1100#; + + if (S /= T) and (S /= U) then + Report.Failed("Chararray => Int conversion failed"); + end if; + + end TC_Check_Case_2; + +end CD90001_0; + +------------------------------------------------------------------- CD90001 + +with Report; +with CD90001_0; + +procedure CD90001 is + + Eight_NA : Boolean := False; + Sixteen_NA : Boolean := False; + +begin -- Main test procedure. + + Report.Test ("CD90001", "Check that Unchecked_Conversion is supported " & + "and is reversible in appropriate cases" ); + Eight_Bit_Case: + begin + if CD90001_0.User_Enums'Size /= CD90001_0.Eight_Bits'Size then + Report.Comment("The sizes of the 8 bit types used in this test " + & "do not match" ); + Eight_NA := True; + elsif CD90001_0.User_Enums'Alignment /= CD90001_0.Eight_Bits'Alignment then + Report.Comment("The alignments of the 8 bit types used in this " + & "test do not match" ); + Eight_NA := True; + else + CD90001_0.TC_Check_Case_1; + end if; + + exception + when Constraint_Error => + Report.Failed("Constraint_Error raised in 8 bit case"); + when others => + Report.Failed("Unexpected exception raised in 8 bit case"); + end Eight_Bit_Case; + + Sixteen_Bit_Case: + begin + if CD90001_0.Signed_16'Size /= CD90001_0.Bits_16'Size then + Report.Comment("The sizes of the 16 bit types used in this test " + & "do not match" ); + Sixteen_NA := True; + elsif CD90001_0.Signed_16'Alignment = CD90001_0.Bits_16'Alignment then + Report.Comment("The alignments of the 16 bit types used in this " + & "test do not match" ); + Sixteen_NA := True; + else + CD90001_0.TC_Check_Case_2; + end if; + + exception + when Constraint_Error => + Report.Failed("Constraint_Error raised in 16 bit case"); + when others => + Report.Failed("Unexpected exception raised in 16 bit case"); + end Sixteen_Bit_Case; + + if Eight_NA and Sixteen_NA then + Report.Not_Applicable("No cases in this test apply"); + end if; + + Report.Result; + +end CD90001; Index: cda201c.ada =================================================================== --- cda201c.ada (nonexistent) +++ cda201c.ada (revision 338) @@ -0,0 +1,76 @@ +-- CDA201C.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 UNCHECKED_CONVERSION CAN BE INSTANTIATED FOR +-- CONVERSION BETWEEN CONSTRAINED ARRAY AND RECORD TYPES. + +-- HISTORY: +-- JET 09/12/88 CREATED ORIGINAL TEST. +-- DHH 05/17/89 CHANGED FROM '.DEP' TEST TO '.ADA' TEST. + +WITH REPORT; USE REPORT; +WITH UNCHECKED_CONVERSION; +PROCEDURE CDA201C IS + + TYPE INT IS NEW INTEGER; + + TYPE ARR IS ARRAY (1..2) OF INTEGER; + TYPE ARR2 IS ARRAY (ARR'RANGE) OF INT; + + TYPE REC IS RECORD + D : INTEGER; + I : INTEGER; + END RECORD; + + TYPE REC2 IS RECORD + D : INT; + I : INT; + END RECORD; + + A : ARR2; + R : REC2; + + FUNCTION ARR_CONV IS NEW UNCHECKED_CONVERSION(ARR, ARR2); + FUNCTION REC_CONV IS NEW UNCHECKED_CONVERSION(REC, REC2); + +BEGIN + TEST ("CDA201C", "CHECK THAT UNCHECKED_CONVERSION CAN BE " & + "INSTANTIATED FOR CONVERSION BETWEEN " & + "CONSTRAINED ARRAY AND RECORD TYPES"); + + A := ARR_CONV(ARR'(ARR'RANGE => IDENT_INT(-1))); + + IF A /= ARR2'(ARR'RANGE => -1) THEN + FAILED("INCORRECT RESULT FROM ARRAY CONVERSION"); + END IF; + + R := REC_CONV(REC'(D | I => IDENT_INT(1))); + + IF R /= REC2'(D => 1, I => 1) THEN + FAILED("INCORRECT RESULT FROM RECORD CONVERSION"); + END IF; + + RESULT; +END CDA201C; Index: cda201e.ada =================================================================== --- cda201e.ada (nonexistent) +++ cda201e.ada (revision 338) @@ -0,0 +1,120 @@ +-- CDA201E.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 UNCHECKED_CONVERSION CAN BE INSTANTIATED FOR THE +-- CONVERSION OF AN ENUMERATION TYPE WITH A REPRESENTATION CLAUSE TO +-- INTEGER. + +-- HISTORY: +-- JET 09/23/88 CREATED ORIGINAL TEST. +-- DHH 05/17/89 CHANGED FROM '.DEP' TEST TO '.ADA' TEST. +-- RJW 02/28/90 ADDED SIZE CLAUSE FOR TYPE STOOGE. +-- LDC 09/20/90 ADDED CHECK FOR CONVERSION FROM INT TO STOOGE, +-- ADDED COMMENT WHEN SIZES AREN'T EQUAL. + +WITH REPORT; USE REPORT; +WITH UNCHECKED_CONVERSION; +PROCEDURE CDA201E IS + + TYPE STOOGE IS (CURLY, MOE, LARRY); + FOR STOOGE USE (CURLY => -5, MOE => 13, LARRY => 127); + FOR STOOGE'SIZE USE 8; + + TYPE INT IS RANGE -128 .. 127; + FOR INT'SIZE USE 8; + + I : INT := 0; + NAME : STOOGE := CURLY; + + FUNCTION E_TO_I IS NEW UNCHECKED_CONVERSION(STOOGE, INT); + FUNCTION I_TO_E IS NEW UNCHECKED_CONVERSION(INT, STOOGE); + + FUNCTION ID(E : STOOGE) RETURN STOOGE IS + BEGIN + RETURN STOOGE'VAL(STOOGE'POS(E) + IDENT_INT(0)); + END ID; + + FUNCTION ID_INT (X : INT) RETURN INT IS + A : INTEGER := IDENT_INT(3); + BEGIN + IF EQUAL (A, IDENT_INT(3)) THEN -- ALWAYS EQUAL. + RETURN X; -- ALWAYS EXECUTED. + END IF; + RETURN 0; -- NEVER EXECUTED. + END ID_INT; + +BEGIN + TEST ("CDA201E", "CHECK THAT UNCHECKED_CONVERSION CAN BE " & + "INSTANTIATED FOR THE CONVERSION OF AN " & + "ENUMERATION TYPE WITH A REPRESENTATION " & + "CLAUSE TO INTEGER"); + + IF I'SIZE /= NAME'SIZE THEN + COMMENT( "UNCHECKED_CONVERSION MIGHT BE INSTANTIATED WITH " & + "DIFFERNT SIZES"); + END IF; + + BEGIN + I := E_TO_I(ID(CURLY)); + IF I /= -5 THEN + FAILED ("INCORRECT VALUE OF CURLY: " & INT'IMAGE(I)); + END IF; + + I := E_TO_I(ID(MOE)); + IF I /= 13 THEN + FAILED ("INCORRECT VALUE OF MOE: " & INT'IMAGE(I)); + END IF; + + I := E_TO_I(ID(LARRY)); + IF I /= 127 THEN + FAILED ("INCORRECT VALUE OF LARRY: " & INT'IMAGE(I)); + END IF; + EXCEPTION + WHEN OTHERS => + FAILED ("UNEXPECTED EXCEPTION RAISED BY CONVERSION"); + END; + + BEGIN -- 2 + NAME := I_TO_E(ID_INT(-5)); + IF NAME /= CURLY THEN + FAILED ("INCORRECT VALUE OF -5 : " & STOOGE'IMAGE(NAME)); + END IF; + + NAME := I_TO_E(ID_INT(13)); + IF NAME /= MOE THEN + FAILED ("INCORRECT VALUE OF 13: " & STOOGE'IMAGE(NAME)); + END IF; + + NAME := I_TO_E(ID_INT(127)); + IF NAME /= LARRY THEN + FAILED ("INCORRECT VALUE OF 127: " & STOOGE'IMAGE(NAME)); + END IF; + EXCEPTION + WHEN OTHERS => + FAILED ("UNEXPECTED EXCEPTION RAISED BY CONVERSION - 2"); + END; + + RESULT; +END CDA201E; Index: cd2a32a.ada =================================================================== --- cd2a32a.ada (nonexistent) +++ cd2a32a.ada (revision 338) @@ -0,0 +1,272 @@ +-- CD2A32A.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN +-- INTEGER TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- WITH THE SMALLEST APPROPRIATE SIGNED SIZE ARE NOT +-- AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/10/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 7, CHANGED OPERATOR ON 'SIZE +-- CHECKS AND ADDED REPRESENTAION CLAUSE CHECK. +-- RJW 03/28/90 REMOVED ERRONEOUS REFERENCES TO LENGTH_CHECK. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD2A32A IS + + BASIC_SIZE : CONSTANT := 7; + + TYPE INT IS RANGE -63 .. 63; + + FOR INT'SIZE USE BASIC_SIZE; + + I1 : INT := -63; + I2 : INT := 0; + I3 : INT := 63; + + TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE -1 .. 1) OF INT; + PRAGMA PACK (ARRAY_TYPE); + INTARRAY : ARRAY_TYPE := (-63, 0, 63); + + TYPE REC_TYPE IS RECORD + COMPN : INT := -63; + COMPZ : INT := 0; + COMPP : INT := 63; + END RECORD; + PRAGMA PACK (REC_TYPE); + + IREC : REC_TYPE; + + FUNCTION IDENT (I : INT) RETURN INT IS + BEGIN + IF EQUAL (0,0) THEN + RETURN I; + ELSE + RETURN 0; + END IF; + END IDENT; + + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (INT); + + + PROCEDURE PROC (PIN, PIP : INT; + PIOZ, PIOP : IN OUT INT; + POP : OUT INT) IS + + BEGIN + IF PIN'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR PIN'SIZE"); + END IF; + + FOR P1 IN IDENT (PIN) .. IDENT (PIOP) LOOP + IF NOT (P1 IN PIN .. PIP) OR + (P1 NOT IN IDENT(-63) .. IDENT(63)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 1"); + END IF; + END LOOP; + + IF NOT ((+PIP = PIOP) AND + (-PIN = PIP) AND + (ABS PIN = PIOP)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 1"); + END IF; + + IF INT'VAL (-63) /= IDENT (PIN) OR + INT'VAL (0) /= IDENT (PIOZ) OR + INT'VAL (63) /= IDENT (PIOP) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 1"); + END IF; + + IF INT'PRED (PIOZ) /= IDENT (-1) OR + INT'PRED (PIP) /= IDENT (62) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 1"); + END IF; + + IF INT'VALUE ("-63") /= IDENT (PIN) OR + INT'VALUE ("0") /= IDENT (PIOZ) OR + INT'VALUE ("63") /= IDENT (PIOP) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 1"); + END IF; + + POP := 63; + + END PROC; + +BEGIN + TEST ("CD2A32A", "CHECK THAT WHEN A SIZE SPECIFICATION IS " & + "GIVEN FOR AN INTEGER TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE WITH " & + "THE SMALLEST APPROPRIATE SIGNED SIZE ARE " & + "NOT AFFECTED BY THE REPRESENTATION CLAUSE"); + + CHECK_1 (I1, 7, "INT"); + + PROC (-63, 63, I2, I3, I3); + + IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INT'SIZE"); + END IF; + + IF I1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR I1'SIZE"); + END IF; + + IF NOT ((I1 < IDENT (0)) AND + (IDENT (I3) > IDENT (I2)) AND + (I2 <= IDENT (0)) AND + (IDENT (63) = I3)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 2"); + END IF; + + IF NOT (((I1 + I3) = I2) AND + ((I2 - I3) = I1) AND + ((I3 * I2) = I2) AND + ((I2 / I1) = I2) AND + ((I1 ** 1) = I1) AND + ((I1 REM 10) = IDENT (-3)) AND + ((I3 MOD 10) = IDENT (3))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 2"); + END IF; + + IF INT'FIRST /= IDENT (-63) THEN + FAILED ("INCORRECT VALUE FOR INT'FIRST - 2"); + END IF; + + IF INT'POS (I1) /= IDENT_INT (-63) OR + INT'POS (I2) /= IDENT_INT ( 0) OR + INT'POS (I3) /= IDENT_INT ( 63) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 2"); + END IF; + + IF INT'SUCC (I1) /= IDENT (-62) OR + INT'SUCC (I2) /= IDENT (1) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 2"); + END IF; + + IF INT'IMAGE (I1) /= IDENT_STR ("-63") OR + INT'IMAGE (I2) /= IDENT_STR (" 0") OR + INT'IMAGE (I3) /= IDENT_STR (" 63") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 2"); + END IF; + + IF INTARRAY(0)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INTARRAY(0)'SIZE"); + END IF; + + IF NOT ((INTARRAY(-1) < IDENT (0)) AND + (IDENT (INTARRAY (1)) > IDENT (INTARRAY(0))) AND + (INTARRAY(0) <= IDENT (0)) AND + (IDENT (63) = INTARRAY (1))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3"); + END IF; + + FOR I IN IDENT (INTARRAY(-1)) .. IDENT (INTARRAY(1)) LOOP + IF NOT (I IN INTARRAY(-1) .. INTARRAY(1)) OR + (I NOT IN IDENT(-63) .. IDENT(63)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + END LOOP; + + IF NOT ((+INTARRAY(-1) = INTARRAY(-1)) AND + (-INTARRAY( 1) = INTARRAY(-1)) AND + (ABS INTARRAY(-1) = INTARRAY(1))) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 3"); + END IF; + + IF INT'VAL (-63) /= IDENT (INTARRAY (-1)) OR + INT'VAL ( 0) /= IDENT (INTARRAY ( 0)) OR + INT'VAL ( 63) /= IDENT (INTARRAY ( 1)) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 3"); + END IF; + + IF INT'PRED (INTARRAY (0)) /= IDENT (-1) OR + INT'PRED (INTARRAY (1)) /= IDENT (62) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 3"); + END IF; + + IF INT'VALUE ("-63") /= IDENT (INTARRAY (-1)) OR + INT'VALUE ("0") /= IDENT (INTARRAY ( 0)) OR + INT'VALUE ("63") /= IDENT (INTARRAY ( 1)) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 3"); + END IF; + + IF IREC.COMPP'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR IREC.COMPP'SIZE"); + END IF; + + IF NOT ((IREC.COMPN < IDENT (0)) AND + (IDENT (IREC.COMPP) > IDENT (IREC.COMPZ)) AND + (IREC.COMPZ <= IDENT (0)) AND + (IDENT (63) = IREC.COMPP)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4"); + END IF; + + FOR I IN IDENT (IREC.COMPN) .. IDENT (IREC.COMPP) LOOP + IF NOT (I IN IREC.COMPN .. IREC.COMPP) OR + (I NOT IN IDENT(-63) .. IDENT(63)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + END LOOP; + + IF NOT (((IREC.COMPN + IREC.COMPP) = IREC.COMPZ) AND + ((IREC.COMPZ - IREC.COMPP) = IREC.COMPN) AND + ((IREC.COMPP * IREC.COMPZ) = IREC.COMPZ) AND + ((IREC.COMPZ / IREC.COMPN) = IREC.COMPZ) AND + ((IREC.COMPN ** 1) = IREC.COMPN) AND + ((IREC.COMPN REM 10) = IDENT (-3)) AND + ((IREC.COMPP MOD 10) = IDENT ( 3))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 4"); + END IF; + + IF INT'POS (IREC.COMPN) /= IDENT_INT (-63) OR + INT'POS (IREC.COMPZ) /= IDENT_INT ( 0) OR + INT'POS (IREC.COMPP) /= IDENT_INT ( 63) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 4"); + END IF; + + IF INT'SUCC (IREC.COMPN) /= IDENT (-62) OR + INT'SUCC (IREC.COMPZ) /= IDENT ( 1) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 4"); + END IF; + + IF INT'IMAGE (IREC.COMPN) /= IDENT_STR ("-63") OR + INT'IMAGE (IREC.COMPZ) /= IDENT_STR (" 0") OR + INT'IMAGE (IREC.COMPP) /= IDENT_STR (" 63") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 4"); + END IF; + + RESULT; +END CD2A32A; Index: cd2a32c.ada =================================================================== --- cd2a32c.ada (nonexistent) +++ cd2a32c.ada (revision 338) @@ -0,0 +1,128 @@ +-- CD2A32C.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 A SIZE SPECIFICATION FOR AN INTEGER TYPE OF THE +-- SMALLEST APPROPRIATE SIGNED SIZE CAN BE GIVEN: +-- IN THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TYPE +-- DECLARED IN THE VISIBLE PART; +-- FOR A DERIVED INTEGER TYPE; +-- FOR A DERIVED PRIVATE TYPE WHOSE FULL DECLARATION IS AS +-- AN INTEGER TYPE; +-- FOR AN INTEGER TYPE IN A GENERIC UNIT. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 7, CHANGED OPERATOR ON 'SIZE +-- CHECKS, ADDED REPRESENTAION CLAUSE CHECK, AND +-- ADDED CHECK ON INTEGER IN A GENERIC UNIT. +-- BCB 10/03/90 CHANGED FAILED MESSAGES FROM "SHOULD NOT BE GREATER +-- THAN" TO "MUST BE EQUAL TO". +-- JRL 03/27/92 REMOVED TESTING OF NONOBJECTIVE TYPES. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A32C IS + + TYPE BASIC_INT IS RANGE -63 .. 63; + SPECIFIED_SIZE : CONSTANT := 7; + + TYPE DERIVED_INT IS NEW BASIC_INT; + FOR DERIVED_INT'SIZE USE SPECIFIED_SIZE; + + PACKAGE P IS + TYPE INT_IN_P IS RANGE -63 .. 63; + FOR INT_IN_P'SIZE USE SPECIFIED_SIZE; + TYPE PRIVATE_INT IS PRIVATE; + TYPE ALT_INT_IN_P IS RANGE -63 .. 63; + PRIVATE + TYPE PRIVATE_INT IS RANGE -63 .. 63; + FOR ALT_INT_IN_P'SIZE USE SPECIFIED_SIZE; + END P; + + USE P; + + GENERIC + PACKAGE GENPACK IS + TYPE GEN_CHECK_INT IS RANGE -63 .. 63; + FOR GEN_CHECK_INT'SIZE USE SPECIFIED_SIZE; + END GENPACK; + + PACKAGE NEWPACK IS NEW GENPACK; + + USE NEWPACK; + TYPE DERIVED_PRIVATE_INT IS NEW PRIVATE_INT; + FOR DERIVED_PRIVATE_INT'SIZE USE SPECIFIED_SIZE; + + MINIMUM_SIZE : INTEGER := IDENT_INT(SPECIFIED_SIZE); + +BEGIN + + TEST("CD2A32C", "CHECK THAT A SIZE SPECIFICATION " & + "FOR AN INTEGER TYPE OF THE SMALLEST " & + "APPROPRIATE SIGNED SIZE CAN BE GIVEN: IN THE " & + "VISIBLE OR PRIVATE PART OF A PACKAGE FOR A " & + "TYPE DECLARED IN THE VISIBLE PART; FOR A " & + "DERIVED INTEGER TYPE; FOR A DERIVED PRIVATE " & + "TYPE WHOSE FULL DECLARATION IS AS AN INTEGER " & + "TYPE; FOR AN INTEGER TYPE IN A GENERIC UNIT"); + + IF DERIVED_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_INT'SIZE MUST BE EQUAL TO" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_INT'SIZE)); + END IF; + + IF INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("INT_IN_P'SIZE MUST BE EQUAL TO" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(INT_IN_P'SIZE)); + END IF; + + IF ALT_INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("ALT_INT_IN_P'SIZE MUST BE EQUAL TO" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(ALT_INT_IN_P'SIZE)); + END IF; + + IF DERIVED_PRIVATE_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_PRIVATE_INT'SIZE MUST BE EQUAL TO " & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_PRIVATE_INT'SIZE)); + END IF; + + IF GEN_CHECK_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("GEN_CHECK_INT'SIZE MUST BE EQUAL TO" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(GEN_CHECK_INT'SIZE)); + END IF; + + RESULT; + +END CD2A32C; Index: cd2a32e.ada =================================================================== --- cd2a32e.ada (nonexistent) +++ cd2a32e.ada (revision 338) @@ -0,0 +1,263 @@ +-- CD2A32E.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN +-- INTEGER TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- WITH THE SMALLEST APPROPRIATE UNSIGNED SIZE ARE NOT +-- AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 7, AND CHANGED OPERATOR ON +-- 'SIZE CHECKS. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A32E IS + + BASIC_SIZE : CONSTANT := 7; + + TYPE INT IS RANGE 0 .. 126; + + FOR INT'SIZE USE BASIC_SIZE; + + I0 : INT := 0; + I1 : INT := 63; + I2 : INT := 126; + + TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE 0 .. 2) OF INT; + INTARRAY : ARRAY_TYPE := (0, 63, 126); + + TYPE REC_TYPE IS RECORD + COMP0 : INT := 0; + COMP1 : INT := 63; + COMP2 : INT := 126; + END RECORD; + + IREC : REC_TYPE; + + FUNCTION IDENT (I : INT) RETURN INT IS + BEGIN + IF EQUAL (0,0) THEN + RETURN I; + ELSE + RETURN 0; + END IF; + END IDENT; + + PROCEDURE PROC (PI0, PI2 : INT; + PIO1, PIO2 : IN OUT INT; + PO2 : OUT INT) IS + + BEGIN + IF PI0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR PI0'SIZE"); + END IF; + + IF NOT ((PI0 < IDENT (1)) AND + (IDENT (PI2) > IDENT (PIO1)) AND + (PIO1 <= IDENT (63)) AND + (IDENT (126) = PI2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS - 1"); + END IF; + + IF NOT (((PI0 + PI2) = PIO2) AND + ((PI2 - PIO1) = PIO1) AND + ((PIO1 * IDENT (2)) = PI2) AND + ((PIO2 / PIO1) = IDENT (2)) AND + ((PIO1 ** 1) = IDENT (63)) AND + ((PIO2 REM 10) = IDENT (6)) AND + ((PIO1 MOD 10) = IDENT (3))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 1"); + END IF; + + IF INT'POS (PI0) /= IDENT_INT (0) OR + INT'POS (PIO1) /= IDENT_INT (63) OR + INT'POS (PI2) /= IDENT_INT (126) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 1"); + END IF; + + IF INT'SUCC (PI0) /= IDENT (1) OR + INT'SUCC (PIO1) /= IDENT (64) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 1"); + END IF; + + IF INT'IMAGE (PI0) /= IDENT_STR (" 0") OR + INT'IMAGE (PIO1) /= IDENT_STR (" 63") OR + INT'IMAGE (PI2) /= IDENT_STR (" 126") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 1"); + END IF; + + PO2 := 126; + + END PROC; + +BEGIN + TEST ("CD2A32E", "CHECK THAT WHEN A SIZE SPECIFICATION IS " & + "GIVEN FOR AN INTEGER TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE WITH " & + "THE SMALLEST APPROPRIATE UNSIGNED SIZE ARE " & + "NOT AFFECTED BY THE REPRESENTATION CLAUSE"); + + PROC (0, 126, I1, I2, I2); + + IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INT'SIZE"); + END IF; + + IF I1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR I1'SIZE"); + END IF; + + FOR I IN IDENT (I0) .. IDENT (I2) LOOP + IF NOT (I IN I0 .. I2) OR + (I NOT IN IDENT(0) .. IDENT(126)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 2"); + END IF; + END LOOP; + + IF NOT ((+I2 = I2) AND + (-I1 = -63) AND + (ABS I2 = I2)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 2"); + END IF; + + IF INT'VAL (0) /= IDENT (I0) OR + INT'VAL (63) /= IDENT (I1) OR + INT'VAL (126) /= IDENT (I2) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 2"); + END IF; + + IF INT'PRED (I1) /= IDENT (62) OR + INT'PRED (I2) /= IDENT (125) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 2"); + END IF; + + IF INT'VALUE ("0") /= IDENT (I0) OR + INT'VALUE ("63") /= IDENT (I1) OR + INT'VALUE ("126") /= IDENT (I2) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 2"); + END IF; + + IF INTARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INTARRAY(1)'SIZE"); + END IF; + + IF NOT ((INTARRAY(0) < IDENT (1)) AND + (IDENT (INTARRAY(2)) > IDENT (INTARRAY(1))) AND + (INTARRAY(1) <= IDENT (63)) AND + (IDENT (126) = INTARRAY(2))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS - 3"); + END IF; + + FOR I IN IDENT (INTARRAY(0)) .. IDENT (INTARRAY(2)) LOOP + IF NOT (I IN INTARRAY(0) .. INTARRAY(2)) OR + (I NOT IN IDENT(0) .. IDENT(126)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + END LOOP; + + IF NOT (((INTARRAY(0) + INTARRAY(2)) = INTARRAY(2)) AND + ((INTARRAY(2) - INTARRAY(1)) = INTARRAY(1)) AND + ((INTARRAY(1) * IDENT (2)) = INTARRAY(2)) AND + ((INTARRAY(2) / INTARRAY(1)) = IDENT (2)) AND + ((INTARRAY(1) ** 1) = IDENT (63)) AND + ((INTARRAY(2) REM 10) = IDENT (6)) AND + ((INTARRAY(1) MOD 10) = IDENT (3))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 3"); + END IF; + + IF INT'POS (INTARRAY(0)) /= IDENT_INT (0) OR + INT'POS (INTARRAY(1)) /= IDENT_INT (63) OR + INT'POS (INTARRAY(2)) /= IDENT_INT (126) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 3"); + END IF; + + IF INT'SUCC (INTARRAY(0)) /= IDENT (1) OR + INT'SUCC (INTARRAY(1)) /= IDENT (64) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 3"); + END IF; + + IF INT'IMAGE (INTARRAY(0)) /= IDENT_STR (" 0") OR + INT'IMAGE (INTARRAY(1)) /= IDENT_STR (" 63") OR + INT'IMAGE (INTARRAY(2)) /= IDENT_STR (" 126") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 3"); + END IF; + + IF IREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR IREC.COMP2'SIZE"); + END IF; + + IF NOT ((IREC.COMP0 < IDENT (1)) AND + (IDENT (IREC.COMP2) > IDENT (IREC.COMP1)) AND + (IREC.COMP1 <= IDENT (63)) AND + (IDENT (126) = IREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS - 4"); + END IF; + + FOR I IN IDENT (IREC.COMP0) .. IDENT (IREC.COMP2) LOOP + IF NOT (I IN IREC.COMP0 .. IREC.COMP2) OR + (I NOT IN IDENT(0) .. IDENT(126)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + END LOOP; + + IF NOT ((+IREC.COMP2 = IREC.COMP2) AND + (-IREC.COMP1 = -63) AND + (ABS IREC.COMP2 = IREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 4"); + END IF; + + IF INT'VAL (0) /= IDENT (IREC.COMP0) OR + INT'VAL (63) /= IDENT (IREC.COMP1) OR + INT'VAL (126) /= IDENT (IREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 4"); + END IF; + + IF INT'PRED (IREC.COMP1) /= IDENT (62) OR + INT'PRED (IREC.COMP2) /= IDENT (125) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 4"); + END IF; + + IF INT'VALUE ("0") /= IDENT (IREC.COMP0) OR + INT'VALUE ("63") /= IDENT (IREC.COMP1) OR + INT'VALUE ("126") /= IDENT (IREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 4"); + END IF; + + RESULT; + +END CD2A32E; Index: cd2a32g.ada =================================================================== --- cd2a32g.ada (nonexistent) +++ cd2a32g.ada (revision 338) @@ -0,0 +1,131 @@ +-- CD2A32G.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 A SIZE SPECIFICATION FOR AN INTEGER +-- TYPE OF THE SMALLEST APPROPRIATE UNSIGNED SIZE CAN BE GIVEN: +-- IN THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TYPE +-- DECLARED IN THE VISIBLE PART; +-- FOR A DERIVED INTEGER TYPE; +-- FOR A DERIVED PRIVATE TYPE WHOSE FULL DECLARATION IS AS +-- AN INTEGER TYPE; +-- FOR AN INTEGER TYPE GIVEN IN A GENERIC UNIT. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 7, CHANGED OPERATOR ON 'SIZE +-- CHECKS, AND ADDED CHECK FOR 'SIZE IN A GENERIC +-- UNIT. +-- JRL 03/27/92 REMOVED TESTING OF NONOBJECTIVE TYPES. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A32G IS + + TYPE BASIC_INT IS RANGE 0 .. 126; + SPECIFIED_SIZE : CONSTANT := 7; + + TYPE DERIVED_INT IS NEW BASIC_INT; + FOR DERIVED_INT'SIZE USE SPECIFIED_SIZE; + + PACKAGE P IS + TYPE INT_IN_P IS RANGE 0 .. 126; + FOR INT_IN_P'SIZE USE SPECIFIED_SIZE; + TYPE PRIVATE_INT IS PRIVATE; + TYPE ALT_INT_IN_P IS RANGE 0 .. 126; + PRIVATE + TYPE PRIVATE_INT IS RANGE 0 .. 126; + FOR ALT_INT_IN_P'SIZE USE SPECIFIED_SIZE; + END P; + + USE P; + + TYPE DERIVED_PRIVATE_INT IS NEW PRIVATE_INT; + FOR DERIVED_PRIVATE_INT'SIZE USE SPECIFIED_SIZE; + + MINIMUM_SIZE : INTEGER := IDENT_INT(SPECIFIED_SIZE); + + GENERIC + PROCEDURE GENPROC; + + PROCEDURE GENPROC IS + TYPE GEN_CHECK_INT IS RANGE 0 .. 126; + FOR GEN_CHECK_INT'SIZE USE SPECIFIED_SIZE; + + BEGIN + + IF GEN_CHECK_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("GEN_CHECK_INT'SIZE SHOULD NOT BE GREATER " & + "THAN" & INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(GEN_CHECK_INT'SIZE)); + END IF; + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC; + +BEGIN + + TEST("CD2A32G", "CHECK THAT SIZE SPECIFICATIONS OF THE SMALLEST " & + "APPROPRIATE UNSIGNED SIZE CAN BE GIVEN " & + "IN THE VISIBLE OR PRIVATE PART OF PACKAGE FOR " & + "AN INTEGER TYPE DECLARED IN VISIBLE PART, " & + "FOR DERIVED INTEGER " & + "TYPES AND DERIVED PRIVATE TYPES WHOSE FULL " & + "DECLARATION IS AS AN INTEGER TYPE AND FOR AN " & + "INTEGER TYPE GIVEN IN A GENERIC UNIT"); + + IF DERIVED_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_INT'SIZE SHOULD NOT BE GREATER THAN" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_INT'SIZE)); + END IF; + + IF INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("INT_IN_P'SIZE SHOULD NOT BE GREATER THAN" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(INT_IN_P'SIZE)); + END IF; + + IF ALT_INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("ALT_INT_IN_P'SIZE SHOULD NOT BE GREATER THAN" & + INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(ALT_INT_IN_P'SIZE)); + END IF; + + IF DERIVED_PRIVATE_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_PRIVATE_INT'SIZE SHOULD NOT BE GREATER " & + "THAN" & INTEGER'IMAGE(MINIMUM_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_PRIVATE_INT'SIZE)); + END IF; + + NEWPROC; + + RESULT; + +END CD2A32G; Index: cdd1001.a =================================================================== --- cdd1001.a (nonexistent) +++ cdd1001.a (revision 338) @@ -0,0 +1,94 @@ +-- CDD1001.A +-- +-- Grant of Unlimited Rights +-- +-- The Ada Conformity Assessment Authority (ACAA) holds unlimited +-- rights in the software and documentation contained herein. Unlimited +-- rights are the same as those granted by the U.S. Government for older +-- parts of the Ada Conformity Assessment Test Suite, and are defined +-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA +-- intends to confer upon all recipients unlimited rights equal to those +-- held by the ACAA. 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 components of Stream_Element_Array are aliased. (Defect +-- Report 8652/0044). +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations for which Stream_Element'Size is a multiple of +-- System.Storage_Unit, this test must execute. +-- +-- For other implementations, if this test compiles without error messages +-- at compilation, it must bind and execute. +-- +-- PASS/FAIL CRITERIA: +-- For implementations for which Stream_Element'Size is a multiple of +-- System.Storage_Unit, this test must execute, report PASSED, and +-- complete normally, otherwise the test FAILS. +-- +-- For other implementations: +-- PASSING behavior is: +-- this test executes, reports PASSED, and completes normally +-- or +-- this test produces at least one error message at compilation, and +-- the error message is associated with one of the items marked: +-- -- N/A => ERROR. +-- +-- All other behaviors are FAILING. +-- +-- +-- CHANGE HISTORY: +-- 12 FEB 2001 PHL Initial version +-- 15 MAR 2001 RLB Readied for release. + +--! +with Ada.Streams; +use Ada.Streams; +with Report; +use Report; +procedure CDD1001 is + + type Acc is access all Stream_Element; + + A : Stream_Element_Array + (Stream_Element_Offset (Ident_Int (1)) .. + Stream_Element_Offset (Ident_Int (10))); + B : array (A'Range) of Acc; +begin + Test ("CDD1001", + "Check that components of Stream_Element_Array are aliased"); + + for I in A'Range loop + A (I) := Stream_Element (Ident_Int (Integer (I)) * Ident_Int (3)); + end loop; + + for I in B'Range loop + B (I) := A (I)'Access; -- N/A => ERROR. + end loop; + + for I in B'Range loop + if B (I).all /= Stream_Element + (Ident_Int (Integer (I)) * Ident_Int (3)) then + Failed ("Unable to build access values desginating elements " & + "of a Stream_Element_Array"); + end if; + end loop; + + Result; +end CDD1001; + Index: cd2a32i.ada =================================================================== --- cd2a32i.ada (nonexistent) +++ cd2a32i.ada (revision 338) @@ -0,0 +1,135 @@ +-- CD2A32I.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 WHEN A SIZE SPECIFICATION OF THE SMALLEST APPROPRIATE +-- SIGNED SIZE IS GIVEN FOR AN INTEGER TYPE, THE TYPE CAN +-- BE PASSED AS AN ACTUAL PARAMETER TO GENERIC PROCEDURES. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- DHH 04/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 7, AND CHANGED OPERATOR ON +-- 'SIZE CHECKS. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A32I IS + + TYPE BASIC_INT IS RANGE -63 .. 63; + BASIC_SIZE : CONSTANT := 7; + + FOR BASIC_INT'SIZE USE BASIC_SIZE; + +BEGIN + + TEST ("CD2A32I", "CHECK THAT WHEN A SIZE SPECIFICATION " & + "OF THE SMALLEST APPROPRIATE SIGNED SIZE " & + "IS GIVEN FOR AN INTEGER TYPE, " & + "THE TYPE " & + "CAN BE PASSED AS AN ACTUAL PARAMETER TO " & + "GENERIC PROCEDURES"); + + DECLARE -- TYPE DECLARATION WITHIN GENERIC PROCEDURE. + + GENERIC + TYPE GPARM IS RANGE <>; + PROCEDURE GENPROC; + + PROCEDURE GENPROC IS + + SUBTYPE INT IS GPARM; + + I1 : INT := -63; + I2 : INT := 0; + I3 : INT := 63; + + FUNCTION IDENT (I : INT) RETURN INT IS + BEGIN + IF EQUAL (0,0) THEN + RETURN I; + ELSE + RETURN 0; + END IF; + END IDENT; + + BEGIN -- GENPROC. + + IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INT'SIZE"); + END IF; + + IF I1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR I1'SIZE"); + END IF; + + FOR I IN IDENT (I1) .. IDENT (I3) LOOP + IF NOT (I IN I1 .. I3) OR + (I NOT IN IDENT(-63) .. IDENT(63)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS"); + END IF; + END LOOP; + + IF NOT ((+I1 = I1) AND + (-I3 = I1) AND + (ABS I1 = I3)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS"); + END IF; + + IF INT'LAST /= IDENT (63) THEN + FAILED ("INCORRECT VALUE FOR INT'LAST"); + END IF; + + IF INT'VAL (-63) /= IDENT (I1) OR + INT'VAL (0) /= IDENT (I2) OR + INT'VAL (63) /= IDENT (I3) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL"); + END IF; + + IF INT'PRED (I2) /= IDENT (-1) OR + INT'PRED (I3) /= IDENT (62) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED"); + END IF; + + IF INT'VALUE ("-63") /= IDENT (I1) OR + INT'VALUE (" 0") /= IDENT (I2) OR + INT'VALUE (" 63") /= IDENT (I3) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE"); + END IF; + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC (BASIC_INT); + + BEGIN + + NEWPROC; + + END; + + RESULT; + +END CD2A32I; Index: cd2a24j.ada =================================================================== --- cd2a24j.ada (nonexistent) +++ cd2a24j.ada (revision 338) @@ -0,0 +1,124 @@ +-- CD2A24J.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 IF A SIZE CLAUSE (SPECIFYING THE SMALLEST APPROPRIATE +-- SIZE FOR AN UNSIGNED REPRESENTATION) AND AN ENUMERATION +-- REPRESENTATION CLAUSE ARE GIVEN FOR AN ENUMERATION TYPE, +-- THEN THE TYPE CAN BE USED AS AN ACTUAL PARAMETER IN AN +-- INSTANTIATION. + +-- HISTORY: +-- JET 08/19/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- WMC 03/27/92 ELIMINATED TEST REDUNDANCIES. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A24J IS + + TYPE BASIC_ENUM IS (ZERO, ONE, TWO); + BASIC_SIZE : CONSTANT := 3; + + FOR BASIC_ENUM USE (ZERO => 3, ONE => 4, + TWO => 5); + FOR BASIC_ENUM'SIZE USE BASIC_SIZE; + +BEGIN + TEST ("CD2A24J", "CHECK THAT IF A SIZE CLAUSE (SPECIFYING THE " & + "SMALLEST APPROPRIATE SIZE FOR AN UNSIGNED " & + "REPRESENTATION) AND AN ENUMERATION " & + "REPRESENTATION CLAUSE ARE GIVEN FOR AN " & + "ENUMERATION TYPE, THEN THE TYPE CAN BE USED " & + "AS AN ACTUAL PARAMETER IN AN INSTANTIATION"); + + + DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE. + + GENERIC + TYPE GPARM IS (<>); + PROCEDURE GENPROC (C0, C1, C2: GPARM); + + PROCEDURE GENPROC (C0, C1, C2: GPARM) IS + + SUBTYPE CHECK_TYPE IS GPARM; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN C1; + END IF; + END IDENT; + + BEGIN -- GENPROC. + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((IDENT (C1) IN C1 .. C2) AND + (C0 NOT IN IDENT (C1) .. C2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS"); + END IF; + + IF CHECK_TYPE'LAST /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR + CHECK_TYPE'VAL (1) /= IDENT (C1) OR + CHECK_TYPE'VAL (2) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL"); + END IF; + + IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR + CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE"); + END IF; + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM); + + BEGIN + + NEWPROC (ZERO, ONE, TWO); + + END; + + RESULT; + +END CD2A24J; Index: cd5013a.ada =================================================================== --- cd5013a.ada (nonexistent) +++ cd5013a.ada (revision 338) @@ -0,0 +1,72 @@ +-- CD5013A.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF AN ENUMERATION TYPE, +-- WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013A IS + + TYPE ENUM_TYPE IS (ONE,TWO,THREE,FOUR,FIVE,SIX); + + PACKAGE PACK IS + CHECK_TYPE : ENUM_TYPE; + FOR CHECK_TYPE USE AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013A", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE VISIBLE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF AN ENUMERATION TYPE, WHERE " & + "THE VARIABLE IS DECLARED IN THE VISIBLE PART " & + "OF THE SPECIFICATION"); + + CHECK_TYPE := ONE; + IF EQUAL(3,3) THEN + CHECK_TYPE := THREE; + END IF; + + IF CHECK_TYPE /= THREE THEN + FAILED ("INCORRECT VALUE FOR ENUMERATION VARIABLE"); + END IF; + + IF CHECK_TYPE'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR ENUMERATION VARIABLE"); + END IF; + + RESULT; +END CD5013A; Index: cd1009a.ada =================================================================== --- cd1009a.ada (nonexistent) +++ cd1009a.ada (revision 338) @@ -0,0 +1,80 @@ +-- CD1009A.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 A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE +-- OR PRIVATE PART OF A PACKAGE FOR AN INTEGER TYPE DECLARED IN +-- THE VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- VCL 09/18/87 CREATED ORIGINAL TEST. +-- DHH 03/31/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND ADDED +-- CHECK FOR REPRESENTATION CLAUSES, AND CHANGED +-- SPECIFIED_SIZE TO 5. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1009A IS +BEGIN + TEST ("CD1009A", "A 'SIZE CLAUSE MAY BE GIVEN IN THE VISIBLE " & + "OR PRIVATE PART OF A PACKAGE FOR AN INTEGER " & + "TYPE DECLARED IN THE VISIBLE PART OF THE " & + "SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := 5; + + TYPE CHECK_TYPE_1 IS RANGE -8 .. 7; + FOR CHECK_TYPE_1'SIZE USE SPECIFIED_SIZE; + TYPE PACK_ARY IS ARRAY(1 .. 6) OF CHECK_TYPE_1; + PRAGMA PACK (PACK_ARY); + OBJ1 : PACK_ARY := (OTHERS => -7); + + TYPE CHECK_TYPE_2 IS RANGE -8 .. 7; + PRIVATE + FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE; + OBJ2 : CHECK_TYPE_2 := -7; + PROCEDURE CHECK1 IS NEW LENGTH_CHECK (CHECK_TYPE_1); + PROCEDURE CHECK2 IS NEW LENGTH_CHECK (CHECK_TYPE_2); + END PACK; + + PACKAGE BODY PACK IS + BEGIN + CHECK1 (OBJ1(IDENT_INT(1)), 5, "CHECK_TYPE_1"); + CHECK2 (OBJ2, 5, "CHECK_TYPE_2"); + END PACK; + + USE PACK; + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE"); + END IF; + + IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE"); + END IF; + END; + + RESULT; +END CD1009A; Index: cd5013c.ada =================================================================== --- cd5013c.ada (nonexistent) +++ cd5013c.ada (revision 338) @@ -0,0 +1,73 @@ +-- CD5013C.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF AN INTEGER TYPE, WHERE +-- THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013C IS + + TYPE INT_TYPE IS RANGE INTEGER'FIRST .. INTEGER'LAST; + + PACKAGE PACK IS + CHECK_VAR : INT_TYPE; + PRIVATE + FOR CHECK_VAR USE AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013C", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE PRIVATE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF AN INTEGER TYPE, WHERE THE " & + "VARIABLE IS DECLARED IN THE VISIBLE PART OF " & + "THE SPECIFICATION"); + + CHECK_VAR := 100; + IF EQUAL(3,3) THEN + CHECK_VAR := 10; + END IF; + + IF CHECK_VAR /= 10 THEN + FAILED ("INCORRECT VALUE FOR INTEGER VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR INTEGER VARIABLE"); + END IF; + + RESULT; +END CD5013C; Index: cd5013e.ada =================================================================== --- cd5013e.ada (nonexistent) +++ cd5013e.ada (revision 338) @@ -0,0 +1,72 @@ +-- CD5013E.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF A FLOATING POINT TYPE, +-- WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013E IS + + TYPE FLT_TYPE IS DIGITS 5 RANGE -1.0 .. 1.0; + + PACKAGE PACK IS + CHECK_VAR : FLT_TYPE; + FOR CHECK_VAR USE AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013E", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE VISIBLE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF A FLOATING POINT TYPE, " & + "WHERE THE VARIABLE IS DECLARED IN THE VISIBLE " & + "PART OF THE SPECIFICATION"); + + CHECK_VAR := 0.5; + IF EQUAL(3,3) THEN + CHECK_VAR := 0.0; + END IF; + + IF CHECK_VAR /= 0.0 THEN + FAILED ("INCORRECT VALUE FOR FLOATING POINT VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FLOATING POINT VARIABLE"); + END IF; + + RESULT; +END CD5013E; Index: cd1009e.ada =================================================================== --- cd1009e.ada (nonexistent) +++ cd1009e.ada (revision 338) @@ -0,0 +1,82 @@ +-- CD1009E.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 A 'SIZE' SPECIFICATION MAY BE GIVEN IN THE VISIBLE +-- OR PRIVATE PART OF A PACKAGE FOR A ONE-DIMENSIONAL ARRAY TYPE +-- DECLARED IN THE VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST +-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- VCL 10/07/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009E IS +BEGIN + TEST ("CD1009E", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE VISIBLE " & + "OR PRIVATE PART OF A PACKAGE FOR A " & + "ONE-DIMENSIONAL ARRAY TYPE DECLARED IN THE " & + "VISIBLE PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE * 5; + + TYPE CHECK_TYPE_1 IS ARRAY (1 ..5) OF INTEGER; + FOR CHECK_TYPE_1'SIZE + USE SPECIFIED_SIZE; + X : CHECK_TYPE_1 := (OTHERS => IDENT_INT(1)); + + TYPE CHECK_TYPE_2 IS ARRAY (1 ..5) OF INTEGER; + PRIVATE + FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE; + END PACK; + + USE PACK; + + Y : CHECK_TYPE_2 := (OTHERS => IDENT_INT(5)); + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT"); + END IF; + + IF X'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " & + "FIRST VALUE IS" & + INTEGER'IMAGE( X( IDENT_INT(1) ) ) ); + END IF; + + IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_2'SIZE IS INCORRECT"); + END IF; + + IF Y'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_2. " & + "FIRST VALUE IS" & + INTEGER'IMAGE( Y( IDENT_INT(1) ) ) ); + END IF; + END; + + RESULT; +END CD1009E; Index: cd5013g.ada =================================================================== --- cd5013g.ada (nonexistent) +++ cd5013g.ada (revision 338) @@ -0,0 +1,74 @@ +-- CD5013G.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF A FIXED POINT TYPE, +-- WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013G IS + + TYPE FIX_TYPE IS DELTA 0.5 RANGE -7.5 .. 7.5; + + PACKAGE PACK IS + CHECK_VAR : FIX_TYPE; + PRIVATE + FOR CHECK_VAR USE + AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013G", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE PRIVATE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF A FIXED POINT TYPE, " & + "WHERE THE VARIABLE IS DECLARED IN THE VISIBLE " & + "PART OF THE SPECIFICATION"); + + CHECK_VAR := 1.5; + IF EQUAL(3,3) THEN + CHECK_VAR := 5.0; + END IF; + + IF CHECK_VAR /= 5.0 THEN + FAILED ("INCORRECT VALUE FOR FIXED POINT VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FIXED POINT VARIABLE"); + END IF; + + RESULT; +END CD5013G; Index: cd1009g.ada =================================================================== --- cd1009g.ada (nonexistent) +++ cd1009g.ada (revision 338) @@ -0,0 +1,86 @@ +-- CD1009G.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 A 'SIZE' SPECIFICATION MAY BE GIVEN IN THE VISIBLE +-- OR PRIVATE PART OF A PACKAGE FOR A RECORD TYPE DECLARED IN +-- THE VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST +-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- VCL 10/07/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009G IS +BEGIN + TEST ("CD1009G", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE VISIBLE " & + "OR PRIVATE PART OF A PACKAGE FOR A " & + "RECORD TYPE DECLARED IN THE " & + "VISIBLE PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE; + + TYPE CHECK_TYPE_1 IS + RECORD + I : INTEGER; + END RECORD; + FOR CHECK_TYPE_1'SIZE + USE SPECIFIED_SIZE; + X : CHECK_TYPE_1 := ( I => IDENT_INT (1) ); + + TYPE CHECK_TYPE_2 IS + RECORD + I : INTEGER; + END RECORD; + PRIVATE + FOR CHECK_TYPE_2'SIZE USE SPECIFIED_SIZE; + END PACK; + + USE PACK; + + Y : CHECK_TYPE_2 := ( I => IDENT_INT (5) ); + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT"); + END IF; + + IF X'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " & + "VALUE IS" & INTEGER'IMAGE( IDENT_INT( X.I) ) ); + END IF; + + IF CHECK_TYPE_2'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_2'SIZE IS INCORRECT"); + END IF; + + IF Y'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_2. " & + "VALUE IS" & INTEGER'IMAGE( IDENT_INT(Y.I) ) ); + END IF; + END; + + RESULT; +END CD1009G; Index: cd5013i.ada =================================================================== --- cd5013i.ada (nonexistent) +++ cd5013i.ada (revision 338) @@ -0,0 +1,73 @@ +-- CD5013I.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF AN ARRAY TYPE, WHERE +-- THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013I IS + + TYPE ARR_TYPE IS ARRAY(1..5) OF INTEGER; + + PACKAGE PACK IS + CHECK_VAR : ARR_TYPE; + FOR CHECK_VAR USE + AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013I", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE VISIBLE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF AN ARRAY TYPE, WHERE THE " & + "VARIABLE IS DECLARED IN THE VISIBLE PART OF " & + "THE SPECIFICATION"); + + CHECK_VAR := (1,2,3,4,5); + IF EQUAL(3,3) THEN + CHECK_VAR := (5,4,3,2,1); + END IF; + + IF CHECK_VAR /= (5,4,3,2,1) THEN + FAILED ("INCORRECT VALUE FOR ARRAY VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR ARRAY VARIABLE"); + END IF; + + RESULT; +END CD5013I; Index: cd1009i.ada =================================================================== --- cd1009i.ada (nonexistent) +++ cd1009i.ada (revision 338) @@ -0,0 +1,69 @@ +-- CD1009I.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 A 'SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE +-- PART OF A PACKAGE FOR A LIMITED-PRIVATE TYPE DECLARED IN THE +-- VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- VCL 09/18/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO 5, ADDED CHECK FOR +-- REPRESENTATION CLAUSES AND CHANGED THE TEST +-- EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1009I IS +BEGIN + TEST ("CD1009I", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE " & + "PRIVATE PART OF A PACKAGE FOR A LIMITED-" & + "PRIVATE TYPE DECLARED IN THE VISIBLE PART " & + "OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := 5; + + TYPE CHECK_TYPE_1 IS LIMITED PRIVATE; + PRIVATE + TYPE CHECK_TYPE_1 IS RANGE -8 .. 7; + FOR CHECK_TYPE_1'SIZE USE SPECIFIED_SIZE; + OBJ_CHECK : CHECK_TYPE_1 := -7; + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (CHECK_TYPE_1); + END PACK; + + PACKAGE BODY PACK IS + BEGIN + CHECK_1 (OBJ_CHECK, 5, "CHECK_TYPE_1"); + END PACK; + + USE PACK; + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE"); + END IF; + END; + + RESULT; +END CD1009I; Index: cd5013k.ada =================================================================== --- cd5013k.ada (nonexistent) +++ cd5013k.ada (revision 338) @@ -0,0 +1,78 @@ +-- CD5013K.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF A RECORD TYPE, WHERE +-- THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013K IS + + TYPE REC_TYPE IS RECORD + BOOL : BOOLEAN; + INT : INTEGER; + END RECORD; + + PACKAGE PACK IS + CHECK_VAR : REC_TYPE; + PRIVATE + FOR CHECK_VAR USE + AT VARIABLE_ADDRESS; + END PACK; + + PACKAGE BODY PACK IS + BEGIN + TEST ("CD5013K", "AN ADDRESS CLAUSE CAN BE GIVEN " & + "IN THE PRIVATE PART OF A PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A RECORD " & + "TYPE, WHERE THE VARIABLE IS DECLARED IN " & + "THE VISIBLE PART OF THE SPECIFICATION"); + + CHECK_VAR := (TRUE, IDENT_INT(5)); + IF EQUAL(3,3) THEN + CHECK_VAR := (FALSE, IDENT_INT(10)); + END IF; + + IF CHECK_VAR /= (FALSE, IDENT_INT (10)) THEN + FAILED ("INCORRECT VALUE FOR RECORD VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR RECORD VARIABLE"); + END IF; + END PACK; + +BEGIN + + RESULT; +END CD5013K; Index: cd5013m.ada =================================================================== --- cd5013m.ada (nonexistent) +++ cd5013m.ada (revision 338) @@ -0,0 +1,73 @@ +-- CD5013M.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF AN ACCESS TYPE, WHERE +-- THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013M IS + + TYPE ACC_TYPE IS ACCESS INTEGER; + + PACKAGE PACK IS + CHECK_VAR : ACC_TYPE; + FOR CHECK_VAR USE + AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + +BEGIN + + TEST ("CD5013M", "AN ADDRESS CLAUSE CAN BE GIVEN IN " & + "THE VISIBLE PART OF A PACKAGE SPECIFICATION " & + "FOR A VARIABLE OF AN ACCESS TYPE, WHERE THE " & + "VARIABLE IS DECLARED IN THE VISIBLE PART OF " & + "THE SPECIFICATION"); + + CHECK_VAR := NEW INTEGER'(100); + IF EQUAL(3,3) THEN + CHECK_VAR := NEW INTEGER'(25); + END IF; + + IF CHECK_VAR.ALL /= 25 THEN + FAILED ("INCORRECT VALUE FOR ACCESS VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR ACCESS VARIABLE"); + END IF; + + RESULT; +END CD5013M; Index: cd1009m.ada =================================================================== --- cd1009m.ada (nonexistent) +++ cd1009m.ada (revision 338) @@ -0,0 +1,81 @@ +-- CD1009M.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 AN ENUMERATION REPRESENTATION CLAUSE MAY BE GIVEN IN +-- THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR AN ENUMERATION +-- TYPE DECLARED IN THE VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- VCL 10/08/87 CREATED ORIGINAL TEST. +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1009M IS +BEGIN + TEST ("CD1009M", "AN ENUMERATION REPRESENTATION CLAUSE MAY BE " & + "GIVEN IN THE VISIBLE OR PRIVATE PART OF A " & + "PACKAGE FOR AN ENUMERATION TYPE DECLARED IN " & + "THE VISIBLE PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + TYPE CHECK_TYPE_1 IS (A0, A2, A4, A8); + FOR CHECK_TYPE_1 USE (A0 => 0, + A2 => 1, + A4 => 2, + A8 => 3); + + TYPE CHECK_TYPE_2 IS (A0, A2, A4, A8); + TYPE INT1 IS RANGE 0 .. 3; + FOR INT1'SIZE USE CHECK_TYPE_1'SIZE; + + TYPE INT2 IS RANGE 2 .. 8; + + PRIVATE + FOR CHECK_TYPE_2 USE (A0 => 2, + A2 => 4, + A4 => 6, + A8 => 8); + FOR INT2'SIZE USE CHECK_TYPE_2'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(CHECK_TYPE_1, INT1); + PROCEDURE CHECK_2 IS NEW ENUM_CHECK(CHECK_TYPE_2, INT2); + + END PACK; + + PACKAGE BODY PACK IS + BEGIN + CHECK_1 (A4, 2, "CHECK_TYPE_1"); + CHECK_2 (A8, 8, "CHECK_TYPE_2"); + END PACK; + + USE PACK; + BEGIN + NULL; + END; + + RESULT; +END CD1009M; Index: cd5013o.ada =================================================================== --- cd5013o.ada (nonexistent) +++ cd5013o.ada (revision 338) @@ -0,0 +1,83 @@ +-- CD5013O.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART OF +-- A PACKAGE SPECIFICATION FOR A VARIABLE OF A PRIVATE TYPE, WHERE +-- THE VARIABLE IS DECLARED IN THE VISIBLE PART OF THE +-- SPECIFICATION. + +-- HISTORY: +-- BCB 09/16/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH SPPRT13; USE SPPRT13; +WITH SYSTEM; USE SYSTEM; + +PROCEDURE CD5013O IS + + PACKAGE P1 IS + END P1; + + PACKAGE PACK IS + TYPE F IS PRIVATE; + PRIVATE + TYPE F IS NEW INTEGER; + CHECK_VAR : F; + FOR CHECK_VAR USE AT VARIABLE_ADDRESS; + END PACK; + + USE PACK; + + PACKAGE BODY P1 IS + BEGIN + TEST ("CD5013O", "AN ADDRESS CLAUSE CAN BE GIVEN" & + " IN THE PRIVATE PART OF A PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A " & + "PRIVATE TYPE, WHERE THE VARIABLE IS " & + "DECLARED IN THE VISIBLE PART OF THE " & + "SPECIFICATION"); + END P1; + + PACKAGE BODY PACK IS + BEGIN + CHECK_VAR := 100; + IF EQUAL(3,3) THEN + CHECK_VAR := 25; + END IF; + + IF CHECK_VAR /= 25 THEN + FAILED ("INCORRECT VALUE FOR PRIVATE VARIABLE"); + END IF; + + IF CHECK_VAR'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR PRIVATE VARIABLE"); + END IF; + END PACK; + +BEGIN + + RESULT; +END CD5013O; Index: cd1c03a.ada =================================================================== --- cd1c03a.ada (nonexistent) +++ cd1c03a.ada (revision 338) @@ -0,0 +1,84 @@ +-- CD1C03A.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 SIZE OF A DERIVED TYPE IS INHERITED FROM THE +-- PARENT IF THE SIZE OF THE PARENT WAS DETERMINED BY A SIZE +-- CLAUSE. + +-- HISTORY: +-- JET 09/16/87 CREATED ORIGINAL TEST. +-- DHH 03/30/89 CHANGED SPECIFIED_SIZE TO 5, ADDED CHECK ON +-- REPRESENTATION CLAUSES, AND CHANGED THE TEST +-- EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1C03A IS + + SPECIFIED_SIZE : CONSTANT := 5; + + TYPE PARENT_TYPE IS RANGE -8 .. 7; + + FOR PARENT_TYPE'SIZE USE SPECIFIED_SIZE; + PT : PARENT_TYPE := -7; + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + + DT : DERIVED_TYPE := -7; + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (DERIVED_TYPE); + PROCEDURE CHECK_2 IS NEW LENGTH_CHECK (PARENT_TYPE); + +BEGIN + + TEST("CD1C03A", "CHECK THAT THE SIZE OF A DERIVED TYPE IS " & + "INHERITED FROM THE PARENT IF THE SIZE OF " & + "THE PARENT WAS DETERMINED BY A SIZE CLAUSE"); + + IF PARENT_TYPE'SIZE /= IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("PARENT_TYPE'SIZE /= " & + INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(PARENT_TYPE'SIZE)); + END IF; + + IF DERIVED_TYPE'SIZE /= IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("DERIVED_TYPE'SIZE /= " & + INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_TYPE'SIZE)); + END IF; + + IF DT'SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("DT'SIZE SHOULD NOT BE LESS THAN" & + INTEGER'IMAGE(SPECIFIED_SIZE) & + ". ACTUAL SIZE IS" & + INTEGER'IMAGE(DT'SIZE)); + END IF; + + CHECK_1 (DT, 5, "DERIVED_TYPE"); + CHECK_2 (PT, 5, "PARENT_TYPE"); + RESULT; + +END CD1C03A; Index: cd1009o.ada =================================================================== --- cd1009o.ada (nonexistent) +++ cd1009o.ada (revision 338) @@ -0,0 +1,75 @@ +-- CD1009O.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 A 'SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE PART +-- OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL DECLARATION +-- IS AN INTEGER TYPE, DECLARED IN THE VISIBLE PART OF THE SAME +-- PACKAGE. + +-- HISTORY: +-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST +-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- VCL 10/08/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009O IS +BEGIN + TEST ("CD1009O", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE " & + "PART OF A PACKAGE FOR AN INCOMPLETE TYPE, " & + "WHOSE FULL DECLARATION IS AN INTEGER " & + "TYPE, DECLARED IN THE VISIBLE PART OF THE " & + "SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE / 2; + + TYPE CHECK_TYPE_1; + TYPE ACC IS ACCESS CHECK_TYPE_1; + + TYPE CHECK_TYPE_1 IS RANGE 0 .. 7; + + PRIVATE + FOR CHECK_TYPE_1'SIZE + USE SPECIFIED_SIZE; + END PACK; + + USE PACK; + + X : CHECK_TYPE_1 := CHECK_TYPE_1 (IDENT_INT(1)); + + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT"); + END IF; + + IF X'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " & + "VALUE IS" & CHECK_TYPE_1'IMAGE(X)); + END IF; + + END; + + RESULT; +END CD1009O; Index: cd1c03c.ada =================================================================== --- cd1c03c.ada (nonexistent) +++ cd1c03c.ada (revision 338) @@ -0,0 +1,71 @@ +-- CD1C03C.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 COLLECTION SIZE OF A DERIVED TYPE IS +-- INHERITED FROM THE PARENT IF THE COLLECTION SIZE OF +-- THE PARENT WAS DETERMINED BY A COLLECTION SIZE CLAUSE. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- JET 09/16/87 CREATED ORIGINAL TEST. +-- RJW 02/10/88 RENAMED FROM CD1C03C.TST. REMOVED MACRO - +-- ACC_SIZE. + +WITH REPORT; USE REPORT; +PROCEDURE CD1C03C IS + + SPECIFIED_SIZE : CONSTANT := 512; + + TYPE PARENT_TYPE IS ACCESS STRING; + + FOR PARENT_TYPE'STORAGE_SIZE USE SPECIFIED_SIZE; + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + +BEGIN + + TEST("CD1C03C", "CHECK THAT THE COLLECTION SIZE OF A " & + "DERIVED TYPE IS INHERITED FROM THE PARENT " & + "IF THE COLLECTION SIZE OF THE PARENT WAS " & + "DETERMINED BY A COLLECTION SIZE CLAUSE"); + + IF PARENT_TYPE'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("PARENT_TYPE'STORAGE_SIZE SHOULD NOT BE " & + "LESS THAN SPECIFIED_SIZE. " & + "ACTUAL SIZE IS" & + INTEGER'IMAGE(PARENT_TYPE'SIZE)); + END IF; + + IF DERIVED_TYPE'STORAGE_SIZE /= + IDENT_INT (PARENT_TYPE'STORAGE_SIZE) THEN + FAILED ("DERIVED_TYPE'STORAGE_SIZE SHOULD BE " & + "EQUAL TO PARENT_TYPE'STORAGE_SIZE. " & + "ACTUAL SIZE IS" & + INTEGER'IMAGE(DERIVED_TYPE'STORAGE_SIZE)); + END IF; + + RESULT; + +END CD1C03C; Index: cd1009q.ada =================================================================== --- cd1009q.ada (nonexistent) +++ cd1009q.ada (revision 338) @@ -0,0 +1,75 @@ +-- CD1009Q.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 A 'SIZE' SPECIFICATION MAY BE GIVEN IN THE PRIVATE +-- PART OF A PACKAGE FOR AN INCOMPLETE TYPE, WHOSE FULL DECLARATION +-- IS A FIXED POINT TYPE, DECLARED IN THE VISIBLE PART OF THE SAME +-- PACKAGE. + +-- HISTORY: +-- PWB 03/25/89 MODIFIED METHOD OF CHECKING OBJECT SIZE AGAINST +-- TYPE SIZE; CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- VCL 10/21/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009Q IS +BEGIN + TEST ("CD1009Q", "A 'SIZE' CLAUSE MAY BE GIVEN IN THE " & + "PRIVATE PART OF A PACKAGE FOR A AN " & + "INCOMPLETE TYPE, WHOSE FULL DECLARATION IS A " & + "FIXED POINT TYPE, DECLARED IN THE VISIBLE " & + "PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + TYPE SPECIFIED IS DELTA 2.0 ** (-4) RANGE 0.0 .. 10.0; + + SPECIFIED_SIZE : CONSTANT := SPECIFIED'SIZE; + + TYPE CHECK_TYPE_1; + TYPE ACC IS ACCESS CHECK_TYPE_1; + + TYPE CHECK_TYPE_1 IS DELTA 2.0 ** (-1) RANGE 0.0 .. 2.0; + PRIVATE + FOR CHECK_TYPE_1'SIZE + USE SPECIFIED_SIZE; + END PACK; + + USE PACK; + + X : CHECK_TYPE_1 := CHECK_TYPE_1 ( IDENT_INT (1) ); + BEGIN + IF CHECK_TYPE_1'SIZE /= SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'SIZE IS INCORRECT"); + END IF; + + IF X'SIZE < SPECIFIED_SIZE THEN + FAILED ("OBJECT SIZE TOO SMALL -- CHECK_TYPE_1. " & + "VALUE IS" & INTEGER'IMAGE ( INTEGER(X) ) ); + END IF; + + END; + + RESULT; +END CD1009Q; Index: cd2a53a.ada =================================================================== --- cd2a53a.ada (nonexistent) +++ cd2a53a.ada (revision 338) @@ -0,0 +1,217 @@ +-- CD2A53A.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 WHEN SIZE AND SMALL SPECIFICATIONS ARE GIVEN FOR A +-- FIXED POINT TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE ARE +-- NOT AFFECTED BY THE REPRESENTATION CLAUSE. + +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C) +-- and which support decimal small values: +-- The test must compile, bind, execute, report PASSED, and +-- complete normally. +-- +-- For other implementations: +-- This test may produce at least one error message at compilation, +-- and the error message is associated with one of the items marked: +-- -- N/A => ERROR. +-- The test will be recorded as Not_Applicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- All other behaviors are FAILING. +-- +-- HISTORY: +-- BCB 08/24/87 CREATED ORIGINAL TEST. +-- DHH 04/12/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- OPERATORS ON 'SIZE TESTS, AND CHANGED 'SIZE CLAUSE +-- SO THAT IT IS NOT A POWER OF TWO. +-- WMC 04/01/92 ELIMINATED TEST REDUNDANCIES. +-- RLB 11/24/98 Added Ada 95 applicability criteria. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A53A IS + BASIC_SIZE : CONSTANT := 15; + BASIC_SMALL : CONSTANT := 0.01; + + ZERO : CONSTANT := 0.0; + + TYPE CHECK_TYPE IS DELTA 1.0 RANGE -4.0 .. 4.0; + + FOR CHECK_TYPE'SMALL USE BASIC_SMALL; -- N/A => ERROR. + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; -- N/A => ERROR. + + CNEG1 : CHECK_TYPE := -2.7; + CNEG2 : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); + CPOS1 : CHECK_TYPE := CHECK_TYPE (4.0/6.0); + CPOS2 : CHECK_TYPE := 2.7; + CZERO : CHECK_TYPE; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 3) OF CHECK_TYPE; + CHARRAY : ARRAY_TYPE := + (-2.7, CHECK_TYPE (-1.0/3.0), CHECK_TYPE (4.0/6.0), 2.7); + + TYPE REC_TYPE IS RECORD + COMPF : CHECK_TYPE := -2.7; + COMPN : CHECK_TYPE := CHECK_TYPE (-1.0/3.0); + COMPP : CHECK_TYPE := CHECK_TYPE (4.0/6.0); + COMPL : CHECK_TYPE := 2.7; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (FX : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN FX; + ELSE + RETURN 0.0; + END IF; + END IDENT; + + PROCEDURE PROC (CN1IN, CP1IN : CHECK_TYPE; + CN2INOUT,CP2INOUT : IN OUT CHECK_TYPE; + CZOUT : OUT CHECK_TYPE) IS + BEGIN + + IF IDENT (CN1IN) + CP1IN NOT IN -2.04 .. -2.03 OR + CP2INOUT - IDENT (CP1IN) NOT IN 2.03 .. 2.04 THEN + FAILED ("INCORRECT RESULTS FOR " & + "BINARY ADDING OPERATORS - 1"); + END IF; + + IF CHECK_TYPE (CN1IN * IDENT (CP1IN)) NOT IN + -1.81 .. -1.78 OR + CHECK_TYPE (IDENT (CN2INOUT) / CP2INOUT) NOT IN + -0.13 .. -0.12 THEN + FAILED ("INCORRECT RESULTS FOR " & + "MULTIPLYING OPERATORS - 1"); + END IF; + + IF IDENT (CP1IN) NOT IN 0.66 .. 0.670 OR + CN2INOUT IN -0.32 .. 0.0 OR + IDENT (CN2INOUT) IN -1.0 .. -0.35 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 1"); + END IF; + + CZOUT := 0.0; + + END PROC; + +BEGIN + TEST ("CD2A53A", "CHECK THAT WHEN SIZE AND SMALL SPECIFICATIONS " & + "ARE GIVEN FOR A FIXED POINT TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE ARE NOT " & + "AFFECTED BY THE REPRESENTATION CLAUSE"); + + PROC (CNEG1, CPOS1, CNEG2, CPOS2, CZERO); + + IF CNEG1'SIZE < IDENT_INT(BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CNEG1'SIZE"); + END IF; + + IF IDENT (CZERO) /= ZERO THEN + FAILED ("INCORRECT VALUE FOR OUT PARAMETER"); + END IF; + + IF CHECK_TYPE'FIRST > IDENT (-3.99) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST"); + END IF; + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF CHECK_TYPE'SMALL /= BASIC_SMALL THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SMALL"); + END IF; + + IF CHECK_TYPE'FORE /= 2 THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FORE"); + END IF; + + IF +IDENT (CNEG2) NOT IN -0.34 .. -0.33 OR + IDENT (-CPOS1) NOT IN -0.67 .. -0.66 THEN + FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 2"); + END IF; + + IF ABS IDENT (CNEG2) NOT IN 0.33 .. 0.34 OR + IDENT (ABS CPOS1) NOT IN 0.66 .. 0.670 THEN + FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & + "OPERATORS - 2"); + END IF; + + IF CHARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE"); + END IF; + + IF IDENT (CHARRAY (0)) + CHARRAY (2) NOT IN + -2.04 .. -2.03 OR + CHARRAY (3) - IDENT (CHARRAY (2)) NOT IN + 2.03 .. 2.04 THEN + FAILED ("INCORRECT RESULTS FOR BINARY ADDING OPERATORS - 3"); + END IF; + + IF CHECK_TYPE (CHARRAY (0) * IDENT (CHARRAY (2))) NOT IN + -1.81 .. -1.78 OR + CHECK_TYPE (IDENT (CHARRAY (1)) / CHARRAY (3)) NOT IN + -0.13 .. -0.12 THEN + FAILED ("INCORRECT RESULTS FOR MULTIPLYING OPERATORS - 3"); + END IF; + + IF IDENT (CHARRAY (2)) NOT IN 0.66 .. 0.670 OR + CHARRAY (1) IN -0.32 .. 0.0 OR + IDENT (CHARRAY (1)) IN -1.0 .. -0.35 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + + IF CHREC.COMPP'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMPP'SIZE"); + END IF; + + IF +IDENT (CHREC.COMPN) NOT IN -0.34 .. -0.33 OR + IDENT (-CHREC.COMPP) NOT IN -0.67 .. -0.66 THEN + FAILED ("INCORRECT RESULTS FOR UNARY ADDING OPERATORS - 4"); + END IF; + + IF ABS IDENT (CHREC.COMPN) NOT IN 0.33 .. 0.34 OR + IDENT (ABS CHREC.COMPP) NOT IN 0.66 .. 0.670 THEN + FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & + "OPERATORS - 4"); + END IF; + + IF IDENT (CHREC.COMPP) NOT IN 0.66 .. 0.670 OR + CHREC.COMPN IN -0.32 .. 0.0 OR + IDENT (CHREC.COMPN) IN -1.0 .. -0.35 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + + RESULT; + +END CD2A53A; Index: cd1009s.ada =================================================================== --- cd1009s.ada (nonexistent) +++ cd1009s.ada (revision 338) @@ -0,0 +1,72 @@ +-- CD1009S.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 A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE PRIVATE +-- PART OF A PACKAGE FOR A PRIVATE TYPE, WHOSE FULL TYPE +-- DECLARATION IS AN ACCESS TYPE, DECLARED IN THE VISIBLE PART +-- OF THE SAME PACKAGE. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- VCL 10/09/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1009S IS +BEGIN + TEST ("CD1009S", "A 'STORAGE_SIZE' CLAUSE MAY BE GIVEN IN THE " & + "PRIVATE PART OF A PACKAGE FOR A PRIVATE TYPE, " & + "WHOSE FULL TYPE DECLARATION IS AN ACCESS " & + "TYPE, DECLARED IN THE VISIBLE PART OF THE " & + "SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + SPECIFIED_SIZE : CONSTANT := INTEGER'SIZE * 10; + + TYPE CHECK_TYPE_1 IS PRIVATE; + + PROCEDURE P; + PRIVATE + TYPE CHECK_TYPE_1 IS ACCESS INTEGER; + FOR CHECK_TYPE_1'STORAGE_SIZE + USE SPECIFIED_SIZE; + END PACK; + + PACKAGE BODY PACK IS + PROCEDURE P IS + BEGIN + IF CHECK_TYPE_1'STORAGE_SIZE < SPECIFIED_SIZE THEN + FAILED ("CHECK_TYPE_1'STORAGE_SIZE IS TOO " & + "SMALL"); + END IF; + END P; + END PACK; + + USE PACK; + BEGIN + P; + END; + + RESULT; +END CD1009S; Index: cd1c03g.ada =================================================================== --- cd1c03g.ada (nonexistent) +++ cd1c03g.ada (revision 338) @@ -0,0 +1,65 @@ +-- CD1C03G.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 SIZE OF A DERIVED ENUMERATION TYPE IS +-- INHERITED FROM THE PARENT IF THE SIZE OF THE PARENT WAS +-- DETERMINED BY AN ENUMERATION REPRESENTATION CLAUSE. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- JET 09/17/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +PROCEDURE CD1C03G IS + + TYPE NORMAL_TYPE IS (RED, BLUE, GREEN, YELLOW); + + TYPE PARENT_TYPE IS (RED, BLUE, GREEN, YELLOW); + + FOR PARENT_TYPE USE + (RED => 256, BLUE => 257, GREEN => 258, YELLOW => 259); + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + +BEGIN + + TEST("CD1C03G", "CHECK THAT THE SIZE OF A DERIVED ENUMERATION " & + "TYPE IS INHERITED FROM THE PARENT IF THE " & + "SIZE OF THE PARENT WAS DETERMINED BY AN " & + "ENUMERATION REPRESENTATION CLAUSE"); + + IF PARENT_TYPE'SIZE = IDENT_INT (NORMAL_TYPE'SIZE) THEN + COMMENT ("PARENT_TYPE'SIZE WAS NOT AFFECTED BY THE " & + "REPRESENTATION CLAUSE"); + END IF; + + IF DERIVED_TYPE'SIZE /= IDENT_INT (PARENT_TYPE'SIZE) THEN + FAILED ("DERIVED_TYPE'SIZE WAS NOT INHERITED FROM " & + "PARENT_TYPE"); + END IF; + + RESULT; + +END CD1C03G; Index: cd2a53e.ada =================================================================== --- cd2a53e.ada (nonexistent) +++ cd2a53e.ada (revision 338) @@ -0,0 +1,235 @@ +-- CD2A53E.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 WHEN SIZE AND SMALL SPECIFICATIONS ARE GIVEN FOR A +-- FIXED POINT TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE WHEN THE TYPE +-- IS PASSED AS A GENERIC ACTUAL PARAMETER. + +-- HISTORY: +-- BCB 08/24/87 CREATED ORIGINAL TEST. +-- DHH 04/12/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND CHANGED +-- OPERATORS ON 'SIZE TESTS. +-- WMC 04/01/92 ELIMINATED TEST REDUNDANCIES. +-- MRM 07/16/92 FIX ALIGNMENT OF BLOCK BODY +-- PWN 02/02/95 REMOVED INCONSISTENCIES WITH ADA 9X. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A53E IS + + BASIC_SIZE : CONSTANT := INTEGER'SIZE/2; + BASIC_SMALL : CONSTANT := 2.0 ** (-4); + B : BOOLEAN; + + TYPE CHECK_TYPE IS DELTA 1.0 RANGE -4.0 .. 4.0; + FOR CHECK_TYPE'SMALL USE BASIC_SMALL; + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; + +BEGIN + + TEST ("CD2A53E", "CHECK THAT WHEN SIZE AND SMALL SPECIFICATIONS " & + "ARE GIVEN FOR A FIXED POINT TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE ARE NOT " & + "AFFECTED BY THE REPRESENTATION CLAUSE WHEN " & + "THE TYPE IS PASSED AS A GENERIC ACTUAL " & + "PARAMETER"); + + DECLARE + + GENERIC + + TYPE FIXED_ELEMENT IS DELTA <>; + + FUNCTION FUNC RETURN BOOLEAN; + + FUNCTION FUNC RETURN BOOLEAN IS + + ZERO : CONSTANT := 0.0; + + TYPE BASIC_TYPE IS DELTA 2.0 ** (-4) RANGE -4.0 .. 4.0; + + CNEG1 : FIXED_ELEMENT := -3.5; + CNEG2 : FIXED_ELEMENT := FIXED_ELEMENT (-1.0/3.0); + CPOS1 : FIXED_ELEMENT := FIXED_ELEMENT (4.0/6.0); + CPOS2 : FIXED_ELEMENT := 3.5; + CZERO : FIXED_ELEMENT; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 3) OF FIXED_ELEMENT; + CHARRAY : ARRAY_TYPE := + (-3.5, FIXED_ELEMENT (-1.0/3.0), FIXED_ELEMENT + (4.0/6.0), 3.5); + + TYPE REC_TYPE IS RECORD + COMPF : FIXED_ELEMENT := -3.5; + COMPN : FIXED_ELEMENT := FIXED_ELEMENT (-1.0/3.0); + COMPP : FIXED_ELEMENT := FIXED_ELEMENT (4.0/6.0); + COMPL : FIXED_ELEMENT := 3.5; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (FX : FIXED_ELEMENT) RETURN + FIXED_ELEMENT IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN FX; + ELSE + RETURN 0.0; + END IF; + END IDENT; + + PROCEDURE PROC (CN1IN, CP1IN : FIXED_ELEMENT; + CN2INOUT,CP2INOUT : IN OUT FIXED_ELEMENT; + CZOUT : OUT FIXED_ELEMENT) + IS + BEGIN + + IF +IDENT (CN2INOUT) NOT IN -0.375 .. -0.3125 OR + IDENT (-CP1IN) NOT IN -0.6875 .. -0.625 THEN + FAILED ("INCORRECT RESULTS FOR " & + "UNARY ADDING OPERATORS - 1"); + END IF; + + IF ABS IDENT (CN2INOUT) NOT IN 0.3125 .. 0.375 OR + IDENT (ABS CP1IN) NOT IN 0.625 .. 0.6875 THEN + FAILED ("INCORRECT RESULTS FOR " & + "ABSOLUTE VALUE OPERATORS - 1"); + END IF; + + CZOUT := 0.0; + + END PROC; + + BEGIN -- FUNC + + PROC (CNEG1, CPOS1, CNEG2, CPOS2, CZERO); + + IF IDENT (CZERO) /= ZERO THEN + FAILED ("INCORRECT VALUE FOR OUT PARAMETER"); + END IF; + + IF FIXED_ELEMENT'LAST < IDENT (3.9375) THEN + FAILED ("INCORRECT VALUE FOR FIXED_ELEMENT'LAST"); + END IF; + + IF FIXED_ELEMENT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR FIXED_ELEMENT'SIZE"); + END IF; + + IF FIXED_ELEMENT'SMALL /= BASIC_SMALL THEN + FAILED ("INCORRECT VALUE FOR FIXED_ELEMENT'SMALL"); + END IF; + + IF FIXED_ELEMENT'AFT /= 1 THEN + FAILED ("INCORRECT VALUE FOR FIXED_ELEMENT'AFT"); + END IF; + + IF CNEG1'SIZE < IDENT_INT(BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CNEG1'SIZE"); + END IF; + + IF IDENT (CNEG1) + CPOS1 NOT IN -2.875 .. -2.8125 OR + CPOS2 - IDENT (CPOS1) NOT IN 2.8125 .. 2.875 THEN + FAILED ("INCORRECT RESULTS FOR BINARY ADDING " & + "OPERATORS - 2"); + END IF; + + IF FIXED_ELEMENT (CNEG1 * IDENT (CPOS1)) NOT IN + -2.4375 .. -2.1875 OR + FIXED_ELEMENT (IDENT (CNEG2) / CPOS2) NOT IN + -0.125 .. -0.0625 THEN + FAILED ("INCORRECT RESULTS FOR MULTIPLYING " & + "OPERATORS - 2"); + END IF; + + IF IDENT (CPOS1) NOT IN 0.625 .. 0.6875 OR + CNEG2 IN -0.25 .. 0.0 OR + IDENT (CNEG2) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 2"); + END IF; + + IF CHARRAY(1)'SIZE < IDENT_INT(BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE"); + END IF; + + IF +IDENT (CHARRAY (1)) NOT IN -0.375 .. -0.3125 OR + IDENT (-CHARRAY (2)) NOT IN -0.6875 .. -0.625 THEN + FAILED ("INCORRECT RESULTS FOR UNARY ADDING " & + "OPERATORS - 3"); + END IF; + + IF ABS IDENT (CHARRAY (1)) NOT IN 0.3125 .. 0.375 OR + IDENT (ABS CHARRAY (2)) NOT IN 0.625 .. 0.6875 THEN + FAILED ("INCORRECT RESULTS FOR ABSOLUTE VALUE " & + "OPERATORS - 3"); + END IF; + + IF IDENT (CHARRAY (2)) NOT IN 0.625 .. 0.6875 OR + CHARRAY (1) IN -0.25 .. 0.0 OR + IDENT (CHARRAY (1)) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + + IF CHREC.COMPP'SIZE < IDENT_INT(BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMPP'SIZE"); + END IF; + + IF IDENT (CHREC.COMPF) + CHREC.COMPP NOT IN + -2.875 .. -2.8125 OR + CHREC.COMPL - IDENT (CHREC.COMPP) NOT IN + 2.8125 .. 2.875 THEN + FAILED ("INCORRECT RESULTS FOR BINARY ADDING " & + "OPERATORS - 4"); + END IF; + + IF FIXED_ELEMENT (CHREC.COMPF * IDENT (CHREC.COMPP)) + NOT IN -2.4375 .. -2.1875 OR + FIXED_ELEMENT (IDENT (CHREC.COMPN) / CHREC.COMPL) + NOT IN -0.125 .. -0.0625 THEN + FAILED ("INCORRECT RESULTS FOR MULTIPLYING " & + "OPERATORS - 4"); + END IF; + + IF IDENT (CHREC.COMPP) NOT IN 0.625 .. 0.6875 OR + CHREC.COMPN IN -0.25 .. 0.0 OR + IDENT (CHREC.COMPN) IN -1.0 .. -0.4375 THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + + RETURN TRUE; + + END FUNC; + + FUNCTION NEWFUNC IS NEW FUNC(CHECK_TYPE); + BEGIN + B := NEWFUNC; + END; + + RESULT; + +END CD2A53E; Index: cd1c03i.ada =================================================================== --- cd1c03i.ada (nonexistent) +++ cd1c03i.ada (revision 338) @@ -0,0 +1,115 @@ +-- CD1C03I.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 RECORD SIZE AND THE COMPONENT POSITIONS AND +-- SIZES OF A DERIVED RECORD TYPE ARE INHERITED FROM THE +-- PARENT IF THOSE ASPECTS OF THE PARENT WERE DETERMINED BY THE +-- PRAGMA PACK. + +-- HISTORY: +-- JET 09/17/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; + +PROCEDURE CD1C03I IS + + TYPE E_TYPE IS (RED, BLUE, GREEN); + + TYPE PARENT_TYPE IS + RECORD + B1: BOOLEAN := TRUE; + I : INTEGER RANGE 0 .. 127 := 127; + C : CHARACTER := 'S'; + B2: BOOLEAN := FALSE; + E : E_TYPE := BLUE; + END RECORD; + + PRAGMA PACK (PARENT_TYPE); + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + + P_REC : PARENT_TYPE; + REC : DERIVED_TYPE; + +BEGIN + + TEST("CD1C03I", "CHECK THAT THE RECORD SIZE AND THE COMPONENT " & + "POSITIONS AND SIZES OF A DERIVED RECORD " & + "TYPE ARE INHERITED FROM THE PARENT IF THOSE " & + "ASPECTS OF THE PARENT WERE DETERMINED BY " & + "THE PRAGMA PACK"); + + IF DERIVED_TYPE'SIZE /= PARENT_TYPE'SIZE THEN + FAILED ("DERIVED_TYPE'SIZE WAS NOT INHERITED FROM " & + "PARENT_TYPE"); + END IF; + + IF REC.I'SIZE /= P_REC.I'SIZE OR + REC.C'SIZE /= P_REC.C'SIZE OR + REC.B1'SIZE /= P_REC.B1'SIZE OR + REC.B2'SIZE /= P_REC.B2'SIZE OR + REC.E'SIZE /= P_REC.E'SIZE THEN + FAILED ("THE SIZES OF DERIVED_TYPE ELEMENTS WERE NOT " & + "INHERITED FROM PARENT_TYPE"); + END IF; + + REC := (FALSE, 12, 'T', TRUE, RED); + + IF (REC.I /= 12) OR (REC.C /= 'T') OR + REC.B1 OR (NOT REC.B2) OR (REC.E /= RED) THEN + FAILED ("THE VALUES OF DERIVED_TYPE COMPONENTS WERE " & + "INCORRECT"); + END IF; + + IF REC.I'POSITION /= P_REC.I'POSITION OR + REC.C'POSITION /= P_REC.C'POSITION OR + REC.B1'POSITION /= P_REC.B1'POSITION OR + REC.B2'POSITION /= P_REC.B2'POSITION OR + REC.E'POSITION /= P_REC.E'POSITION THEN + FAILED ("THE POSITIONS OF DERIVED_TYPE COMPONENTS WERE " & + "NOT INHERITED FROM PARENT_TYPE"); + END IF; + + IF REC.I'FIRST_BIT /= P_REC.I'FIRST_BIT OR + REC.C'FIRST_BIT /= P_REC.C'FIRST_BIT OR + REC.B1'FIRST_BIT /= P_REC.B1'FIRST_BIT OR + REC.B2'FIRST_BIT /= P_REC.B2'FIRST_BIT OR + REC.E'FIRST_BIT /= P_REC.E'FIRST_BIT THEN + FAILED ("THE FIRST_BITS OF DERIVED_TYPE COMPONENTS WERE " & + "NOT INHERITED FROM PARENT_TYPE"); + END IF; + + IF REC.I'LAST_BIT /= P_REC.I'LAST_BIT OR + REC.C'LAST_BIT /= P_REC.C'LAST_BIT OR + REC.B1'LAST_BIT /= P_REC.B1'LAST_BIT OR + REC.B2'LAST_BIT /= P_REC.B2'LAST_BIT OR + REC.E'LAST_BIT /= P_REC.E'LAST_BIT THEN + FAILED ("THE LAST_BITS OF DERIVED_TYPE COMPONENTS WERE " & + "NOT INHERITED FROM PARENT_TYPE"); + END IF; + + RESULT; + +END CD1C03I; Index: cd1009w.ada =================================================================== --- cd1009w.ada (nonexistent) +++ cd1009w.ada (revision 338) @@ -0,0 +1,71 @@ +-- CD1009W.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 AN ENUMERATION REPRESENTATION CLAUSE MAY BE GIVEN IN +-- THE PRIVATE PART OF A PACKAGE FOR A PRIVATE TYPE, WHOSE FULL +-- TYPE DECLARATION IS AN ENUMERATION TYPE, DECLARED IN THE +-- VISIBLE PART OF THE SAME PACKAGE. + +-- HISTORY: +-- VCL 10/09/87 CREATED ORIGINAL TEST. +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSE. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1009W IS +BEGIN + TEST ("CD1009W", "AN ENUMERATION REPRESENTATION CLAUSE MAY BE " & + "GIVEN IN THE PRIVATE PART OF A PACKAGE FOR " & + "A PRIVATE TYPE, WHOSE FULL TYPE DECLARATION " & + "IS AN ENUMERATION TYPE, DECLARED IN " & + "THE VISIBLE PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + TYPE CHECK_TYPE_1 IS PRIVATE; + PRIVATE + TYPE CHECK_TYPE_1 IS (A0, A2, A4, A8); + FOR CHECK_TYPE_1 USE (A0 => 0, + A2 => 2, + A4 => 4, + A8 => 16); + TYPE INT1 IS RANGE 0 .. 16; + FOR INT1'SIZE USE CHECK_TYPE_1'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(CHECK_TYPE_1, INT1); + END PACK; + + PACKAGE BODY PACK IS + BEGIN + CHECK_1 (A8, 16, "CHECK_TYPE_1"); + END PACK; + + USE PACK; + BEGIN + NULL; + END; + + RESULT; +END CD1009W; Index: cde0001.a =================================================================== --- cde0001.a (nonexistent) +++ cde0001.a (revision 338) @@ -0,0 +1,324 @@ +-- CDE0001.A +-- +-- 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 following names can be used in the declaration of a +-- generic formal parameter (object, array type, or access type) without +-- causing freezing of the named type: +-- (1) The name of a private type, +-- (2) A name that denotes a subtype of a private type, and +-- (3) A name that denotes a composite type with a subcomponent of a +-- private type (or subtype). +-- Check for untagged and tagged types. +-- +-- TEST DESCRIPTION: +-- This transition test defines private and limited private types, +-- subtypes of these private types, records and arrays of both types and +-- subtypes, a tagged type and a private extension. +-- This test creates examples where the above types are used in the +-- definition of several generic formal type parameters (object, array +-- type, or access type) in both visible and private parts. These +-- visible and private generic packages are instantiated in the body of +-- the public child and the private child, respectively. +-- The main program utilizes the functions declared in the public child +-- to verify results of the instantiations. +-- +-- Inspired by B74103F.ADA. +-- +-- +-- CHANGE HISTORY: +-- 12 Mar 96 SAIC Initial version for ACVC 2.1. +-- 05 Oct 96 SAIC ACVC 2.1: Added pragma Elaborate for CDE0001. +-- 21 Nov 98 RLB Added pragma Elaborate for CDE0001 to CDE0001_3. +--! + +package CDE0001_0 is + + subtype Small_Int is Integer range 1 .. 2; + + type Private_Type is private; + type Limited_Private is limited private; + + subtype Private_Subtype is Private_Type; + subtype Limited_Private_Subtype is Limited_Private; + + type Array_Of_LP_Subtype is array (1..2) of Limited_Private_Subtype; + + type Rec_Of_Limited_Private is + record + C1 : Limited_Private; + end record; + + type Rec_Of_Private_SubType is + record + C1 : Private_SubType; + end record; + + type Tag_Type is tagged + record + C1 : Small_Int; + end record; + + type New_TagType is new Tag_Type with private; + + generic + + Formal_Obj01 : in out Private_Type; -- Formal objects defined + Formal_Obj02 : in out Limited_Private; -- by names of private + Formal_Obj03 : in out Private_Subtype; -- types, names that + Formal_Obj04 : in out Limited_Private_Subtype; -- denotes subtypes of + Formal_Obj05 : in out New_TagType; -- the private types. + + package CDE0001_1 is + procedure Assign_Objects; + + end CDE0001_1; + +private + + generic + -- Formal array types of a private type, a composite type with a + -- subcomponent of a private type. + + type Formal_Arr01 is array (Small_Int) of Private_Type; + type Formal_Arr02 is array (Small_Int) of Rec_Of_Limited_Private; + + -- Formal access types of composite types with a subcomponent of + -- a private subtype. + + type Formal_Acc01 is access Rec_Of_Private_Subtype; + type Formal_Acc02 is access Array_Of_LP_Subtype; + + package CDE0001_2 is + + procedure Assign_Arrays (P1 : out Formal_Arr01; + P2 : out Formal_Arr02); + + procedure Assign_Access (P1 : out Formal_Acc01; + P2 : out Formal_Acc02); + + end CDE0001_2; + + ---------------------------------------------------------- + type Private_Type is range 1 .. 10; + type Limited_Private is (Eh, Bee, Sea, Dee); + type New_TagType is new Tag_Type with + record + C2 : Private_Type; + end record; + +end CDE0001_0; + + --==================================================================-- + +package body CDE0001_0 is + + package body CDE0001_1 is + + procedure Assign_Objects is + begin + Formal_Obj01 := Private_Type'First; + Formal_Obj02 := Limited_Private'Last; + Formal_Obj03 := Private_Subtype'Last; + Formal_Obj04 := Limited_Private_Subtype'First; + Formal_Obj05 := New_TagType'(C1 => 2, C2 => Private_Type'Last); + + end Assign_Objects; + + end CDE0001_1; + + --===========================================================-- + + package body CDE0001_2 is + + procedure Assign_Arrays (P1 : out Formal_Arr01; + P2 : out Formal_Arr02) is + begin + P1(1) := Private_Type'Pred(Private_Type'Last); + P1(2) := Private_Type'Succ(Private_Type'First); + P2(1).C1 := Limited_Private'Succ(Limited_Private'First); + P2(2).C1 := Limited_Private'Pred(Limited_Private'Last); + + end Assign_Arrays; + + ----------------------------------------------------------------- + procedure Assign_Access (P1 : out Formal_Acc01; + P2 : out Formal_Acc02) is + begin + P1 := new Rec_Of_Private_Subtype'(C1 => Private_Subtype'Last); + P2 := new Array_Of_LP_Subtype'(Eh, Dee); + + end Assign_Access; + + end CDE0001_2; + +end CDE0001_0; + + --==================================================================-- + +-- The following private child package instantiates its parent private generic +-- package. + +with CDE0001_0; +pragma Elaborate (CDE0001_0); -- So generic unit can be instantiated. +private +package CDE0001_0.CDE0001_3 is + + type Arr01 is array (Small_Int) of Private_Type; + type Arr02 is array (Small_Int) of Rec_Of_Limited_Private; + type Acc01 is access Rec_Of_Private_Subtype; + type Acc02 is access Array_Of_LP_Subtype; + + package Formal_Types_Pck is new CDE0001_2 (Arr01, Arr02, Acc01, Acc02); + + Arr01_Obj : Arr01; + Arr02_Obj : Arr02; + Acc01_Obj : Acc01; + Acc02_Obj : Acc02; + +end CDE0001_0.CDE0001_3; + + --==================================================================-- + +package CDE0001_0.CDE0001_4 is + + -- The following functions check the private types defined in the parent + -- and the private child package from within the client program. + + function Verify_Objects return Boolean; + + function Verify_Arrays return Boolean; + + function Verify_Access return Boolean; + +end CDE0001_0.CDE0001_4; + + --==================================================================-- + +with CDE0001_0.CDE0001_3; -- private sibling. + +pragma Elaborate (CDE0001_0.CDE0001_3); + +package body CDE0001_0.CDE0001_4 is + + Obj1 : Private_Type := 2; + Obj2 : Limited_Private := Bee; + Obj3 : Private_Subtype := 3; + Obj4 : Limited_Private_Subtype := Sea; + Obj5 : New_TagType := (1, 5); + + -- Instantiate the generic package declared in the visible part of + -- the parent. + + package Formal_Obj_Pck is new CDE0001_1 (Obj1, Obj2, Obj3, Obj4, Obj5); + + --------------------------------------------------- + function Verify_Objects return Boolean is + Result : Boolean := False; + begin + if Obj1 = 1 and + Obj2 = Dee and + Obj3 = 10 and + Obj4 = Eh and + Obj5.C1 = 2 and + Obj5.C2 = 10 then + Result := True; + end if; + + return Result; + + end Verify_Objects; + + --------------------------------------------------- + function Verify_Arrays return Boolean is + Result : Boolean := False; + begin + if CDE0001_0.CDE0001_3.Arr01_Obj(1) = 9 and + CDE0001_0.CDE0001_3.Arr01_Obj(2) = 2 and + CDE0001_0.CDE0001_3.Arr02_Obj(1).C1 = Bee and + CDE0001_0.CDE0001_3.Arr02_Obj(2).C1 = Sea then + Result := True; + end if; + + return Result; + + end Verify_Arrays; + + --------------------------------------------------- + function Verify_Access return Boolean is + Result : Boolean := False; + begin + if CDE0001_0.CDE0001_3.Acc01_Obj.C1 = 10 and + CDE0001_0.CDE0001_3.Acc02_Obj(1) = Eh and + CDE0001_0.CDE0001_3.Acc02_Obj(2) = Dee then + Result := True; + end if; + + return Result; + + end Verify_Access; + +begin + + Formal_Obj_Pck.Assign_Objects; + + CDE0001_0.CDE0001_3.Formal_Types_Pck.Assign_Arrays + (CDE0001_0.CDE0001_3.Arr01_Obj, CDE0001_0.CDE0001_3.Arr02_Obj); + CDE0001_0.CDE0001_3.Formal_Types_Pck.Assign_Access + (CDE0001_0.CDE0001_3.Acc01_Obj, CDE0001_0.CDE0001_3.Acc02_Obj); + +end CDE0001_0.CDE0001_4; + + --==================================================================-- + +with Report; +with CDE0001_0.CDE0001_4; + +procedure CDE0001 is + +begin + + Report.Test ("CDE0001", "Check that the name of the private type, a " & + "name that denotes a subtype of the private type, or a " & + "name that denotes a composite type with a subcomponent " & + "of a private type can be used in the declaration of a " & + "generic formal type parameter without causing freezing " & + "of the named type"); + + if not CDE0001_0.CDE0001_4.Verify_Objects then + Report.Failed ("Wrong values for formal objects"); + end if; + + if not CDE0001_0.CDE0001_4.Verify_Arrays then + Report.Failed ("Wrong values for formal array types"); + end if; + + if not CDE0001_0.CDE0001_4.Verify_Access then + Report.Failed ("Wrong values for formal access types"); + end if; + + Report.Result; + +end CDE0001; Index: cd1009y.ada =================================================================== --- cd1009y.ada (nonexistent) +++ cd1009y.ada (revision 338) @@ -0,0 +1,115 @@ +-- CD1009Y.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 A RECORD REPRESENTATION CLAUSE MAY BE GIVEN IN THE +-- PRIVATE PART OF A PACKAGE FOR A PRIVATE TYPE, WHOSE FULL TYPE +-- DECLARATION IS A RECORD TYPE, DECLARED IN THE VISIBLE PART +-- OF THE SAME PACKAGE. + +-- HISTORY: +-- VCL 10/09/87 CREATED ORIGINAL TEST. +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP', CORRECTED +-- CHECKS FOR FAILURE. + +WITH SYSTEM; +WITH REPORT; USE REPORT; +PROCEDURE CD1009Y IS +BEGIN + TEST ("CD1009Y", "A RECORD REPRESENTATION CLAUSE MAY BE GIVEN " & + "IN THE PRIVATE PART OF A PACKAGE FOR A " & + "PRIVATE TYPE, WHOSE FULL TYPE DECLARATION IS " & + "A RECORD TYPE DECLARED IN THE " & + "VISIBLE PART OF THE SAME PACKAGE"); + DECLARE + PACKAGE PACK IS + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / + SYSTEM.STORAGE_UNIT; + + TYPE CHECK_TYPE_1 IS PRIVATE; + + PROCEDURE P; + PRIVATE + TYPE CHECK_TYPE_1 IS + RECORD + I1 : INTEGER RANGE 0 .. 255; + B1 : BOOLEAN; + B2 : BOOLEAN; + I2 : INTEGER RANGE 0 .. 15; + END RECORD; + FOR CHECK_TYPE_1 USE + RECORD + I1 AT 0 * UNITS_PER_INTEGER + RANGE 0 .. INTEGER'SIZE - 1; + B1 AT 1 * UNITS_PER_INTEGER + RANGE 0 .. BOOLEAN'SIZE - 1; + B2 AT 2 * UNITS_PER_INTEGER + RANGE 0 .. BOOLEAN'SIZE - 1; + I2 AT 3 * UNITS_PER_INTEGER + RANGE 0 .. INTEGER'SIZE - 1; + END RECORD; + END PACK; + + PACKAGE BODY PACK IS + PROCEDURE P IS + R1 : CHECK_TYPE_1; + BEGIN + IF R1.I1'FIRST_BIT /= 0 OR + R1.I1'LAST_BIT /= INTEGER'SIZE - 1 OR + R1.I1'POSITION /= 0 THEN + FAILED ("INCORRECT REPRESENTATION FOR R1.I1"); + END IF; + + IF R1.B1'FIRST_BIT /= 0 OR + R1.B1'LAST_BIT /= BOOLEAN'SIZE - 1 OR + R1.B1'POSITION /= 1 * UNITS_PER_INTEGER + THEN + FAILED ("INCORRECT REPRESENTATION FOR R1.B1"); + END IF; + + IF R1.B2'FIRST_BIT /= 0 OR + R1.B2'LAST_BIT /= BOOLEAN'SIZE - 1 OR + R1.B2'POSITION /= 2 * UNITS_PER_INTEGER + THEN + FAILED ("INCORRECT REPRESENTATION FOR R1.B2"); + END IF; + + IF R1.I2'FIRST_BIT /= 0 OR + R1.I2'LAST_BIT /= INTEGER'SIZE - 1 OR + R1.I2'POSITION /= 3 * UNITS_PER_INTEGER + THEN + FAILED ("INCORRECT REPRESENTATION FOR R1.I2"); + END IF; + END P; + END PACK; + + USE PACK; + + BEGIN + P; + END; + + RESULT; +END CD1009Y; Index: cd3014d.ada =================================================================== --- cd3014d.ada (nonexistent) +++ cd3014d.ada (revision 338) @@ -0,0 +1,135 @@ +-- CD3014D.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 AN ENUMERATION TYPE WITH A REPRESENTATION CLAUSE IN A +-- GENERIC UNIT CAN BE USED CORRECTLY IN ORDERING RELATIONS, +-- INDEXING ARRAYS, AND IN GENERIC INSTANTIATIONS. + +-- HISTORY +-- DHH 09/30/87 CREATED ORIGINAL TEST. +-- BCB 03/20/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- BCB 03/07/90 REVISED WORDING IN HEADER COMMENT AND IN CALL TO +-- REPORT.TEST. ADDED CHECK FOR NON-CONTIGUOUS CODES. +-- REVISED CHECK FOR ARRAY INDEXING. +-- THS 09/18/90 REVISED WORDING IN HEADER AND MODIFIED FAILED ERROR +-- MESSAGE. + +WITH REPORT; USE REPORT; +PROCEDURE CD3014D IS + +BEGIN + + TEST ("CD3014D", "CHECK THAT AN ENUMERATION TYPE WITH A " & + "REPRESENTATION CLAUSE IN A GENERIC UNIT CAN " & + "BE USED CORRECTLY IN ORDERING RELATIONS, " & + "INDEXING ARRAYS, AND IN GENERIC INSTANTIATIONS"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE HUE IS (RED,BLUE,YELLOW,'R','B','Y'); + + FOR HUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + + TYPE HUE1 IS ('Y','B','R',YELLOW,BLUE,RED); + + FOR HUE1 USE ('Y' => 10, 'B' => 14, 'R' => 16, + YELLOW => 19, BLUE => 41, RED => 46); + + TYPE BASE1 IS ARRAY(HUE1) OF INTEGER; + COLOR1,BASIC1 : HUE1; + BARRAY1 : BASE1; + + TYPE BASE IS ARRAY(HUE) OF INTEGER; + COLOR,BASIC : HUE; + BARRAY : BASE; + + GENERIC + TYPE ENUM IS (<>); + PROCEDURE CHANGE(X,Y : IN OUT ENUM); + + END GENPACK; + + PACKAGE BODY GENPACK IS + + PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS + T : ENUM; + BEGIN + T := X; + X := Y; + Y := T; + END CHANGE; + + PROCEDURE PROC IS NEW CHANGE(HUE); + PROCEDURE PROC1 IS NEW CHANGE(HUE1); + + BEGIN + BASIC := RED; + COLOR := HUE'SUCC(BASIC); + BASIC1 := RED; + COLOR1 := HUE1'PRED(BASIC1); + IF (COLOR < BASIC OR BASIC >= 'R' OR 'Y' <= COLOR OR + COLOR > 'B') OR + NOT (COLOR1 < BASIC1 AND BASIC1 >= 'R' AND + 'Y' <= COLOR1 AND COLOR1 > 'B') THEN + FAILED("ORDERING RELATIONS ARE INCORRECT"); + END IF; + + PROC(BASIC,COLOR); + PROC1(BASIC1,COLOR1); + + IF COLOR /= RED OR COLOR1 /= RED THEN + FAILED("VALUES OF PARAMETERS TO INSTANCE OF " & + "GENERIC UNIT NOT CORRECT AFTER CALL"); + END IF; + + BARRAY := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + BARRAY1 := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR + BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR + BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) OR + NOT (BARRAY1 (RED) = 6 AND BARRAY1 (BLUE) = 5 AND + BARRAY1 (YELLOW) = 4 AND BARRAY1 ('R') = 3 AND + BARRAY1 ('B') = 2 AND BARRAY1 ('Y') = 1) + THEN + FAILED("INDEXING ARRAY FAILURE"); + END IF; + + END GENPACK; + + PACKAGE P IS NEW GENPACK; + BEGIN + NULL; + END; + + RESULT; +END CD3014D; Index: cd3014f.ada =================================================================== --- cd3014f.ada (nonexistent) +++ cd3014f.ada (revision 338) @@ -0,0 +1,88 @@ +-- CD3014F.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 AN ENUMERATION REPRESENTATION CLAUSE CAN BE GIVEN +-- IN THE VISIBLE OR PRIVATE PART OF A GENERIC PACKAGE FOR A +-- TYPE DECLARED IN THE VISIBLE PART. + +-- HISTORY +-- DHH 09/30/87 CREATED ORIGINAL TEST +-- DHH 03/29/89 CHANGED FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES. +-- RJW 09/18/89 REMOVED THE COMMENT "-- N/A => ERROR.". + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3014F IS + +BEGIN + + TEST ("CD3014F", "CHECK THAT AN ENUMERATION REPRESENTATION " & + "CLAUSE CAN BE GIVEN IN THE VISIBLE " & + "OR PRIVATE PART OF A GENERIC PACKAGE FOR " & + "A TYPE DECLARED IN THE VISIBLE PART"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE HUE IS (RED,BLUE,YELLOW,'R','B','Y'); + TYPE NEWHUE IS (RED,BLUE,YELLOW,'R','B','Y'); + + FOR HUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + A : HUE := BLUE; + + TYPE INT1 IS RANGE 8 .. 13; + FOR INT1'SIZE USE HUE'SIZE; + + PRIVATE + + FOR NEWHUE USE (RED => 2, BLUE => 4, YELLOW => 6, + 'R' => 8, 'B' => 10, 'Y' => 12); + + B : NEWHUE := RED; + TYPE INT2 IS RANGE 2 .. 12; + FOR INT2'SIZE USE NEWHUE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(HUE, INT1); + PROCEDURE CHECK_2 IS NEW ENUM_CHECK(NEWHUE, INT2); + END GENPACK; + + PACKAGE BODY GENPACK IS + BEGIN + CHECK_1 ('B', 12, "HUE"); + CHECK_2 ('B', 10, "NEWHUE"); + END GENPACK; + + PACKAGE P IS NEW GENPACK; + + BEGIN + NULL; + END; + + RESULT; +END CD3014F; Index: cd10002.a =================================================================== --- cd10002.a (nonexistent) +++ cd10002.a (revision 338) @@ -0,0 +1,1198 @@ +-- CD10002.A +-- +-- Grant of Unlimited Rights +-- +-- The Ada Conformity Assessment Authority (ACAA) holds unlimited +-- rights in the software and documentation contained herein. Unlimited +-- rights are the same as those granted by the U.S. Government for older +-- parts of the Ada Conformity Assessment Test Suite, and are defined +-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA +-- intends to confer upon all recipients unlimited rights equal to those +-- held by the ACAA. 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 operational items are allowed in some contexts where +-- representation items are not: +-- +-- 1 - Check that the name of an incompletely defined type can be used +-- when specifying an operational item. (RM95/TC1 7.3(5)). +-- +-- 2 - Check that operational items can be specified for a descendant of +-- a generic formal untagged type. (RM95/TC1 13.1(10)). +-- +-- 3 - Check that operational items can be specified for a derived +-- untagged type even if the parent type is a by-reference type or +-- has user-defined primitive subprograms. (RM95/TC1 13.1(11/1)). +-- +-- (Defect Report 8652/0009, as reflected in Technical Corrigendum 1). +-- +-- CHANGE HISTORY: +-- 19 JAN 2001 PHL Initial version. +-- 3 DEC 2001 RLB Reformatted for ACATS. +-- 3 OCT 2002 RLB Corrected incorrect type derivations. +-- +--! +with Ada.Streams; +use Ada.Streams; +package CD10002_0 is + + type Kinds is (Read, Write, Input, Output); + type Counts is array (Kinds) of Natural; + + generic + type T is private; + package Nonlimited_Stream_Ops is + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T); + function Input (Stream : access Root_Stream_Type'Class) return T; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T); + procedure Output (Stream : access Root_Stream_Type'Class; Item : T); + + function Get_Counts return Counts; + + end Nonlimited_Stream_Ops; + + generic + type T (<>) is limited private; -- Should be self-initializing. + C : in out T; + package Limited_Stream_Ops is + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T); + function Input (Stream : access Root_Stream_Type'Class) return T; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T); + procedure Output (Stream : access Root_Stream_Type'Class; Item : T); + + function Get_Counts return Counts; + + end Limited_Stream_Ops; + +end CD10002_0; + + +package body CD10002_0 is + + package body Nonlimited_Stream_Ops is + Cnts : Counts := (others => 0); + X : T; -- Initialized by Write/Output. + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is + begin + X := Item; + Cnts (Write) := Cnts (Write) + 1; + end Write; + + function Input (Stream : access Root_Stream_Type'Class) return T is + begin + Cnts (Input) := Cnts (Input) + 1; + return X; + end Input; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is + begin + Cnts (Read) := Cnts (Read) + 1; + Item := X; + end Read; + + procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is + begin + X := Item; + Cnts (Output) := Cnts (Output) + 1; + end Output; + + function Get_Counts return Counts is + begin + return Cnts; + end Get_Counts; + + end Nonlimited_Stream_Ops; + + package body Limited_Stream_Ops is + Cnts : Counts := (others => 0); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T) is + begin + Cnts (Write) := Cnts (Write) + 1; + end Write; + + function Input (Stream : access Root_Stream_Type'Class) return T is + begin + Cnts (Input) := Cnts (Input) + 1; + return C; + end Input; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T) is + begin + Cnts (Read) := Cnts (Read) + 1; + end Read; + + procedure Output (Stream : access Root_Stream_Type'Class; Item : T) is + begin + Cnts (Output) := Cnts (Output) + 1; + end Output; + + function Get_Counts return Counts is + begin + return Cnts; + end Get_Counts; + + end Limited_Stream_Ops; + +end CD10002_0; + + +with Ada.Streams; +use Ada.Streams; +package CD10002_1 is + + type Dummy_Stream is new Root_Stream_Type with null record; + procedure Read (Stream : in out Dummy_Stream; + Item : out Stream_Element_Array; + Last : out Stream_Element_Offset); + procedure Write (Stream : in out Dummy_Stream; + Item : Stream_Element_Array); + +end CD10002_1; + + +with Report; +use Report; +package body CD10002_1 is + + procedure Read (Stream : in out Dummy_Stream; + Item : out Stream_Element_Array; + Last : out Stream_Element_Offset) is + begin + Failed ("Unexpected call to the Read operation of Dummy_Stream"); + end Read; + + procedure Write (Stream : in out Dummy_Stream; + Item : Stream_Element_Array) is + begin + Failed ("Unexpected call to the Write operation of Dummy_Stream"); + end Write; + +end CD10002_1; + + +with Ada.Streams; +use Ada.Streams; +with CD10002_0; +package CD10002_Deriv is + + -- Parent has user-defined subprograms. + + type T1 is new Boolean; + function Is_Odd (X : Integer) return T1; + + type T2 is + record + F : Float; + end record; + procedure Print (X : T2); + + type T3 is array (Boolean) of Duration; + function "+" (L, R : T3) return T3; + + -- Parent is by-reference. No need to check the case where the parent + -- is tagged, because the defect report only deals with untagged types. + + task type T4 is + end T4; + + protected type T5 is + end T5; + + type T6 (D : access Integer := new Integer'(2)) is limited null record; + + type T7 is array (Character) of T6; + + package P is + type T8 is limited private; + private + type T8 is new T5; + end P; + + type Nt1 is new T1; + type Nt2 is new T2; + type Nt3 is new T3; + type Nt4 is new T4; + type Nt5 is new T5; + type Nt6 is new T6; + type Nt7 is new T7; + type Nt8 is new P.T8; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt1'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2); + function Input (Stream : access Root_Stream_Type'Class) return Nt2; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3); + function Input (Stream : access Root_Stream_Type'Class) return Nt3; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4); + function Input (Stream : access Root_Stream_Type'Class) return Nt4; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5); + function Input (Stream : access Root_Stream_Type'Class) return Nt5; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6); + function Input (Stream : access Root_Stream_Type'Class) return Nt6; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7); + function Input (Stream : access Root_Stream_Type'Class) return Nt7; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8); + function Input (Stream : access Root_Stream_Type'Class) return Nt8; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8); + + for Nt1'Write use Write; + for Nt1'Read use Read; + for Nt1'Output use Output; + for Nt1'Input use Input; + + for Nt2'Write use Write; + for Nt2'Read use Read; + for Nt2'Output use Output; + for Nt2'Input use Input; + + for Nt3'Write use Write; + for Nt3'Read use Read; + for Nt3'Output use Output; + for Nt3'Input use Input; + + for Nt4'Write use Write; + for Nt4'Read use Read; + for Nt4'Output use Output; + for Nt4'Input use Input; + + for Nt5'Write use Write; + for Nt5'Read use Read; + for Nt5'Output use Output; + for Nt5'Input use Input; + + for Nt6'Write use Write; + for Nt6'Read use Read; + for Nt6'Output use Output; + for Nt6'Input use Input; + + for Nt7'Write use Write; + for Nt7'Read use Read; + for Nt7'Output use Output; + for Nt7'Input use Input; + + for Nt8'Write use Write; + for Nt8'Read use Read; + for Nt8'Output use Output; + for Nt8'Input use Input; + + -- All these variables are self-initializing. + C4 : Nt4; + C5 : Nt5; + C6 : Nt6; + C7 : Nt7; + C8 : Nt8; + + package Nt1_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt1'Base); + package Nt2_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt2); + package Nt3_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt3); + package Nt4_Ops is new CD10002_0.Limited_Stream_Ops (Nt4, C4); + package Nt5_Ops is new CD10002_0.Limited_Stream_Ops (Nt5, C5); + package Nt6_Ops is new CD10002_0.Limited_Stream_Ops (Nt6, C6); + package Nt7_Ops is new CD10002_0.Limited_Stream_Ops (Nt7, C7); + package Nt8_Ops is new CD10002_0.Limited_Stream_Ops (Nt8, C8); + +end CD10002_Deriv; + + +package body CD10002_Deriv is + + function Is_Odd (X : Integer) return T1 is + begin + return True; + end Is_Odd; + procedure Print (X : T2) is + begin + null; + end Print; + function "+" (L, R : T3) return T3 is + begin + return (False => L (False) + R (True), True => L (True) + R (False)); + end "+"; + task body T4 is + begin + null; + end T4; + protected body T5 is + end T5; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base) + renames Nt1_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base + renames Nt1_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt1'Base) + renames Nt1_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base) + renames Nt1_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2) + renames Nt2_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt2 + renames Nt2_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2) + renames Nt2_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2) + renames Nt2_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3) + renames Nt3_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt3 + renames Nt3_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3) + renames Nt3_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3) + renames Nt3_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4) + renames Nt4_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt4 + renames Nt4_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4) + renames Nt4_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4) + renames Nt4_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5) + renames Nt5_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt5 + renames Nt5_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5) + renames Nt5_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5) + renames Nt5_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6) + renames Nt6_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt6 + renames Nt6_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6) + renames Nt6_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6) + renames Nt6_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7) + renames Nt7_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt7 + renames Nt7_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7) + renames Nt7_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7) + renames Nt7_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8) + renames Nt8_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt8 + renames Nt8_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8) + renames Nt8_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8) + renames Nt8_Ops.Output; + +end CD10002_Deriv; + + +with Ada.Streams; +use Ada.Streams; +with CD10002_0; +generic + type T1 is (<>); + type T2 is range <>; + type T3 is mod <>; + type T4 is digits <>; + type T5 is delta <>; + type T6 is delta <> digits <>; + type T7 is access T3; + type T8 is new Boolean; + type T9 is private; + type T10 (<>) is limited private; -- Should be self-initializing. + C10 : in out T10; + type T11 is array (T1) of T2; +package CD10002_Gen is + + -- Direct descendants. + type Nt1 is new T1; + type Nt2 is new T2; + type Nt3 is new T3; + type Nt4 is new T4; + type Nt5 is new T5; + type Nt6 is new T6; + type Nt7 is new T7; + type Nt8 is new T8; + type Nt9 is new T9; + type Nt10 is new T10; + type Nt11 is new T11; + + -- Indirect descendants (only pick two, a limited one and a non-limited + -- one). + type Nt12 is new Nt10; + type Nt13 is new Nt11; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt1'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt2'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt2'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt3'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt3'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt4'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt4'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt5'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt5'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt6'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt6'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7); + function Input (Stream : access Root_Stream_Type'Class) return Nt7; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8'Base); + function Input (Stream : access Root_Stream_Type'Class) return Nt8'Base; + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Nt8'Base); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8'Base); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt9); + function Input (Stream : access Root_Stream_Type'Class) return Nt9; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt9); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt9); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt10); + function Input (Stream : access Root_Stream_Type'Class) return Nt10; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt10); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt10); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt11); + function Input (Stream : access Root_Stream_Type'Class) return Nt11; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt11); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt11); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt12); + function Input (Stream : access Root_Stream_Type'Class) return Nt12; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt12); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt12); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt13); + function Input (Stream : access Root_Stream_Type'Class) return Nt13; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt13); + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt13); + + for Nt1'Write use Write; + for Nt1'Read use Read; + for Nt1'Output use Output; + for Nt1'Input use Input; + + for Nt2'Write use Write; + for Nt2'Read use Read; + for Nt2'Output use Output; + for Nt2'Input use Input; + + for Nt3'Write use Write; + for Nt3'Read use Read; + for Nt3'Output use Output; + for Nt3'Input use Input; + + for Nt4'Write use Write; + for Nt4'Read use Read; + for Nt4'Output use Output; + for Nt4'Input use Input; + + for Nt5'Write use Write; + for Nt5'Read use Read; + for Nt5'Output use Output; + for Nt5'Input use Input; + + for Nt6'Write use Write; + for Nt6'Read use Read; + for Nt6'Output use Output; + for Nt6'Input use Input; + + for Nt7'Write use Write; + for Nt7'Read use Read; + for Nt7'Output use Output; + for Nt7'Input use Input; + + for Nt8'Write use Write; + for Nt8'Read use Read; + for Nt8'Output use Output; + for Nt8'Input use Input; + + for Nt9'Write use Write; + for Nt9'Read use Read; + for Nt9'Output use Output; + for Nt9'Input use Input; + + for Nt10'Write use Write; + for Nt10'Read use Read; + for Nt10'Output use Output; + for Nt10'Input use Input; + + for Nt11'Write use Write; + for Nt11'Read use Read; + for Nt11'Output use Output; + for Nt11'Input use Input; + + for Nt12'Write use Write; + for Nt12'Read use Read; + for Nt12'Output use Output; + for Nt12'Input use Input; + + for Nt13'Write use Write; + for Nt13'Read use Read; + for Nt13'Output use Output; + for Nt13'Input use Input; + + type Null_Record is null record; + + package Nt1_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt1'Base); + package Nt2_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt2'Base); + package Nt3_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt3'Base); + package Nt4_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt4'Base); + package Nt5_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt5'Base); + package Nt6_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt6'Base); + package Nt7_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt7); + package Nt8_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt8'Base); + package Nt9_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt9); + package Nt11_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt11); + package Nt13_Ops is new CD10002_0.Nonlimited_Stream_Ops (Nt13); + + function Get_Nt10_Counts return CD10002_0.Counts; + function Get_Nt12_Counts return CD10002_0.Counts; + +end CD10002_Gen; + + +package body CD10002_Gen is + + use CD10002_0; + + Nt10_Cnts : Counts := (others => 0); + Nt12_Cnts : Counts := (others => 0); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt1'Base) + renames Nt1_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt1'Base + renames Nt1_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt1'Base) + renames Nt1_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt1'Base) + renames Nt1_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt2'Base) + renames Nt2_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt2'Base + renames Nt2_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt2'Base) + renames Nt2_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt2'Base) + renames Nt2_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt3'Base) + renames Nt3_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt3'Base + renames Nt3_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt3'Base) + renames Nt3_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt3'Base) + renames Nt3_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt4'Base) + renames Nt4_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt4'Base + renames Nt4_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt4'Base) + renames Nt4_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt4'Base) + renames Nt4_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt5'Base) + renames Nt5_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt5'Base + renames Nt5_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt5'Base) + renames Nt5_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt5'Base) + renames Nt5_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt6'Base) + renames Nt6_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt6'Base + renames Nt6_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt6'Base) + renames Nt6_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt6'Base) + renames Nt6_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt7) + renames Nt7_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt7 + renames Nt7_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt7) + renames Nt7_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt7) + renames Nt7_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt8'Base) + renames Nt8_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt8'Base + renames Nt8_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt8'Base) + renames Nt8_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt8'Base) + renames Nt8_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt9) + renames Nt9_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt9 + renames Nt9_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt9) + renames Nt9_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt9) + renames Nt9_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt10) is + begin + Nt10_Cnts (Write) := Nt10_Cnts (Write) + 1; + end Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt10 is + begin + Nt10_Cnts (Input) := Nt10_Cnts (Input) + 1; + return Nt10 (C10); + end Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt10) is + begin + Nt10_Cnts (Read) := Nt10_Cnts (Read) + 1; + end Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt10) is + begin + Nt10_Cnts (Output) := Nt10_Cnts (Output) + 1; + end Output; + function Get_Nt10_Counts return CD10002_0.Counts is + begin + return Nt10_Cnts; + end Get_Nt10_Counts; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt11) + renames Nt11_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt11 + renames Nt11_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt11) + renames Nt11_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt11) + renames Nt11_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt12) is + begin + Nt12_Cnts (Write) := Nt12_Cnts (Write) + 1; + end Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt12 is + begin + Nt12_Cnts (Input) := Nt12_Cnts (Input) + 1; + return Nt12 (C10); + end Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt12) is + begin + Nt12_Cnts (Read) := Nt12_Cnts (Read) + 1; + end Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt12) is + begin + Nt12_Cnts (Output) := Nt12_Cnts (Output) + 1; + end Output; + function Get_Nt12_Counts return CD10002_0.Counts is + begin + return Nt12_Cnts; + end Get_Nt12_Counts; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : Nt13) + renames Nt13_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Nt13 + renames Nt13_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Nt13) + renames Nt13_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Nt13) + renames Nt13_Ops.Output; + +end CD10002_Gen; + + +with Ada.Streams; +use Ada.Streams; +with CD10002_0; +package CD10002_Priv is + + External_Tag_1 : constant String := "Isaac Newton"; + External_Tag_2 : constant String := "Albert Einstein"; + + type T1 is tagged private; + type T2 is tagged + record + C : T1; + end record; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T1); + function Input (Stream : access Root_Stream_Type'Class) return T1; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T1); + procedure Output (Stream : access Root_Stream_Type'Class; Item : T1); + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T2); + function Input (Stream : access Root_Stream_Type'Class) return T2; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T2); + procedure Output (Stream : access Root_Stream_Type'Class; Item : T2); + + for T1'Write use Write; + for T1'Input use Input; + + for T2'Read use Read; + for T2'Output use Output; + for T2'External_Tag use External_Tag_2; + + function Get_T1_Counts return CD10002_0.Counts; + function Get_T2_Counts return CD10002_0.Counts; + +private + + for T1'Read use Read; + for T1'Output use Output; + for T1'External_Tag use External_Tag_1; + + for T2'Write use Write; + for T2'Input use Input; + + type T1 is tagged null record; + + package T1_Ops is new CD10002_0.Nonlimited_Stream_Ops (T1); + package T2_Ops is new CD10002_0.Nonlimited_Stream_Ops (T2); + +end CD10002_Priv; + + +package body CD10002_Priv is + procedure Write (Stream : access Root_Stream_Type'Class; Item : T1) + renames T1_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return T1 + renames T1_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T1) + renames T1_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : T1) + renames T1_Ops.Output; + + procedure Write (Stream : access Root_Stream_Type'Class; Item : T2) + renames T2_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return T2 + renames T2_Ops.Input; + procedure Read (Stream : access Root_Stream_Type'Class; Item : out T2) + renames T2_Ops.Read; + procedure Output (Stream : access Root_Stream_Type'Class; Item : T2) + renames T2_Ops.Output; + + function Get_T1_Counts return CD10002_0.Counts renames T1_Ops.Get_Counts; + function Get_T2_Counts return CD10002_0.Counts renames T2_Ops.Get_Counts; +end CD10002_Priv; + + +with Ada.Streams; +use Ada.Streams; +with Report; +use Report; +with System; +with CD10002_0; +with CD10002_1; +with CD10002_Deriv; +with CD10002_Gen; +with CD10002_Priv; +procedure CD10002 is + + package Deriv renames CD10002_Deriv; + generic package Gen renames CD10002_Gen; + package Priv renames CD10002_Priv; + + type Stream_Ops is (Read, Write, Input, Output); + type Counts is array (Stream_Ops) of Natural; + + S : aliased CD10002_1.Dummy_Stream; + +begin + Test ("CD10002", + "Check that operational items are allowed in some contexts " & + "where representation items are not"); + + Test_Priv: + declare + X1 : Priv.T1; + X2 : Priv.T2; + use CD10002_0; + begin + Comment + ("Check that the name of an incompletely defined type can be " & + "used when specifying an operational item"); + + -- Partial view of a private type. + Priv.T1'Write (S'Access, X1); + Priv.T1'Read (S'Access, X1); + Priv.T1'Output (S'Access, X1); + X1 := Priv.T1'Input (S'Access); + + if Priv.Get_T1_Counts /= (1, 1, 1, 1) then + Failed ("Incorrect calls to the stream attributes for Priv.T1"); + elsif Priv.T1'External_Tag /= Priv.External_Tag_1 then + Failed ("Incorrect external tag for Priv.T1"); + end if; + + -- Incompletely defined but not private. + Priv.T2'Write (S'Access, X2); + Priv.T2'Read (S'Access, X2); + Priv.T2'Output (S'Access, X2); + X2 := Priv.T2'Input (S'Access); + + if Priv.Get_T2_Counts /= (1, 1, 1, 1) then + Failed ("Incorrect calls to the stream attributes for Priv.T2"); + elsif Priv.T2'External_Tag /= Priv.External_Tag_2 then + Failed ("Incorrect external tag for Priv.T2"); + end if; + + end Test_Priv; + + Test_Gen: + declare + + type Modular is mod System.Max_Binary_Modulus; + type Decimal is delta 1.0 digits 1; + type Access_Modular is access Modular; + type R9 is null record; + type R10 (D : access Integer) is limited null record; + type Arr is array (Character) of Integer; + + C10 : R10 (new Integer'(19)); + + package Inst is new Gen (T1 => Character, + T2 => Integer, + T3 => Modular, + T4 => Float, + T5 => Duration, + T6 => Decimal, + T7 => Access_Modular, + T8 => Boolean, + T9 => R9, + T10 => R10, + C10 => C10, + T11 => Arr); + + X1 : Inst.Nt1 := 'a'; + X2 : Inst.Nt2 := 0; + X3 : Inst.Nt3 := 0; + X4 : Inst.Nt4 := 0.0; + X5 : Inst.Nt5 := 0.0; + X6 : Inst.Nt6 := 0.0; + X7 : Inst.Nt7 := null; + X8 : Inst.Nt8 := Inst.False; + X9 : Inst.Nt9 := (null record); + X10 : Inst.Nt10 (D => new Integer'(5)); + Y10 : Integer; + X11 : Inst.Nt11 := (others => 0); + X12 : Inst.Nt12 (D => new Integer'(7)); + Y12 : Integer; + X13 : Inst.Nt13 := (others => 0); + use CD10002_0; + begin + Comment ("Check that operational items can be specified for a " & + "descendant of a generic formal untagged type"); + + Inst.Nt1'Write (S'Access, X1); + Inst.Nt1'Read (S'Access, X1); + Inst.Nt1'Output (S'Access, X1); + X1 := Inst.Nt1'Input (S'Access); + + if Inst.Nt1_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt1"); + end if; + + Inst.Nt2'Write (S'Access, X2); + Inst.Nt2'Read (S'Access, X2); + Inst.Nt2'Output (S'Access, X2); + X2 := Inst.Nt2'Input (S'Access); + + if Inst.Nt2_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt2"); + end if; + + Inst.Nt3'Write (S'Access, X3); + Inst.Nt3'Read (S'Access, X3); + Inst.Nt3'Output (S'Access, X3); + X3 := Inst.Nt3'Input (S'Access); + + if Inst.Nt3_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt3"); + end if; + + Inst.Nt4'Write (S'Access, X4); + Inst.Nt4'Read (S'Access, X4); + Inst.Nt4'Output (S'Access, X4); + X4 := Inst.Nt4'Input (S'Access); + + if Inst.Nt4_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt4"); + end if; + + Inst.Nt5'Write (S'Access, X5); + Inst.Nt5'Read (S'Access, X5); + Inst.Nt5'Output (S'Access, X5); + X5 := Inst.Nt5'Input (S'Access); + + if Inst.Nt5_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt5"); + end if; + + Inst.Nt6'Write (S'Access, X6); + Inst.Nt6'Read (S'Access, X6); + Inst.Nt6'Output (S'Access, X6); + X6 := Inst.Nt6'Input (S'Access); + + if Inst.Nt6_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt6"); + end if; + + Inst.Nt7'Write (S'Access, X7); + Inst.Nt7'Read (S'Access, X7); + Inst.Nt7'Output (S'Access, X7); + X7 := Inst.Nt7'Input (S'Access); + + if Inst.Nt7_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt7"); + end if; + + Inst.Nt8'Write (S'Access, X8); + Inst.Nt8'Read (S'Access, X8); + Inst.Nt8'Output (S'Access, X8); + X8 := Inst.Nt8'Input (S'Access); + + if Inst.Nt8_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt8"); + end if; + + Inst.Nt9'Write (S'Access, X9); + Inst.Nt9'Read (S'Access, X9); + Inst.Nt9'Output (S'Access, X9); + X9 := Inst.Nt9'Input (S'Access); + + if Inst.Nt9_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt9"); + end if; + + Inst.Nt10'Write (S'Access, X10); + Inst.Nt10'Read (S'Access, X10); + Inst.Nt10'Output (S'Access, X10); + Y10 := Inst.Nt10'Input (S'Access).D.all; + + if Inst.Get_Nt10_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt10"); + end if; + + Inst.Nt11'Write (S'Access, X11); + Inst.Nt11'Read (S'Access, X11); + Inst.Nt11'Output (S'Access, X11); + X11 := Inst.Nt11'Input (S'Access); + + if Inst.Nt11_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt11"); + end if; + + Inst.Nt12'Write (S'Access, X12); + Inst.Nt12'Read (S'Access, X12); + Inst.Nt12'Output (S'Access, X12); + Y12 := Inst.Nt12'Input (S'Access).D.all; + + if Inst.Get_Nt12_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt12"); + end if; + + Inst.Nt13'Write (S'Access, X13); + Inst.Nt13'Read (S'Access, X13); + Inst.Nt13'Output (S'Access, X13); + X13 := Inst.Nt13'Input (S'Access); + + if Inst.Nt13_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Inst.Nt13"); + end if; + end Test_Gen; + + Test_Deriv: + declare + X1 : Deriv.Nt1 := Deriv.False; + X2 : Deriv.Nt2 := (others => 0.0); + X3 : Deriv.Nt3 := (others => 0.0); + X4 : Deriv.Nt4; + Y4 : Boolean; + X5 : Deriv.Nt5; + Y5 : System.Address; + X6 : Deriv.Nt6; + Y6 : Integer; + X7 : Deriv.Nt7; + Y7 : Integer; + X8 : Deriv.Nt8; + Y8 : Integer; + use CD10002_0; + begin + Comment ("Check that operational items can be specified for a " & + "derived untagged type even if the parent type is a " & + "by-reference type, or has user-defined primitive " & + "subprograms"); + + Deriv.Nt1'Write (S'Access, X1); + Deriv.Nt1'Read (S'Access, X1); + Deriv.Nt1'Output (S'Access, X1); + X1 := Deriv.Nt1'Input (S'Access); + + if Deriv.Nt1_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt1"); + end if; + + Deriv.Nt2'Write (S'Access, X2); + Deriv.Nt2'Read (S'Access, X2); + Deriv.Nt2'Output (S'Access, X2); + X2 := Deriv.Nt2'Input (S'Access); + + if Deriv.Nt2_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt2"); + end if; + + Deriv.Nt3'Write (S'Access, X3); + Deriv.Nt3'Read (S'Access, X3); + Deriv.Nt3'Output (S'Access, X3); + X3 := Deriv.Nt3'Input (S'Access); + + if Deriv.Nt3_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt3"); + end if; + + Deriv.Nt4'Write (S'Access, X4); + Deriv.Nt4'Read (S'Access, X4); + Deriv.Nt4'Output (S'Access, X4); + Y4 := Deriv.Nt4'Input (S'Access)'Terminated; + + if Deriv.Nt4_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt4"); + end if; + + Deriv.Nt5'Write (S'Access, X5); + Deriv.Nt5'Read (S'Access, X5); + Deriv.Nt5'Output (S'Access, X5); + Y5 := Deriv.Nt5'Input (S'Access)'Address; + + if Deriv.Nt5_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt5"); + end if; + + Deriv.Nt6'Write (S'Access, X6); + Deriv.Nt6'Read (S'Access, X6); + Deriv.Nt6'Output (S'Access, X6); + Y6 := Deriv.Nt6'Input (S'Access).D.all; + + if Deriv.Nt6_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt6"); + end if; + + Deriv.Nt7'Write (S'Access, X7); + Deriv.Nt7'Read (S'Access, X7); + Deriv.Nt7'Output (S'Access, X7); + Y7 := Deriv.Nt7'Input (S'Access) ('a').D.all; + + if Deriv.Nt7_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt7"); + end if; + + Deriv.Nt8'Write (S'Access, X8); + Deriv.Nt8'Read (S'Access, X8); + Deriv.Nt8'Output (S'Access, X8); + Y8 := Deriv.Nt8'Input (S'Access)'Size; + + if Deriv.Nt8_Ops.Get_Counts /= (1, 1, 1, 1) then + Failed + ("Incorrect calls to the stream attributes for Deriv.Nt8"); + end if; + end Test_Deriv; + + Result; +end CD10002; + + Index: cd7204b.ada =================================================================== --- cd7204b.ada (nonexistent) +++ cd7204b.ada (revision 338) @@ -0,0 +1,88 @@ +-- CD7204B.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 PREFIX OF THE 'POSITION, 'LAST_BIT, AND 'FIRST_BIT +-- ATTRIBUTES CAN DENOTE A RECORD COMPONENT, AND THE ATTRIBUTES +-- RETURN APPROPRIATE VALUES WHEN A RECORD REPRESENTATION CLAUSE IS +-- NOT PRESENT. + +-- HISTORY: +-- BCB 09/14/87 CREATED ORIGINAL TEST. +-- RJW 02/08/88 REVISED SO THAT TEST PASSES IF BOOLEAN'SIZE = 1. +-- RJW 05/31/90 CORRECTED COMPARISONS INVOLVING SIZES. +-- LDC 10/04/90 ADDED CHECK FOR 'POSITION. + +WITH REPORT; USE REPORT; + +PROCEDURE CD7204B IS + + TYPE BASIC_REC IS RECORD + CHECK_INT : INTEGER := 5; + CHECK_BOOL : BOOLEAN := TRUE; + END RECORD; + + CHECK_REC : BASIC_REC; + +BEGIN + + TEST ("CD7204B", "CHECK THAT THE PREFIX OF THE 'POSITION, " & + "'LAST_BIT, AND 'FIRST_BIT ATTRIBUTES CAN " & + "DENOTE A RECORD COMPONENT, AND THE ATTRIBUTES " & + "RETURN APPROPRIATE VALUES WHEN A RECORD " & + "REPRESENTATION CLAUSE IS NOT PRESENT"); + + IF CHECK_REC.CHECK_INT'FIRST_BIT >= CHECK_REC.CHECK_INT'LAST_BIT + THEN FAILED ("INCORRECT VALUES FOR FIRST_BIT OR LAST_BIT " & + "OF CHECK_INT"); + END IF; + + IF (CHECK_REC.CHECK_INT'LAST_BIT - CHECK_REC.CHECK_INT'FIRST_BIT + + 1) < INTEGER'SIZE THEN + FAILED ("INCORRECT SIZE FOR CHECK_INT"); + END IF; + + IF CHECK_REC.CHECK_BOOL'POSITION <= CHECK_REC.CHECK_INT'POSITION + THEN FAILED ("INCORRECT VALUE FOR 'POSITION OF CHECK_INT " & + "OR CHECK_BOOL"); + END IF; + + IF CHECK_REC.CHECK_INT'POSITION >= CHECK_REC.CHECK_BOOL'POSITION + THEN FAILED ("INCORRECT VALUE FOR 'POSITION OF CHECK_INT " & + "OR CHECK_BOOL - 2"); + END IF; + + IF CHECK_REC.CHECK_BOOL'FIRST_BIT > CHECK_REC.CHECK_BOOL'LAST_BIT + THEN FAILED ("INCORRECT VALUE FOR FIRST_BIT OR LAST_BIT " & + "OF CHECK_BOOL"); + END IF; + + IF (CHECK_REC.CHECK_BOOL'LAST_BIT - CHECK_REC.CHECK_BOOL'FIRST_BIT + + 1) < BOOLEAN'SIZE THEN + FAILED ("INCORRECT SIZE FOR CHECK_BOOL"); + END IF; + + RESULT; + +END CD7204B; Index: cd40001.a =================================================================== --- cd40001.a (nonexistent) +++ cd40001.a (revision 338) @@ -0,0 +1,181 @@ +-- CD40001.A +-- +-- 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 Enumeration_Representation_Clauses are supported for +-- codes in the range System.Min_Int..System.Max_Int. +-- +-- TEST DESCRIPTION: +-- This test defines several types, and checks that the range of the +-- enumeration clause is as expected. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- +-- CHANGE HISTORY: +-- 22 JUL 95 SAIC Initial version +-- 07 MAY 96 SAIC Revised for 2.1 +-- 16 FEB 98 EDS Modified Documentation. +--! + +with System; +with Ada.Unchecked_Conversion; +package CD40001_0 is + + type Press_The_Bounds is ( Negative_Large, Positive_Large ); + + for Press_The_Bounds use + ( Negative_Large => System.Min_Int, -- ANX-C RQMT. + Positive_Large => System.Max_Int ); -- ANX-C RQMT. + + type Add_The_Bounds is + ( Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); + + for Add_The_Bounds use + ( Monday => System.Min_Int, -- ANX-C RQMT. + Tuesday => System.Min_Int + 1, -- ANX-C RQMT. + Wednesday => System.Min_Int + 2, -- ANX-C RQMT. + Thursday => System.Min_Int + 3, -- ANX-C RQMT. + Friday => System.Min_Int + 4, -- ANX-C RQMT. + Saturday => System.Min_Int + 5 ); -- ANX-C RQMT. + + type Minus_The_Bounds is ( Jan, Feb, Mar, Apr); + + for Minus_The_Bounds use + ( Apr => System.Max_Int, -- ANX-C RQMT. + Mar => System.Max_Int - 1, -- ANX-C RQMT. + Feb => System.Max_Int - 2, -- ANX-C RQMT. + Jan => System.Max_Int - 3 ); -- ANX-C RQMT. + + type TC_Integer is range System.Min_Int..System.Max_Int; + + procedure TC_Check_Press; + + procedure TC_Check_Add; + + procedure TC_Check_Minus; + + function TC_Compare_Press is new Ada.Unchecked_Conversion + (Press_The_Bounds, TC_Integer); + + function TC_Compare_Add is new Ada.Unchecked_Conversion + (Add_The_Bounds, TC_Integer); + + function TC_Compare_Minus is new Ada.Unchecked_Conversion + (Minus_The_Bounds, TC_Integer); + +end CD40001_0; + + --==================================================================-- + +with Report; +package body CD40001_0 is + + procedure TC_Check_Press is + My_Press_First : Press_The_Bounds := Negative_Large; + My_Press_Last : Press_The_Bounds := Positive_Large; + begin + if TC_Compare_Press (My_Press_First) /= System.Min_Int or + TC_Compare_Press (My_Press_Last) /= System.Max_Int + then + Report.Failed + ("Expected enumeration size of System.Min_Int and System.Max_Int " & + "not available for this implementation"); + end if; + end TC_Check_Press; + + --------------------------------------------------------------------------- + procedure TC_Check_Add is + My_Monday : Add_The_Bounds := Monday; + My_Tuesday : Add_The_Bounds := Tuesday; + My_Wednesday : Add_The_Bounds := Wednesday; + My_Thursday : Add_The_Bounds := Thursday; + My_Friday : Add_The_Bounds := Friday; + My_Saturday : Add_The_Bounds := Saturday; + begin + if TC_Compare_Add (My_Monday) /= (System.Min_Int) or + TC_Compare_Add (My_Thursday) /= (System.Min_Int + 3) or + TC_Compare_Add (My_Wednesday) /= (System.Min_Int + 2) or + TC_Compare_Add (My_Tuesday) /= (System.Min_Int + 1) or + TC_Compare_Add (My_Saturday) /= (System.Min_Int + 5) or + TC_Compare_Add (My_Friday) /= (System.Min_Int + 4) + then + Report.Failed + ("Expected enumeration size of System.Min_Int, System.Min_Int + 1 " & + "through System.Min_Int + 5 not available for this implementation"); + end if; + end TC_Check_Add; + + --------------------------------------------------------------------------- + procedure TC_Check_Minus is + My_Jan : Minus_The_Bounds := Jan; + My_Feb : Minus_The_Bounds := Feb; + My_Mar : Minus_The_Bounds := Mar; + My_Apr : Minus_The_Bounds := Apr; + begin + if TC_Compare_Minus (My_Jan) /= (System.Max_Int - 3) or + TC_Compare_Minus (My_Feb) /= (System.Max_Int - 2) or + TC_Compare_Minus (My_Mar) /= (System.Max_Int - 1) or + TC_Compare_Minus (My_Apr) /= (System.Max_Int) + then + Report.Failed + ("Expected enumeration size of System.Max_Int, System.Max_Int - 1 " & + "through System.Max_Int - 3 not available for this implementation"); + end if; + end TC_Check_Minus; + +end CD40001_0; + + --==================================================================-- + +with Report; +with CD40001_0; + +procedure CD40001 is + +begin -- Main test procedure. + + Report.Test ("CD40001", "Check that Enumeration_Representation_Clauses " & + "are supported for codes in the range " & + "System.Min_Int..System.Max_Int" ); + + CD40001_0.TC_Check_Press; + + CD40001_0.TC_Check_Add; + + CD40001_0.TC_Check_Minus; + + Report.Result; + +end CD40001; Index: cd7305a.ada =================================================================== --- cd7305a.ada (nonexistent) +++ cd7305a.ada (revision 338) @@ -0,0 +1,52 @@ +-- CD7305A.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, FOR DIGITS 5, THAT MACHINE_RADIX, MACHINE_MANTISSA, +-- MACHINE_EMAX, AND MACHINE_EMIN HAVE THE CORRECT VALUES. + +-- HISTORY: +-- DHH 09/15/88 CREATED ORIGINAL TEST. +-- PWN 02/02/95 REMOVED INCONSISTENCIES WITH ADA 9X. + +WITH REPORT; USE REPORT; +PROCEDURE CD7305A IS + + TYPE T IS DIGITS 5; + + B : BOOLEAN := FALSE; + +BEGIN + TEST ("CD7305A", "CHECK, FOR DIGITS 5, THAT MACHINE_RADIX, " & + "MACHINE_MANTISSA, MACHINE_EMAX, AND " & + "MACHINE_EMIN HAVE THE CORRECT VALUES"); + + + IF T'MACHINE_RADIX < 2 OR + T'BASE'MACHINE_RADIX /= T'MACHINE_RADIX THEN + FAILED ("INCORRECT 'MACHINE_RADIX"); + END IF; + + RESULT; +END CD7305A; Index: cd30004.a =================================================================== --- cd30004.a (nonexistent) +++ cd30004.a (revision 338) @@ -0,0 +1,215 @@ +-- CD30004.A +-- +-- 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 unspecified Size of static discrete +-- subtypes is the number of bits needed to represent each value +-- belonging to the subtype using an unbiased representation, where +-- space for a sign bit is provided only in the event the subtype +-- contains negative values. Check that for first subtypes specified +-- Sizes are supported reflecting this representation. [ARM 95 13.3(55)]. +-- +-- TEST DESCRIPTION: +-- This test defines a few types that should have distinctly recognizable +-- sizes. A packed record which should result in very specific bits +-- sizes for it's components is used to check the first part of the +-- objective. The second part of the objective is checked by giving +-- sizes for a similar set of types. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- CHANGE HISTORY: +-- 22 JUL 95 SAIC Initial version +-- 06 MAY 96 SAIC Revised for 2.1 +-- 26 FEB 97 PWB.CTA Added pragma Pack for type Check_Record +-- 16 FEB 98 EDS Modified Documentation. +-- 06 JUL 99 RLB Repaired comments, removed junk test cases. +-- Added test cases to test that appropriate Size +-- clauses are allowed. + +--! +----------------------------------------------------------------- CD30004_0 + +package CD30004_0 is + +-- Check that the unspecified Size of static discrete and fixed point +-- subtypes are the number of bits needed to represent each value +-- belonging to the subtype using an unbiased representation, where +-- space for a sign bit is provided only in the event the subtype +-- contains negative values. Check that for first subtypes specified +-- Sizes are supported reflecting this representation. + + type Bits_2 is ( Zeroth_Bit, Fiercest_Bit, Secants_Bit, Threadless_Bit ); + + type Bits_3 is range 0..2**3-1; + + type Bits_5 is range -2**4+1..2**4-1; -- allow for 1's comp + + type Bits_14 is mod 2**14; + + type Check_Record is + record + B14 : Bits_14; + B2 : Bits_2; + B3 : Bits_3; + B5 : Bits_5; + C : Character; + end record; + pragma Pack ( Check_Record ); + + procedure TC_Check_Values; + procedure TC_Check_Specified_Sizes; + +end CD30004_0; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +with Report; +with Impdef; +package body CD30004_0 is + + procedure TC_Check_Values is + begin + + if Bits_2'Size /= 2 then + if Impdef.Validating_Annex_C then + Report.Failed("Bits_2'Size not 2 bits"); + else -- Recommended levels of support are not binding. + Report.Comment("Bits_2'Size not 2 bits"); + end if; + end if; + + if Bits_14'Size /= 14 then + if Impdef.Validating_Annex_C then + Report.Failed("Bits_14'Size not 14 bits"); + else + Report.Comment("Bits_14'Size not 14 bits"); + end if; + end if; + + if Bits_3'Size /= 3 then + if Impdef.Validating_Annex_C then + Report.Failed("Bits_3'Size not 3 bits"); + else + Report.Comment("Bits_3'Size not 3 bits"); + end if; + end if; + + if Bits_5'Size /= 5 then + if Impdef.Validating_Annex_C then + Report.Failed("Bits_5'Size not 5 bits"); + else + Report.Comment("Bits_5'Size not 5 bits"); + end if; + end if; + + if Character'Size /= 8 then + Report.Failed("Character'Size not 8 bits"); + end if; + + if Wide_Character'Size /= 16 then + Report.Failed("Wide_Character'Size not 16 bits"); + end if; + + end TC_Check_Values; + + type Spec_Bits_2 is ( Zeroth_Bit, Fiercest_Bit, Secants_Bit, Threadless_Bit ); + for Spec_Bits_2'Size use 2; -- ANX-C RQMT. + + type Spec_Bits_3 is range 0..2**3-1; + for Spec_Bits_3'Size use 3; -- ANX-C RQMT. + + type Spec_Bits_5 is range -2**4+1..2**4-1; -- allow for 1's comp + for Spec_Bits_5'Size use 5; -- ANX-C RQMT. + + type Spec_Bits_14 is mod 2**14; + for Spec_Bits_14'Size use 14; -- ANX-C RQMT. + + type Spec_Record is new Check_Record; + for Spec_Record'Size use 64; -- ANX-C RQMT. + + procedure TC_Check_Specified_Sizes is + + begin + + if Spec_Record'Size /= 64 then + Report.Failed("Spec_Record'Size not 64 bits"); + end if; + + if Spec_Bits_2'Size /= 2 then + Report.Failed("Spec_Bits_2'Size not 2 bits"); + end if; + + if Spec_Bits_14'Size /= 14 then + Report.Failed("Spec_Bits_14'Size not 14 bits"); + end if; + + if Spec_Bits_3'Size /= 3 then + Report.Failed("Spec_Bits_3'Size not 3 bits"); + end if; + + if Spec_Bits_5'Size /= 5 then + Report.Failed("Spec_Bits_5'Size not 5 bits"); + end if; + + end TC_Check_Specified_Sizes; + +end CD30004_0; + +------------------------------------------------------------------- CD30004 + +with Report; +with CD30004_0; + +procedure CD30004 is + +begin -- Main test procedure. + + Report.Test ("CD30004", "Check that the unspecified Size of static " & + "discrete and fixed point subtypes is the number of bits " & + "needed to represent each value belonging to the subtype " & + "using an unbiased representation, where space for a sign " & + "bit is provided only in the event the subtype contains " & + "negative values. Check that for first subtypes " & + "specified Sizes are supported reflecting this " & + "representation."); + + CD30004_0.TC_Check_Values; + + CD30004_0.TC_Check_Specified_Sizes; + + Report.Result; + +end CD30004; Index: cd2a83c.tst =================================================================== --- cd2a83c.tst (nonexistent) +++ cd2a83c.tst (revision 338) @@ -0,0 +1,101 @@ +-- CD2A83C.TST + +-- 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 SIZE AND COLLECTION SIZE SPECIFICATIONS +-- FOR AN ACCESS TYPE CAN BE GIVEN IN THE VISIBLE OR +-- PRIVATE PART OF A PACKAGE FOR A TYPE DECLARED IN +-- THE VISIBLE PART. + +-- HISTORY: +-- JET 09/01/87 CREATED ORIGINAL TEST. +-- DHH 04/11/89 CHANGED OPERATOR ON 'SIZE CHECKS AND REMOVED +-- APPLICABILITY CRITERIA. + +-- $ACC_SIZE IS THE SIZE IN BITS FOR AN ACCESS VARIABLE WHOSE +-- DESIGNATED TYPE IS A STRING TYPE. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A83C IS + + SPECIFIED_SIZE : CONSTANT := $ACC_SIZE; + COLL_SIZE : CONSTANT := 256; + + TYPE CHECK_ACC IS ACCESS STRING; + + FOR CHECK_ACC'STORAGE_SIZE USE COLL_SIZE; + + FOR CHECK_ACC'SIZE USE SPECIFIED_SIZE; + + PACKAGE P IS + TYPE ACC_IN_P IS ACCESS STRING; + FOR ACC_IN_P'STORAGE_SIZE USE COLL_SIZE; + FOR ACC_IN_P'SIZE USE SPECIFIED_SIZE; + TYPE PRIVATE_ACC IS PRIVATE; + TYPE ALT_ACC_IN_P IS ACCESS STRING; + PRIVATE + TYPE PRIVATE_ACC IS ACCESS STRING; + FOR ALT_ACC_IN_P'STORAGE_SIZE USE COLL_SIZE; + FOR ALT_ACC_IN_P'SIZE USE SPECIFIED_SIZE; + END P; + + USE P; + + MINIMUM_SIZE : INTEGER := IDENT_INT(SPECIFIED_SIZE); + +BEGIN + + TEST("CD2A83C", "CHECK THAT WHEN SIZE AND COLLECTION SIZE " & + "SPECIFICATIONS FOR AN ACCESS TYPE, " & + "CAN BE GIVEN IN " & + "THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR " & + "A TYPE DECLARED IN THE VISIBLE PART"); + + IF CHECK_ACC'SIZE /= MINIMUM_SIZE THEN + FAILED ("CHECK_ACC'SIZE /= SPECIFIED_SIZE"); + END IF; + + IF CHECK_ACC'STORAGE_SIZE < COLL_SIZE THEN + FAILED ("CHECK_ACC'STORAGE_SIZE TOO SMALL"); + END IF; + + IF ACC_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("ACC_IN_P'SIZE /= SPECIFIED_SIZE"); + END IF; + + IF ACC_IN_P'STORAGE_SIZE < COLL_SIZE THEN + FAILED ("ACC_IN_P'STORAGE_SIZE TOO SMALL"); + END IF; + + IF ALT_ACC_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("ALT_ACC_IN_P'SIZE /= SPECIFIED_SIZE"); + END IF; + + IF ALT_ACC_IN_P'STORAGE_SIZE < COLL_SIZE THEN + FAILED ("ALT_ACC_IN_P'STORAGE_SIZE TOO SMALL"); + END IF; + + RESULT; + +END CD2A83C; Index: cd92001.a =================================================================== --- cd92001.a (nonexistent) +++ cd92001.a (revision 338) @@ -0,0 +1,229 @@ +-- CD92001.A +-- +-- 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 if X denotes a scalar object, X'Valid +-- yields true if an only if the object denoted by X is normal and +-- has a valid representation. +-- +-- TEST DESCRIPTION: +-- Using Unchecked_Conversion, Image and Value attributes, combined +-- with string manipulation, cause valid and invalid values to be +-- stored in various objects. Check their validity with the +-- attribute 'Valid. Invalid objects are created in a loop which +-- performs a simplistic check to ensure that the values being used +-- are indeed not valid, then assigns the value using an instance of +-- Unchecked_Conversion. The creation of the tables of valid values +-- is trivial. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- N/A => ERROR", in which case it may be graded as +-- inapplicable. Otherwise, the test must execute and report PASSED. +-- +-- +-- CHANGE HISTORY: +-- 10 MAY 95 SAIC Initial version +-- 07 MAY 96 SAIC Changed U_C to Ada.U_C for 2.1 +-- 05 JAN 99 RLB Added Component_Size clauses to compensate +-- for the fact that there is no required size +-- for either the enumeration or modular components. +--! + +with Report; +with Ada.Unchecked_Conversion; +with System; +procedure CD92001 is + + type Sparse_Enumerated is + ( Help, Home, Page_Up, Del, EndK, + Page_Down, Up, Left, Down, Right ); + + for Sparse_Enumerated use ( Help => 2, + Home => 4, + Page_Up => 8, + Del => 16, + EndK => 32, + Page_Down => 64, + Up => 128, + Left => 256, + Down => 512, + Right => 1024 ); + + type Mod_10 is mod 10; + + type Default_Enumerated is ( Zero, One, Two, Three, Four, + Five, Six, Seven, Eight, Nine, + Clear, '=', '/', '*', '-', + '+', Enter ); + for Default_Enumerated'Size use 8; + + Default_Enumerated_Count : constant := 17; + + type Mod_By_Enum_Items is mod Default_Enumerated_Count; + + type Mod_Same_Size_As_Sparse_Enum is mod 2**12; + -- Sparse_Enumerated 'Size; + + type Mod_Same_Size_As_Def_Enum is mod 2**8; + -- Default_Enumerated'Size; + + subtype Test_Width is Positive range 1..100; + + -- Note: There is no required relationship between 'Size and 'Component_Size, + -- so we must use component_size clauses here. + -- We use the following expressions to insure that the component size is a + -- multiple of the Storage_Unit. + Sparse_Component_Size : constant := ((Sparse_Enumerated'Size / System.Storage_Unit) + + Boolean'Pos((Sparse_Enumerated'Size mod System.Storage_Unit) /= 0)) * + System.Storage_Unit; + Default_Component_Size : constant := ((Default_Enumerated'Size / System.Storage_Unit) + + Boolean'Pos((Sparse_Enumerated'Size mod System.Storage_Unit) /= 0)) * + System.Storage_Unit; + + type Sparse_Enum_Table is array(Test_Width) of Sparse_Enumerated; + for Sparse_Enum_Table'Component_Size use Sparse_Component_Size; -- N/A => ERROR. + type Def_Enum_Table is array(Test_Width) of Default_Enumerated; + for Def_Enum_Table'Component_Size use Default_Component_Size; -- N/A => ERROR. + + type Sparse_Mod_Table is + array(Test_Width) of Mod_Same_Size_As_Sparse_Enum; + for Sparse_Mod_Table'Component_Size use Sparse_Component_Size; -- N/A => ERROR. + + type Default_Mod_Table is + array(Test_Width) of Mod_Same_Size_As_Def_Enum; + for Default_Mod_Table'Component_Size use Default_Component_Size; -- N/A => ERROR. + + function UC_Sparse_Mod_Enum is + new Ada.Unchecked_Conversion( Sparse_Mod_Table, Sparse_Enum_Table ); + + function UC_Def_Mod_Enum is + new Ada.Unchecked_Conversion( Default_Mod_Table, Def_Enum_Table ); + + Valid_Sparse_Values : Sparse_Enum_Table; + Valid_Def_Values : Def_Enum_Table; + + Sample_Enum_Value_Table : Sparse_Mod_Table; + Sample_Def_Value_Table : Default_Mod_Table; + + + -- fill the Valid tables with valid values for conversion + procedure Fill_Valid is + K : Mod_10 := 0; + P : Mod_By_Enum_Items := 0; + begin + for I in Test_Width loop + Valid_Sparse_Values(I) := Sparse_Enumerated'Val( K ); + Valid_Def_Values(I) := Default_Enumerated'Val( Integer(P) ); + K := K +1; + P := P +1; + end loop; + end Fill_Valid; + + -- fill the Sample tables with invalid values for conversion + procedure Fill_Invalid is + K : Mod_Same_Size_As_Sparse_Enum := 1; + P : Mod_Same_Size_As_Def_Enum := 1; + begin + for I in Test_Width loop + K := K +13; + if K mod 2 = 0 then -- oops, that would be a valid value + K := K +1; + end if; + if P = Mod_Same_Size_As_Def_Enum'Last + or P < Default_Enumerated_Count then -- that would be valid + P := Default_Enumerated_Count + 1; + else + P := P +1; + end if; + Sample_Enum_Value_Table(I) := K; + Sample_Def_Value_Table(I) := P; + end loop; + + Valid_Sparse_Values := UC_Sparse_Mod_Enum(Sample_Enum_Value_Table); + Valid_Def_Values := UC_Def_Mod_Enum(Sample_Def_Value_Table); + + end Fill_Invalid; + + -- fill the tables with second set of valid values for conversion + procedure Refill_Valid is + K : Mod_10 := 0; + P : Mod_By_Enum_Items := 0; + + Table : Array(Mod_10) of Mod_Same_Size_As_Sparse_Enum + := ( 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 ); + + begin + for I in Test_Width loop + Sample_Enum_Value_Table(I) := Table(K); + Sample_Def_Value_Table(I) := Mod_Same_Size_As_Def_Enum(P); + K := K +1; + P := P +1; + end loop; + Valid_Sparse_Values := UC_Sparse_Mod_Enum(Sample_Enum_Value_Table); + Valid_Def_Values := UC_Def_Mod_Enum(Sample_Def_Value_Table); + end Refill_Valid; + + procedure Validate(Expect_Valid: Boolean) is + begin -- here's where we actually use the tested attribute + + for K in Test_Width loop + if Valid_Sparse_Values(K)'Valid /= Expect_Valid then + Report.Failed("Expected 'Valid =" & Boolean'Image(Expect_Valid) + & " for Sparse item " & Integer'Image(K) ); + end if; + end loop; + + for P in Test_Width loop + if Valid_Def_Values(P)'Valid /= Expect_Valid then + Report.Failed("Expected 'Valid =" & Boolean'Image(Expect_Valid) + & " for Default item " & Integer'Image(P) ); + end if; + end loop; + + end Validate; + +begin -- Main test procedure. + + Report.Test ("CD92001", "Check object attribute: X'Valid" ); + + Fill_Valid; + Validate(True); + + Fill_Invalid; + Validate(False); + + Refill_Valid; + Validate(True); + + Report.Result; + +end CD92001; Index: cd2b11b.ada =================================================================== --- cd2b11b.ada (nonexistent) +++ cd2b11b.ada (revision 338) @@ -0,0 +1,196 @@ +-- CD2B11B.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 IF A COLLECTION SIZE IS SPECIFIED FOR AN +-- ACCESS TYPE IN A GENERIC UNIT, THEN OPERATIONS ON VALUES OF THE +-- ACCESS TYPE ARE NOT AFFECTED. + +-- HISTORY: +-- BCB 09/23/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; + +PROCEDURE CD2B11B IS + + BASIC_SIZE : CONSTANT := 1024; + B : BOOLEAN; + +BEGIN + + TEST ("CD2B11B", "CHECK THAT IF A COLLECTION SIZE IS SPECIFIED " & + "FOR AN ACCESS TYPE, THEN " & + "OPERATIONS ON VALUES OF THE ACCESS TYPE ARE " & + "NOT AFFECTED"); + + DECLARE + + GENERIC + FUNCTION FUNC RETURN BOOLEAN; + + FUNCTION FUNC RETURN BOOLEAN IS + + TYPE MAINTYPE IS ARRAY (INTEGER RANGE <>) OF INTEGER; + TYPE ACC_TYPE IS ACCESS MAINTYPE; + SUBTYPE ACC_RANGE IS ACC_TYPE (1 .. 3); + + FOR ACC_TYPE'STORAGE_SIZE + USE BASIC_SIZE; + + TYPE RECORD_TYPE IS RECORD + COMP : ACC_TYPE; + END RECORD; + + CHECK_TYPE1 : ACC_TYPE; + CHECK_TYPE2 : ACC_TYPE; + CHECK_TYPE3 : ACC_TYPE(1..3); + + CHECK_ARRAY : ARRAY (1..3) OF ACC_TYPE; + + CHECK_RECORD1 : RECORD_TYPE; + CHECK_RECORD2 : RECORD_TYPE; + + CHECK_PARAM1 : ACC_TYPE; + CHECK_PARAM2 : ACC_TYPE; + + CHECK_NULL : ACC_TYPE := NULL; + + PROCEDURE PROC (ACC1,ACC2 : IN OUT ACC_TYPE) IS + + BEGIN + + IF (ACC1.ALL /= ACC2.ALL) THEN + FAILED ("INCORRECT VALUES FOR DESIGNATED " & + "OBJECTS - 1"); + END IF; + + IF EQUAL (3,3) THEN + ACC2 := ACC1; + END IF; + + IF ACC2 /= ACC1 THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS - 1"); + END IF; + + IF (ACC1 IN ACC_RANGE) THEN + FAILED ("INCORRECT RESULTS FOR " & + "MEMBERSHIP TEST - 1"); + END IF; + + END PROC; + + BEGIN -- FUNC. + + CHECK_PARAM1 := NEW MAINTYPE'(25,35,45); + CHECK_PARAM2 := NEW MAINTYPE'(25,35,45); + + PROC (CHECK_PARAM1,CHECK_PARAM2); + + IF ACC_TYPE'STORAGE_SIZE < BASIC_SIZE THEN + FAILED ("INCORRECT VALUE FOR ACCESS TYPE STORAGE_SIZE"); + END IF; + + CHECK_TYPE1 := NEW MAINTYPE'(25,35,45); + CHECK_TYPE2 := NEW MAINTYPE'(25,35,45); + CHECK_TYPE3 := NEW MAINTYPE'(1 => 1,2 => 2,3 => 3); + + CHECK_ARRAY (1) := NEW MAINTYPE'(25,35,45); + CHECK_ARRAY (2) := NEW MAINTYPE'(25,35,45); + + CHECK_RECORD1.COMP := NEW MAINTYPE'(25,35,45); + CHECK_RECORD2.COMP := NEW MAINTYPE'(25,35,45); + + IF (CHECK_TYPE1.ALL /= CHECK_TYPE2.ALL) THEN + FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 2"); + END IF; + + IF EQUAL (3,3) THEN + CHECK_TYPE2 := CHECK_TYPE1; + END IF; + + IF CHECK_TYPE2 /= CHECK_TYPE1 THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " & + "- 2"); + END IF; + + IF (CHECK_TYPE1 IN ACC_RANGE) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 2"); + END IF; + + IF (CHECK_ARRAY (1).ALL /= CHECK_ARRAY (2).ALL) THEN + FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 3"); + END IF; + + IF EQUAL (3,3) THEN + CHECK_ARRAY (2) := CHECK_ARRAY (1); + END IF; + + IF CHECK_ARRAY (2) /= CHECK_ARRAY (1) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " & + "- 3"); + END IF; + + IF (CHECK_ARRAY (1) IN ACC_RANGE) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 3"); + END IF; + + IF (CHECK_RECORD1.COMP.ALL /= CHECK_RECORD2.COMP.ALL) THEN + FAILED ("INCORRECT VALUES FOR DESIGNATED OBJECTS - 4"); + END IF; + + IF EQUAL (3,3) THEN + CHECK_RECORD2 := CHECK_RECORD1; + END IF; + + IF CHECK_RECORD2 /= CHECK_RECORD1 THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " & + "- 4"); + END IF; + + IF (CHECK_RECORD1.COMP IN ACC_RANGE) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST - 4"); + END IF; + + IF CHECK_TYPE3'FIRST /= IDENT_INT (1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE3'FIRST"); + END IF; + + IF CHECK_TYPE3'LAST /= IDENT_INT (3) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE3'LAST"); + END IF; + + RETURN TRUE; + + END FUNC; + + FUNCTION NEWFUNC IS NEW FUNC; + + BEGIN + B := NEWFUNC; + END; + + RESULT; +END CD2B11B; Index: cd2a22a.ada =================================================================== --- cd2a22a.ada (nonexistent) +++ cd2a22a.ada (revision 338) @@ -0,0 +1,213 @@ +-- CD2A22A.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 IF A SIZE SPECIFICATION INDICATING THE SMALLEST SIZE +-- APPROPRIATE FOR A SIGNED REPRESENTATION IS GIVEN FOR AN +-- ENUMERATION TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- RJW 07/28/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A22A IS + + BASIC_SIZE : CONSTANT := 3; + + TYPE CHECK_TYPE IS (ZERO, ONE, TWO); + + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; + + C0 : CHECK_TYPE := ZERO; + C1 : CHECK_TYPE := ONE; + C2 : CHECK_TYPE := TWO; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE; + CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO); + + TYPE REC_TYPE IS RECORD + COMP0 : CHECK_TYPE := ZERO; + COMP1 : CHECK_TYPE := ONE; + COMP2 : CHECK_TYPE := TWO; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN ONE; + END IF; + END IDENT; + + PROCEDURE PROC (CI0, CI2 : CHECK_TYPE; + CIO1, CIO2 : IN OUT CHECK_TYPE; + CO2 : OUT CHECK_TYPE) IS + BEGIN + IF NOT ((CI0 < IDENT (ONE)) AND + (IDENT (CI2) > IDENT (CIO1)) AND + (CIO1 <= IDENT (ONE)) AND(IDENT (TWO) = CI2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS " & + "- 1"); + END IF; + + IF CHECK_TYPE'POS (CI0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (CIO1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (CI2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 1"); + END IF; + + IF CHECK_TYPE'SUCC (CI0) /= IDENT (CIO1) OR + CHECK_TYPE'SUCC (CIO1) /= IDENT (CI2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 1"); + END IF; + + IF CHECK_TYPE'IMAGE (CI0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (CIO1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (CI2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 1"); + END IF; + + CO2 := TWO; + + END PROC; + +BEGIN + TEST ("CD2A22A", "CHECK THAT IF A SIZE SPECIFICATION " & + "INDICATING THE SMALLEST SIZE APPROPRIATE " & + "FOR A SIGNED REPRESENTATION IS GIVEN " & + "FOR AN ENUMERATION TYPE, THEN OPERATIONS " & + "ON VALUES OF SUCH A TYPE ARE NOT AFFECTED " & + "BY THE REPRESENTATION CLAUSE"); + + PROC (ZERO, TWO, C1, C2, C2); + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((IDENT (C1) IN C1 .. C2) AND + (C0 NOT IN IDENT (ONE) .. C2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 2"); + END IF; + + IF CHECK_TYPE'FIRST /= IDENT (ZERO) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'FIRST - 2"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR + CHECK_TYPE'VAL (1) /= IDENT (C1) OR + CHECK_TYPE'VAL (2) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 2"); + END IF; + + IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR + CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 2"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 2"); + END IF; + + IF CHARRAY (1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY (1)'SIZE"); + END IF; + + IF NOT ((CHARRAY (0) < IDENT (ONE)) AND + (IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND + (CHARRAY (1) <= IDENT (ONE)) AND + (IDENT (TWO) = CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3"); + END IF; + + IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND + (CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3"); + END IF; + + IF CHECK_TYPE'POS (CHARRAY (0)) /= IDENT_INT (0) OR + CHECK_TYPE'POS (CHARRAY (1)) /= IDENT_INT (1) OR + CHECK_TYPE'POS (CHARRAY (2)) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 3"); + END IF; + + IF CHECK_TYPE'SUCC (CHARRAY (0)) /= IDENT (CHARRAY (1)) OR + CHECK_TYPE'SUCC (CHARRAY (1)) /= IDENT (CHARRAY (2)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 3"); + END IF; + + IF CHECK_TYPE'IMAGE (CHARRAY (0)) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (CHARRAY (1)) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (CHARRAY (2)) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 3"); + END IF; + + IF CHREC.COMP1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMP1'SIZE"); + END IF; + + IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND + (IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND + (CHREC.COMP1 <= IDENT (ONE)) AND + (IDENT (TWO) = CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4"); + END IF; + + IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND + (CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (CHREC.COMP0) OR + CHECK_TYPE'VAL (1) /= IDENT (CHREC.COMP1) OR + CHECK_TYPE'VAL (2) /= IDENT (CHREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 4"); + END IF; + + IF CHECK_TYPE'PRED (CHREC.COMP1) /= IDENT (CHREC.COMP0) OR + CHECK_TYPE'PRED (CHREC.COMP2) /= IDENT (CHREC.COMP1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 4"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHREC.COMP0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (CHREC.COMP1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (CHREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 4"); + END IF; + + RESULT; +END CD2A22A; Index: cd2b11d.ada =================================================================== --- cd2b11d.ada (nonexistent) +++ cd2b11d.ada (revision 338) @@ -0,0 +1,54 @@ +-- CD2B11D.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 EXPRESSION IN A COLLECTION SIZE CLAUSE +-- FOR AN ACCESS TYPE NEED NOT BE STATIC. + +-- HISTORY: +-- BCB 09/23/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; + +PROCEDURE CD2B11D IS + + TYPE CHECK_TYPE IS ACCESS INTEGER; + FOR CHECK_TYPE'STORAGE_SIZE USE 256; + + TYPE ACC_TYPE IS ACCESS INTEGER; + FOR ACC_TYPE'STORAGE_SIZE USE IDENT_INT (256); + +BEGIN + + TEST ("CD2B11D", "CHECK THAT THE EXPRESSION IN A COLLECTION " & + "SIZE SPECIFICATION FOR AN ACCESS TYPE "& + "NEED NOT BE STATIC"); + + IF ACC_TYPE'STORAGE_SIZE < IDENT_INT (256) THEN + FAILED ("INCORRECT VALUE FOR STORAGE_SIZE"); + END IF; + + RESULT; +END CD2B11D; Index: cd2b11f.ada =================================================================== --- cd2b11f.ada (nonexistent) +++ cd2b11f.ada (revision 338) @@ -0,0 +1,88 @@ +-- CD2B11F.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 IF A COLLECTION SIZE SPECIFICATION IS GIVEN FOR AN +-- ACCESS TYPE WHOSE DESIGNATED TYPE IS A DISCRIMINATED RECORD, THEN +-- OPERATIONS ON VALUES OF THE ACCESS TYPE ARE NOT AFFECTED. + +-- HISTORY: +-- BCB 09/29/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH REPORT; USE REPORT; + +PROCEDURE CD2B11F IS + + BASIC_SIZE : CONSTANT := 1024; + + TYPE RECORD_TYPE(DISC : INTEGER := 100) IS RECORD + COMP1 : INTEGER; + COMP2 : INTEGER; + COMP3 : INTEGER; + END RECORD; + + TYPE ACC_RECORD IS ACCESS RECORD_TYPE; + FOR ACC_RECORD'STORAGE_SIZE USE BASIC_SIZE; + + CHECK_RECORD1 : ACC_RECORD; + CHECK_RECORD2 : ACC_RECORD; + +BEGIN + + TEST ("CD2B11F", "CHECK THAT IF A COLLECTION SIZE SPECIFICATION " & + "IS GIVEN FOR AN ACCESS TYPE WHOSE " & + "DESIGNATED TYPE IS A DISCRIMINATED RECORD, " & + "THEN OPERATIONS ON VALUES OF THE ACCESS TYPE " & + "ARE NOT AFFECTED"); + + CHECK_RECORD1 := NEW RECORD_TYPE; + CHECK_RECORD1.COMP1 := 25; + CHECK_RECORD1.COMP2 := 25; + CHECK_RECORD1.COMP3 := 150; + + IF ACC_RECORD'STORAGE_SIZE < BASIC_SIZE THEN + FAILED ("INCORRECT VALUE FOR RECORD TYPE ACCESS " & + "STORAGE_SIZE"); + END IF; + + IF CHECK_RECORD1.DISC /= IDENT_INT (100) THEN + FAILED ("INCORRECT VALUE FOR RECORD DISCRIMINANT"); + END IF; + + IF ((CHECK_RECORD1.COMP1 /= CHECK_RECORD1.COMP2) OR + (CHECK_RECORD1.COMP1 = CHECK_RECORD1.COMP3)) THEN + FAILED ("INCORRECT VALUE FOR RECORD COMPONENT"); + END IF; + + IF EQUAL (3,3) THEN + CHECK_RECORD2 := CHECK_RECORD1; + END IF; + + IF CHECK_RECORD2 /= CHECK_RECORD1 THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATOR"); + END IF; + + RESULT; +END CD2B11F; Index: cd1c04d.ada =================================================================== --- cd1c04d.ada (nonexistent) +++ cd1c04d.ada (revision 338) @@ -0,0 +1,80 @@ +-- CD1C04D.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 AN ENUMERATION REPRESENTATION CLAUSE CAN BE GIVEN +-- FOR A DERIVED ENUMERATION TYPE EVEN IF THE REPRESENTATION IS +-- INHERITED FROM THE PARENT, AND THAT THE CLAUSE FOR THE DERIVED +-- TYPE OVERRIDES THAT OF THE PARENT. + +-- HISTORY: +-- JET 09/21/87 CREATED ORIGINAL TEST. +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSE. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD1C04D IS + + TYPE NORMAL_TYPE IS (RED, BLUE, GREEN, YELLOW); + + TYPE PARENT_TYPE IS (RED, BLUE, GREEN, YELLOW); + + FOR PARENT_TYPE USE + (RED => 256, BLUE => 257, GREEN => 258, YELLOW => 259); + + TYPE DERIVED_TYPE IS NEW PARENT_TYPE; + + FOR DERIVED_TYPE USE + (RED => 16, BLUE => 17, GREEN => 18, YELLOW => 19); + + TYPE INT1 IS RANGE 16 .. 19; + FOR INT1'SIZE USE DERIVED_TYPE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(DERIVED_TYPE, INT1); + +BEGIN + + TEST("CD1C04D", "CHECK THAT AN ENUMERATION REPRESENTATION " & + "CLAUSE CAN BE GIVEN FOR A DERIVED ENUMERATION " & + "TYPE EVEN IF THE REPRESENTATION IS INHERITED " & + "FROM THE PARENT, AND THAT THE CLAUSE FOR THE " & + "DERIVED TYPE OVERRIDES THAT OF THE PARENT"); + + IF PARENT_TYPE'SIZE = IDENT_INT (NORMAL_TYPE'SIZE) THEN + COMMENT ("PARENT_TYPE'SIZE WAS NOT AFFECTED BY THE " & + "REPRESENTATION CLAUSE"); + END IF; + + IF DERIVED_TYPE'SIZE >= IDENT_INT (PARENT_TYPE'SIZE) THEN + COMMENT ("THE SPECIFICATION OF SMALLER VALUES FOR THE " & + "REPRESENTATION OF DERIVED_TYPE DID NOT " & + "REDUCE THE SIZE OF DERIVED_TYPE"); + END IF; + + CHECK_1 (DERIVED_TYPE'(GREEN), 18, "DERIVED_TYPE"); + + RESULT; + +END CD1C04D; Index: cd2a22e.ada =================================================================== --- cd2a22e.ada (nonexistent) +++ cd2a22e.ada (revision 338) @@ -0,0 +1,216 @@ +-- CD2A22E.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 IF A SIZE CLAUSE SPECIFYING THE SMALLEST SIZE +-- APPROPRIATE FOR AN UNSIGNED REPRESENTATION IS GIVEN FOR AN +-- ENUMERATION TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A22E IS + + BASIC_SIZE : CONSTANT := 2; + + TYPE CHECK_TYPE IS (ZERO, ONE, TWO); + + FOR CHECK_TYPE'SIZE USE BASIC_SIZE; + + C0 : CHECK_TYPE := ZERO; + C1 : CHECK_TYPE := ONE; + C2 : CHECK_TYPE := TWO; + + TYPE ARRAY_TYPE IS ARRAY (0 .. 2) OF CHECK_TYPE; + CHARRAY : ARRAY_TYPE := (ZERO, ONE, TWO); + + TYPE REC_TYPE IS RECORD + COMP0 : CHECK_TYPE := ZERO; + COMP1 : CHECK_TYPE := ONE; + COMP2 : CHECK_TYPE := TWO; + END RECORD; + + CHREC : REC_TYPE; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN ONE; + END IF; + END IDENT; + + PROCEDURE PROC (CI0, CI2 : CHECK_TYPE; + CIO1, CIO2 : IN OUT CHECK_TYPE; + CO2 : OUT CHECK_TYPE) IS + BEGIN + IF CIO1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CIO1'SIZE"); + END IF; + + IF NOT ((IDENT (CIO1) IN CIO1 .. CIO2) AND + (CI0 NOT IN IDENT (ONE) .. CIO2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS " & + "- 1"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (CI0) OR + CHECK_TYPE'VAL (1) /= IDENT (CIO1) OR + CHECK_TYPE'VAL (2) /= IDENT (CIO2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 1"); + END IF; + + IF CHECK_TYPE'PRED (CIO1) /= IDENT (CI0) OR + CHECK_TYPE'PRED (CIO2) /= IDENT (CIO1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 1"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CI0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (CIO1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (CIO2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 1"); + END IF; + + CO2 := TWO; + + END PROC; + +BEGIN + TEST ("CD2A22E", "CHECK THAT IF A SIZE CLAUSE " & + "SPECIFYING THE SMALLEST SIZE APPROPRIATE " & + "FOR AN UNSIGNED REPRESENTATION IS GIVEN " & + "FOR AN ENUMERATION TYPE, THEN OPERATIONS " & + "ON VALUES OF SUCH A TYPE ARE NOT AFFECTED " & + "BY THE REPRESENTATION CLAUSE"); + + PROC (ZERO, TWO, C1, C2, C2); + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((C0 < IDENT (ONE)) AND(IDENT (C2) > IDENT (C1)) AND + (C1 <= IDENT (ONE)) AND(IDENT (TWO) = C2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 2"); + END IF; + + IF CHECK_TYPE'LAST /= IDENT (TWO) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST - 2"); + END IF; + + IF CHECK_TYPE'POS (C0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (C1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (C2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 2"); + END IF; + + IF CHECK_TYPE'SUCC (C0) /= IDENT (C1) OR + CHECK_TYPE'SUCC (C1) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 2"); + END IF; + + IF CHECK_TYPE'IMAGE (C0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (C1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (C2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 2"); + END IF; + + IF CHARRAY(1)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHARRAY(1)'SIZE"); + END IF; + + IF NOT ((CHARRAY (0) < IDENT (ONE)) AND + (IDENT (CHARRAY (2)) > IDENT (CHARRAY (1))) AND + (CHARRAY (1) <= IDENT (ONE)) AND + (IDENT (TWO) = CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3"); + END IF; + + IF NOT ((IDENT (CHARRAY (1)) IN CHARRAY (1) .. CHARRAY (2)) AND + (CHARRAY (0) NOT IN IDENT (ONE) .. CHARRAY (2))) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 3"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'VAL (1) /= IDENT (CHARRAY (1)) OR + CHECK_TYPE'VAL (2) /= IDENT (CHARRAY (2)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL - 3"); + END IF; + + IF CHECK_TYPE'PRED (CHARRAY (1)) /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'PRED (CHARRAY (2)) /= IDENT (CHARRAY (1)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED - 3"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (CHARRAY (0)) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (CHARRAY (1)) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (CHARRAY (2)) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE - 3"); + END IF; + + IF CHREC.COMP2'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHREC.COMP2'SIZE"); + END IF; + + IF NOT ((CHREC.COMP0 < IDENT (ONE)) AND + (IDENT (CHREC.COMP2) > IDENT (CHREC.COMP1)) AND + (CHREC.COMP1 <= IDENT (ONE)) AND + (IDENT (TWO) = CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4"); + END IF; + + IF NOT ((IDENT (CHREC.COMP1) IN CHREC.COMP1 .. CHREC.COMP2) AND + (CHREC.COMP0 NOT IN IDENT (ONE) .. CHREC.COMP2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP OPERATORS - 4"); + END IF; + + IF CHECK_TYPE'POS (CHREC.COMP0) /= IDENT_INT (0) OR + CHECK_TYPE'POS (CHREC.COMP1) /= IDENT_INT (1) OR + CHECK_TYPE'POS (CHREC.COMP2) /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'POS - 4"); + END IF; + + IF CHECK_TYPE'SUCC (CHREC.COMP0) /= IDENT (CHREC.COMP1) OR + CHECK_TYPE'SUCC (CHREC.COMP1) /= IDENT (CHREC.COMP2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SUCC - 4"); + END IF; + + IF CHECK_TYPE'IMAGE (CHREC.COMP0) /= IDENT_STR ("ZERO") OR + CHECK_TYPE'IMAGE (CHREC.COMP1) /= IDENT_STR ("ONE") OR + CHECK_TYPE'IMAGE (CHREC.COMP2) /= IDENT_STR ("TWO") THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'IMAGE - 4"); + END IF; + + RESULT; +END CD2A22E; Index: cd2b15c.ada =================================================================== --- cd2b15c.ada (nonexistent) +++ cd2b15c.ada (revision 338) @@ -0,0 +1,103 @@ +-- CD2B15C.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: +-- IF THE COLLECTION SIZE IS LARGE ENOUGH TO HOLD SOME +-- VALUES OF THE DESIGNATED TYPE, CHECK THAT "STORAGE_ERROR" +-- IS RAISED BY AN ALLOCATOR WHEN INSUFFICIENT STORAGE IS +-- AVAILABLE. + +-- HISTORY: +-- DHH 09/23/87 CREATED ORIGINAL TEST. +-- PMW 09/19/88 MODIFIED WITHDRAWN TEST. +-- THS 03/21/90 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND +-- COMPLETELY REVISED THE TEST TO PREVENT OPTIMIZATION. +-- LDC 09/20/90 REMOVED UNUSED VARIABLE, CHANGED FAIL CALLS TO +-- COMMENT FOR 'STORAGE_SIZE /= TO SPECIFIED SIZE, +-- MOVED LOOP FOR CHECK VALUES TO EXCEPTION HANDLER. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD2B15C IS + + SPECIFIED_SIZE : CONSTANT := 1000; + + TYPE CHECK_TYPE IS ACCESS INTEGER; + FOR CHECK_TYPE'STORAGE_SIZE USE SPECIFIED_SIZE; + + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / SYSTEM.STORAGE_UNIT; + + TYPE ACC_ARRAY_TYPE IS ARRAY + (INTEGER RANGE 1 .. (CHECK_TYPE'STORAGE_SIZE / + UNITS_PER_INTEGER) + 1) OF CHECK_TYPE; + ACC_ARRAY : ACC_ARRAY_TYPE; + + PLACE_I_STOPPED : INTEGER := 0; + +BEGIN + + TEST ("CD2B15C", "IF THE COLLECTION SIZE IS LARGE " & + "ENOUGH TO HOLD SOME VALUES OF " & + "THE DESIGNATED TYPE, CHECK THAT " & + "STORAGE_ERROR IS RAISED BY AN " & + "ALLOCATOR WHEN INSUFFICIENT STORAGE " & + "IS AVAILABLE"); + + IF CHECK_TYPE'STORAGE_SIZE < IDENT_INT (SPECIFIED_SIZE) THEN + FAILED ("CHECK_TYPE'STORAGE_SIZE IS LESS THEN THE VALUE " & + "SPECIFIED IN THE REPRESENTATION CLAUSE"); + + ELSIF CHECK_TYPE'STORAGE_SIZE > 2 * IDENT_INT (SPECIFIED_SIZE) THEN + COMMENT ("VALUE FOR CHECK_TYPE'STORAGE_SIZE IS MORE THEN " & + "TWICE THE SPECIFIED VALUE IN THE REPRESENTATION " & + "CLAUSE"); + END IF; + + BEGIN + + FOR I IN ACC_ARRAY'RANGE LOOP + ACC_ARRAY (I) := NEW INTEGER'(IDENT_INT (I)); + PLACE_I_STOPPED := I; + END LOOP; + + FAILED ("NO EXCEPTION RAISED WHEN RESERVED SPACE " & + "EXCEEDED"); + + EXCEPTION + WHEN STORAGE_ERROR => + FOR I IN 1 .. PLACE_I_STOPPED LOOP + IF ACC_ARRAY (I).ALL /= IDENT_INT (I) THEN + FAILED ("INCORRECT VALUE FOR ACC_ARRAY (" & + INTEGER'IMAGE (I) & ")"); + END IF; + END LOOP; + WHEN OTHERS => + FAILED ("WRONG EXCEPTION RAISED WHEN RESERVED SPACE " & + "EXCEEDED"); + END; + + RESULT; + +END CD2B15C; Index: cd5014t.ada =================================================================== --- cd5014t.ada (nonexistent) +++ cd5014t.ada (revision 338) @@ -0,0 +1,86 @@ +-- CD5014T.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART +-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FORMAL +-- DISCRETE TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART +-- OF THE SPECIFICATION. + + +-- HISTORY: +-- BCB 10/08/87 CREATED ORIGINAL TEST. + +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +WITH SYSTEM; USE SYSTEM; +WITH SPPRT13; USE SPPRT13; +WITH REPORT; USE REPORT; + +PROCEDURE CD5014T IS + +BEGIN + + TEST ("CD5014T", " AN ADDRESS CLAUSE CAN BE GIVEN " & + "IN THE PRIVATE PART OF A GENERIC PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A FORMAL " & + "DISCRETE TYPE, WHERE THE VARIABLE IS DECLARED " & + "IN THE VISIBLE PART OF THE SPECIFICATION"); + + DECLARE + + GENERIC + TYPE FORM_DISCRETE_TYPE IS (<>); + PACKAGE PKG IS + FORM_DISCRETE_OBJ1 : FORM_DISCRETE_TYPE := + FORM_DISCRETE_TYPE'FIRST; + PRIVATE + FOR FORM_DISCRETE_OBJ1 USE + AT VARIABLE_ADDRESS; + END PKG; + + PACKAGE BODY PKG IS + BEGIN + + IF EQUAL(3,3) THEN + FORM_DISCRETE_OBJ1 := FORM_DISCRETE_TYPE'LAST; + END IF; + + IF FORM_DISCRETE_OBJ1 /= FORM_DISCRETE_TYPE'LAST THEN + FAILED ("INCORRECT VALUE FOR FORMAL DISCRETE VARIABLE"); + END IF; + + IF FORM_DISCRETE_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FORMAL DISCRETE " & + "VARIABLE"); + END IF; + END PKG; + + PACKAGE PACK IS NEW PKG(FORM_DISCRETE_TYPE => INTEGER); + + BEGIN + NULL; + END; + + RESULT; +END CD5014T; Index: cd2a22i.ada =================================================================== --- cd2a22i.ada (nonexistent) +++ cd2a22i.ada (revision 338) @@ -0,0 +1,120 @@ +-- CD2A22I.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 IF A SIZE CLAUSE SPECIFIES THE SMALLEST APPROPRIATE +-- SIZE FOR A SIGNED REPRESENTATION FOR AN ENUMERATION TYPE, +-- THEN THE TYPE CAN BE USED AS AN ACTUAL PARAMETER IN AN +-- INSTANTIATION. + +-- HISTORY: +-- JET 08/13/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +PROCEDURE CD2A22I IS + + TYPE BASIC_ENUM IS (ZERO, ONE, TWO); + BASIC_SIZE : CONSTANT := 3; + + FOR BASIC_ENUM'SIZE USE BASIC_SIZE; + +BEGIN + TEST ("CD2A22I", "CHECK THAT IF A SIZE CLAUSE SPECIFIES THE " & + "SMALLEST APPROPRIATE SIZE FOR A SIGNED " & + "REPRESENTATION FOR AN ENUMERATION TYPE, THEN " & + "THE TYPE CAN BE USED AS AN ACTUAL PARAMETER IN " & + "AN INSTANTIATION"); + + + DECLARE -- TYPE DECLARATION GIVEN WITHIN GENERIC PROCEDURE. + + GENERIC + TYPE GPARM IS (<>); + PROCEDURE GENPROC (C0, C1, C2: GPARM); + + PROCEDURE GENPROC (C0, C1, C2: GPARM) IS + + SUBTYPE CHECK_TYPE IS GPARM; + + FUNCTION IDENT (CH : CHECK_TYPE) RETURN CHECK_TYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN CH; + ELSE + RETURN C1; + END IF; + END IDENT; + + BEGIN -- GENPROC. + + IF CHECK_TYPE'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'SIZE"); + END IF; + + IF C0'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR C0'SIZE"); + END IF; + + IF NOT ((IDENT (C1) IN C1 .. C2) AND + (C0 NOT IN IDENT (C1) .. C2)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS"); + END IF; + + IF CHECK_TYPE'LAST /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'LAST"); + END IF; + + IF CHECK_TYPE'VAL (0) /= IDENT (C0) OR + CHECK_TYPE'VAL (1) /= IDENT (C1) OR + CHECK_TYPE'VAL (2) /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VAL"); + END IF; + + IF CHECK_TYPE'PRED (C1) /= IDENT (C0) OR + CHECK_TYPE'PRED (C2) /= IDENT (C1) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'PRED"); + END IF; + + IF CHECK_TYPE'VALUE ("ZERO") /= IDENT (C0) OR + CHECK_TYPE'VALUE ("ONE") /= IDENT (C1) OR + CHECK_TYPE'VALUE ("TWO") /= IDENT (C2) THEN + FAILED ("INCORRECT VALUE FOR CHECK_TYPE'VALUE"); + END IF; + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC (BASIC_ENUM); + + BEGIN + + NEWPROC (ZERO, ONE, TWO); + + END; + + RESULT; + +END CD2A22I; Index: cd5014v.ada =================================================================== --- cd5014v.ada (nonexistent) +++ cd5014v.ada (revision 338) @@ -0,0 +1,83 @@ +-- CD5014V.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE VISIBLE PART +-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FORMAL +-- FIXED TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART +-- OF THE SPECIFICATION. + + +-- HISTORY: +-- BCB 10/08/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH SPPRT13; USE SPPRT13; +WITH REPORT; USE REPORT; + +PROCEDURE CD5014V IS + +BEGIN + + TEST ("CD5014V", " AN ADDRESS CLAUSE CAN BE GIVEN " & + "IN THE VISIBLE PART OF A GENERIC PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A FORMAL " & + "FIXED TYPE, WHERE THE VARIABLE IS DECLARED " & + "IN THE VISIBLE PART OF THE SPECIFICATION"); + + DECLARE + TYPE FIX IS DELTA 0.5 RANGE -30.00 .. 30.00; + + GENERIC + TYPE FORM_FIXED_TYPE IS DELTA <>; + PACKAGE PKG IS + FORM_FIXED_OBJ1 : FORM_FIXED_TYPE := 5.0; + FOR FORM_FIXED_OBJ1 USE AT VARIABLE_ADDRESS; + END PKG; + + PACKAGE BODY PKG IS + BEGIN + IF EQUAL(3,3) THEN + FORM_FIXED_OBJ1 := 20.0; + END IF; + + IF FORM_FIXED_OBJ1 /= 20.0 THEN + FAILED ("INCORRECT VALUE FOR FORMAL FIXED VARIABLE"); + END IF; + + IF FORM_FIXED_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FORMAL FIXED " & + "VARIABLE"); + END IF; + END PKG; + + PACKAGE PACK IS NEW PKG(FORM_FIXED_TYPE => FIX); + + BEGIN + NULL; + END; + + RESULT; +END CD5014V; Index: cd5014x.ada =================================================================== --- cd5014x.ada (nonexistent) +++ cd5014x.ada (revision 338) @@ -0,0 +1,89 @@ +-- CD5014X.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART +-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FORMAL +-- ARRAY TYPE, WHERE THE VARIABLE IS DECLARED IN THE VISIBLE PART +-- OF THE SPECIFICATION. + +-- HISTORY: +-- BCB 10/08/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH SPPRT13; USE SPPRT13; +WITH REPORT; USE REPORT; +WITH TEXT_IO; USE TEXT_IO; + +PROCEDURE CD5014X IS + +BEGIN + + TEST ("CD5014X", " AN ADDRESS CLAUSE CAN BE GIVEN " & + "IN THE PRIVATE PART OF A GENERIC PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A FORMAL " & + "ARRAY TYPE, WHERE THE VARIABLE IS DECLARED " & + "IN THE VISIBLE PART OF THE SPECIFICATION"); + + DECLARE + + TYPE COLOR IS (RED,BLUE,GREEN); + TYPE COLOR_TABLE IS ARRAY (COLOR) OF INTEGER; + + GENERIC + TYPE INDEX IS (<>); + TYPE FORM_ARRAY_TYPE IS ARRAY (INDEX) OF INTEGER; + PACKAGE PKG IS + FORM_ARRAY_OBJ1 : FORM_ARRAY_TYPE := (1,2,3); + PRIVATE + FOR FORM_ARRAY_OBJ1 USE AT VARIABLE_ADDRESS; + END PKG; + + PACKAGE BODY PKG IS + BEGIN + + IF EQUAL(3,3) THEN + FORM_ARRAY_OBJ1 := (10,20,30); + END IF; + + IF FORM_ARRAY_OBJ1 /= (10,20,30) THEN + FAILED ("INCORRECT VALUE FOR FORMAL ARRAY VARIABLE"); + END IF; + + IF FORM_ARRAY_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FORMAL ARRAY " & + "VARIABLE"); + END IF; + END PKG; + + PACKAGE PACK IS NEW PKG(INDEX => COLOR, + FORM_ARRAY_TYPE => COLOR_TABLE); + + BEGIN + NULL; + END; + + RESULT; +END CD5014X; Index: cd5014z.ada =================================================================== --- cd5014z.ada (nonexistent) +++ cd5014z.ada (revision 338) @@ -0,0 +1,76 @@ +-- CD5014Z.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 AN ADDRESS CLAUSE CAN BE GIVEN IN THE PRIVATE PART +-- OF A GENERIC PACKAGE SPECIFICATION FOR A VARIABLE OF A FORMAL +-- LIMITED PRIVATE TYPE, WHERE THE VARIABLE IS DECLARED IN THE +-- VISIBLE PART OF THE SPECIFICATION. + +-- HISTORY: +-- BCB 10/08/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; USE SYSTEM; +WITH SPPRT13; USE SPPRT13; +WITH REPORT; USE REPORT; + +PROCEDURE CD5014Z IS + +BEGIN + + TEST ("CD5014Z", " AN ADDRESS CLAUSE CAN BE GIVEN " & + "IN THE PRIVATE PART OF A GENERIC PACKAGE " & + "SPECIFICATION FOR A VARIABLE OF A FORMAL " & + "LIMITED PRIVATE TYPE, WHERE THE VARIABLE IS " & + "DECLARED IN THE VISIBLE PART OF THE " & + "SPECIFICATION"); + + DECLARE + + GENERIC + TYPE FORM_LIM_PRIVATE_TYPE IS LIMITED PRIVATE; + PACKAGE PKG IS + FORM_LIM_PRIVATE_OBJ1 : FORM_LIM_PRIVATE_TYPE; + PRIVATE + FOR FORM_LIM_PRIVATE_OBJ1 USE + AT VARIABLE_ADDRESS; + END PKG; + + PACKAGE BODY PKG IS + BEGIN + IF FORM_LIM_PRIVATE_OBJ1'ADDRESS /= VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR FORMAL LIMITED PRIVATE " & + "VARIABLE"); + END IF; + END PKG; + + PACKAGE PACK IS NEW PKG(FORM_LIM_PRIVATE_TYPE => INTEGER); + + BEGIN + NULL; + END; + + RESULT; +END CD5014Z; Index: cd5003a.ada =================================================================== --- cd5003a.ada (nonexistent) +++ cd5003a.ada (revision 338) @@ -0,0 +1,79 @@ +-- CD5003A.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN FOR +-- A PACKAGE BODY CONTAINING AN ADDRESS CLAUSE AS LONG AS A 'WITH' +-- CLAUSE IS GIVEN FOR THE SPECIFICATION. + +-- HISTORY: +-- RJW 10/13/88 CREATED ORIGINAL TEST. +-- BCB 04/18/89 CHANGED EXTENSION TO '.ADA'. REMOVED APPLICABILITY +-- CRITERIA AND N/A ERROR MESSAGES. +-- PWN 11/30/94 ADDED A PROCEDURE TO KEEP PACKAGE BODIES LEGAL. + +WITH SYSTEM; +PACKAGE CD5003A_PKG2 IS + PROCEDURE REQUIRE_BODY; +END CD5003A_PKG2; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +PACKAGE BODY CD5003A_PKG2 IS + TEST_VAR : INTEGER; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + PROCEDURE REQUIRE_BODY IS + BEGIN + NULL; + END; +BEGIN + TEST ("CD5003A", "CHECK THAT A 'WITH' CLAUSE NAMING 'SYSTEM' " & + "NEED NOT BE GIVEN FOR A PACKAGE BODY " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE SPECIFICATION"); + + TEST_VAR := IDENT_INT (3); + + IF TEST_VAR /= 3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + +END CD5003A_PKG2; + +WITH REPORT; USE REPORT; +WITH CD5003A_PKG2; USE CD5003A_PKG2; +WITH SPPRT13; +PROCEDURE CD5003A IS +BEGIN + + RESULT; +END CD5003A; Index: cd4031a.ada =================================================================== --- cd4031a.ada (nonexistent) +++ cd4031a.ada (revision 338) @@ -0,0 +1,95 @@ +-- CD4031A.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 WHEN A RECORD REPRESENTATION CLAUSE IS GIVEN FOR A +-- VARIANT RECORD TYPE, THEN COMPONENTS BELONGING TO DIFFERENT +-- VARIANTS CAN BE GIVEN OVERLAPPING STORAGE. + +-- HISTORY: +-- PWB 07/22/87 CREATED ORIGINAL TEST. +-- DHH 03/27/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND +-- ADDED CHECK FOR REPRESENTATION CLAUSE. +-- RJW 06/12/90 REMOVED REFERENCES TO LENGTH_CHECK. REVISED +-- COMMENTS. +-- JRL 10/13/96 Adjusted ranges in type definitions to allow 1's +-- complement machines to represent all values in +-- the specified number of bits. + +WITH REPORT; USE REPORT; +PROCEDURE CD4031A IS + + TYPE DISCRIMINAN IS RANGE -1 .. 1; + TYPE INT IS RANGE -3 .. 3; + TYPE LARGE_INT IS RANGE -7 .. 7; + + TYPE TEST_CLAUSE (DISC : DISCRIMINAN := 0) IS + RECORD + CASE DISC IS + WHEN 0 => + INTEGER_COMP : LARGE_INT; + WHEN OTHERS => + CH_COMP_1 : INT; + CH_COMP_2 : INT; + END CASE; + END RECORD; + + FOR TEST_CLAUSE USE + RECORD + DISC AT 0 + RANGE 0 .. 1; + INTEGER_COMP AT 0 + RANGE 2 .. 5; + CH_COMP_1 AT 0 + RANGE 2 .. 4; + CH_COMP_2 AT 0 + RANGE 5 .. 7; + END RECORD; + + TYPE TEST_CL1 IS NEW TEST_CLAUSE(DISC => 0); + TYPE TEST_CL2 IS NEW TEST_CLAUSE(DISC => 1); + TEST_RECORD : TEST_CL1; + TEST_RECORD1 : TEST_CL2; + + INTEGER_COMP_FIRST, + CH_COMP_1_FIRST : INTEGER; + +BEGIN + TEST ("CD4031A", "IN RECORD REPRESENTATION CLAUSES " & + "FOR VARIANT RECORD TYPES, " & + "COMPONENTS OF DIFFERENT VARIANTS " & + "CAN BE GIVEN OVERLAPPING STORAGE"); + + TEST_RECORD := (0, -7); + INTEGER_COMP_FIRST := TEST_RECORD.INTEGER_COMP'FIRST_BIT; + + TEST_RECORD1 := (1, -3, -3); + CH_COMP_1_FIRST := TEST_RECORD1.CH_COMP_1'FIRST_BIT; + + IF INTEGER_COMP_FIRST /= CH_COMP_1_FIRST THEN + FAILED ("COMPONENTS DO NOT BEGIN AT SAME POINT"); + END IF; + + RESULT; +END CD4031A; Index: cd3015a.ada =================================================================== --- cd3015a.ada (nonexistent) +++ cd3015a.ada (revision 338) @@ -0,0 +1,133 @@ +-- CD3015A.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 A DERIVED ENUMERATION TYPE CAN BE USED CORRECTLY IN +-- ORDERING RELATIONS, INDEXING ARRAYS, AND IN GENERIC +-- INSTANTIATIONS, WHEN THERE IS NO ENUMERATION CLAUSE FOR THE +-- PARENT. + +-- HISTORY +-- DHH 09/30/87 CREATED ORIGINAL TEST. +-- BCB 03/20/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- BCB 03/08/90 REVISED WORDING IN HEADER COMMENT AND IN CALL TO +-- REPORT.TEST. ADDED CHECK FOR NON-CONTIGUOUS CODES. +-- REVISED CHECK FOR ARRAY INDEXING. +-- THS 09/18/90 REVISED WORDING IN HEADER COMMENT AND FIXED FAILURE +-- ERROR MESSAGE. + +WITH REPORT; USE REPORT; +PROCEDURE CD3015A IS + +BEGIN + + TEST ("CD3015A", "CHECK THAT A DERIVED ENUMERATION TYPE CAN BE " & + "USED CORRECTLY IN ORDERING RELATIONS, " & + "INDEXING ARRAYS, AND IN GENERIC " & + "INSTANTIATIONS, WHEN THERE IS NO ENUMERATION " & + "CLAUSE FOR THE PARENT"); + + DECLARE + PACKAGE PACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW,'R','B','Y'); + + TYPE HUE IS NEW MAIN; + FOR HUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + + TYPE BASE IS ARRAY(HUE) OF INTEGER; + COLOR,BASIC : HUE; + BARRAY : BASE; + + TYPE HUE1 IS NEW MAIN; + FOR HUE1 USE (RED => 10, BLUE => 14, YELLOW => 16, + 'R' => 19, 'B' => 41, 'Y' => 46); + + TYPE BASE1 IS ARRAY(HUE1) OF INTEGER; + COLOR1,BASIC1 : HUE1; + BARRAY1 : BASE1; + + GENERIC + TYPE ENUM IS (<>); + PROCEDURE CHANGE(X,Y : IN OUT ENUM); + + END PACK; + + PACKAGE BODY PACK IS + + PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS + T : ENUM; + BEGIN + T := X; + X := Y; + Y := T; + END CHANGE; + + PROCEDURE PROC IS NEW CHANGE(HUE); + PROCEDURE PROC1 IS NEW CHANGE(HUE1); + + BEGIN + BASIC := RED; + COLOR := HUE'SUCC(BASIC); + BASIC1 := RED; + COLOR1 := HUE1'SUCC(BASIC1); + IF (COLOR < BASIC OR BASIC >= 'R' OR 'Y' <= COLOR OR + COLOR > 'B') OR + NOT (COLOR1 >= BASIC1 AND BASIC1 < 'R' AND + 'Y' > COLOR1 AND COLOR1 <= 'B') THEN + FAILED("ORDERING RELATIONS ARE INCORRECT"); + END IF; + + PROC(BASIC,COLOR); + PROC1(BASIC1,COLOR1); + + IF COLOR /= RED OR COLOR1 /= RED THEN + FAILED("VALUES IN PARAMETERS TO INSTANCE OF " & + "GENERIC UNIT NOT CORRECT AFTER CALL"); + END IF; + + BARRAY := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + BARRAY1 := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR + BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR + BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) OR + NOT (BARRAY1 (RED) = 1 AND BARRAY1 (BLUE) = 2 AND + BARRAY1 (YELLOW) = 3 AND BARRAY1 ('R') = 4 AND + BARRAY1 ('B') = 5 AND BARRAY1 ('Y') = 6) + THEN + FAILED("INDEXING ARRAY FAILURE"); + END IF; + + END PACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015A; Index: cd5003c.ada =================================================================== --- cd5003c.ada (nonexistent) +++ cd5003c.ada (revision 338) @@ -0,0 +1,86 @@ +-- CD5003C.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A PACKAGE BODY SUBUNIT CONTAINING AN ADDRESS CLAUSE AS +-- LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT CONTAINING THE +-- PACKAGE SPECIFICATION. + +-- HISTORY: +-- VCL 09/04/87 CREATED ORIGINAL TEST. +-- PWB 05/12/89 CHANGED TO ".ADA" TEST. + + +WITH SYSTEM; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (REPORT); +PROCEDURE CD5003C IS + PACKAGE CD5003C_PACK2 IS END CD5003C_PACK2; + + PACKAGE BODY CD5003C_PACK2 IS SEPARATE; + + USE CD5003C_PACK2; +BEGIN + RESULT; +END CD5003C; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +SEPARATE (CD5003C) +PACKAGE BODY CD5003C_PACK2 IS + TYPE ATYPE IS ARRAY (1 .. 10) OF INTEGER; + + TEST_VAR : ATYPE := (OTHERS => 0); + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + FUNCTION IDENT (P : ATYPE) RETURN ATYPE IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN (OTHERS => 0); + END IF; + END IDENT; +BEGIN + TEST ("CD5003C", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT " & + "BE GIVEN FOR A PACKAGE BODY SUBUNIT " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE UNIT " & + "CONTAINING THE PACKAGE SPECIFICATION"); + + + TEST_VAR := IDENT (ATYPE'(OTHERS => 3)); + + IF TEST_VAR /= ATYPE'(OTHERS => 3) THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; +END CD5003C_PACK2; Index: cd4051b.ada =================================================================== --- cd4051b.ada (nonexistent) +++ cd4051b.ada (revision 338) @@ -0,0 +1,94 @@ +-- CD4051B.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 A RECORD REPRESENTATION CLAUSE WHICH CHANGES THE +-- ORDER OF THE COMPONENT STORAGE CAN BE GIVEN FOR A DERIVED TYPE +-- WHOSE PARENT TYPE IS A RECORD WITHOUT A DISCRIMINANT. + +-- HISTORY: +-- BCB 03/20/89 CHANGED EXTENSION FROM '.ADA' TO '.DEP'. +-- RJW 08/25/87 CREATED ORIGINAL TEST. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD4051B IS + + UNITS_PER_INTEGER : CONSTANT := + (INTEGER'SIZE + SYSTEM.STORAGE_UNIT - 1) / + SYSTEM.STORAGE_UNIT; + + TYPE BASIC_CLAUSE IS RECORD + INT_COMP : INTEGER; + CHAR_COMP : CHARACTER; + END RECORD; + + TYPE CHECK_CLAUSE IS NEW BASIC_CLAUSE; + + FOR CHECK_CLAUSE USE + RECORD + INT_COMP AT 1*UNITS_PER_INTEGER + RANGE 0..INTEGER'SIZE - 1; + CHAR_COMP AT 0 + RANGE 0..CHARACTER'SIZE - 1; + END RECORD; + + CHECK_RECORD : CHECK_CLAUSE := (1, 'A'); + +BEGIN + TEST ("CD4051B", "CHECK THAT A RECORD REPRESENTATION " & + "CLAUSE WHICH CHANGES THE ORDER OF COMPONENT " & + "STORAGE CAN BE GIVEN FOR A DERIVED TYPE " & + "WHOSE PARENT TYPE IS IS A RECORD TYPE " & + "WITHOUT DISCRIMINANTS"); + + IF CHECK_RECORD.INT_COMP'FIRST_BIT /= 0 THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'LAST_BIT /= INTEGER'SIZE - 1 THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF INT_COMP"); + END IF; + + IF CHECK_RECORD.INT_COMP'POSITION /= + IDENT_INT (UNITS_PER_INTEGER) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF INT_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'FIRST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'LAST_BIT /= + IDENT_INT (CHARACTER'SIZE - 1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CHAR_COMP"); + END IF; + + IF CHECK_RECORD.CHAR_COMP'POSITION /= + IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CHAR_COMP"); + END IF; + + RESULT; +END CD4051B; Index: cd3015c.ada =================================================================== --- cd3015c.ada (nonexistent) +++ cd3015c.ada (revision 338) @@ -0,0 +1,82 @@ +-- CD3015C.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 AN ENUMERATION REPRESENTATION CLAUSE FOR A DERIVED +-- TYPE CAN BE GIVEN IN THE VISIBLE OR PRIVATE PART OF A PACKAGE +-- FOR A DERIVED TYPE DECLARED IN THE VISIBLE PART, WHERE NO +-- ENUMERATION CLAUSE HAS BEEN GIVEN FOR THE PARENT. + +-- HISTORY +-- DHH 10/01/87 CREATED ORIGINAL TEST +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3015C IS + +BEGIN + + TEST ("CD3015C", "CHECK THAT AN ENUMERATION " & + "REPRESENTATION CLAUSE FOR A DERIVED TYPE CAN " & + "BE GIVEN IN THE VISIBLE OR PRIVATE PART OF A " & + "PACKAGE FOR A DERIVED TYPE DECLARED IN THE " & + "VISIBLE PART, WHERE NO ENUMERATION CLAUSE HAS " & + "BEEN GIVEN FOR THE PARENT"); + + DECLARE + PACKAGE PACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW); + + TYPE HUE IS NEW MAIN; + TYPE NEWHUE IS NEW MAIN; + + FOR HUE USE (RED => 1, BLUE => 16, YELLOW => 32); + PRIVATE + FOR NEWHUE USE (RED => 16, BLUE => 17, YELLOW => 18); + + TYPE INT1 IS RANGE 1 .. 32; + FOR INT1'SIZE USE HUE'SIZE; + + TYPE INT2 IS RANGE 16 .. 18; + FOR INT2'SIZE USE NEWHUE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(HUE, INT1); + PROCEDURE CHECK_2 IS NEW ENUM_CHECK(NEWHUE, INT2); + END PACK; + + PACKAGE BODY PACK IS + + BEGIN + CHECK_1 (RED, 1, "HUE"); + CHECK_2 (YELLOW, 18, "NEWHUE"); + END PACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015C; Index: cd5003e.ada =================================================================== --- cd5003e.ada (nonexistent) +++ cd5003e.ada (revision 338) @@ -0,0 +1,76 @@ +-- CD5003E.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A TASK BODY SUBUNIT CONTAINING AN ADDRESS CLAUSE AS LONG +-- AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT CONTAINING THE TASK +-- SPECIFICATION. + +-- HISTORY: +-- VCL 09/08/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + + +WITH SYSTEM; +PROCEDURE CD5003E IS + TASK TASK2 IS + ENTRY TST; + END TASK2; + TASK BODY TASK2 IS SEPARATE; +BEGIN + TASK2.TST; +END CD5003E; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +SEPARATE (CD5003E) +TASK BODY TASK2 IS + TEST_VAR : INTEGER := 0; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + +BEGIN + ACCEPT TST DO + TEST ("CD5003E", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT " & + "BE GIVEN FOR A TASK BODY SUBUNIT " & + "CONTAINING AN ADDRESS CLAUSE AS LONG " & + "AS A 'WITH' CLAUSE IS GIVEN FOR THE " & + "UNIT CONTAINING THE TASK SPECIFICATION"); + + TEST_VAR := IDENT_INT (3); + + IF TEST_VAR /= 3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + + RESULT; + END TST; +END TASK2; Index: cd4051d.ada =================================================================== --- cd4051d.ada (nonexistent) +++ cd4051d.ada (revision 338) @@ -0,0 +1,134 @@ +-- CD4051D.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 A RECORD REPRESENTATION CLAUSE CAN BE GIVEN FOR +-- A DERIVED SUBTYPE WHOSE PARENT TYPE IS A RECORD TYPE WITH +-- VARIANTS AND THE REPRESENTATION CLAUSE MENTIONS COMPONENTS THAT +-- DO NOT EXIST IN THE DERIVED SUBTYPE. + +-- HISTORY: +-- RJW 08/25/87 CREATED ORIGINAL TEST. +-- DHH 03/27/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND +-- ADDED CHECK FOR REPRESENTATION CLAUSE. +-- RJW 10/26/89 REMOVED REFERENCES TO LENGTH_CHECK. +-- THS 09/18/90 MADE CALLS TO IDENT_INT TO DEFEAT OPTIMIZATION. +-- JRL 10/13/96 Adjusted ranges in type definitions to allow 1's +-- complement machines to represent all values in +-- the specified number of bits. + +WITH REPORT; USE REPORT; +WITH SYSTEM; +PROCEDURE CD4051D IS + + TYPE INT IS RANGE -3 .. 3; + TYPE LARGE_INT IS RANGE -7 .. 7; + + TYPE BASIC_CLAUSE (DISC : BOOLEAN) IS RECORD + BOOL_COMP : BOOLEAN; + CASE DISC IS + WHEN FALSE => + INT_COMP : LARGE_INT; + WHEN TRUE => + CH_COMP_1 : INT; + CH_COMP_2 : INT; + END CASE; + END RECORD; + + TYPE CHECK_CLAUSE IS NEW BASIC_CLAUSE (TRUE); + + FOR CHECK_CLAUSE USE + RECORD + DISC AT 0 + RANGE 0 .. 0; + BOOL_COMP AT 0 + RANGE 1 .. 1; + INT_COMP AT 0 + RANGE 2 .. 5; + CH_COMP_1 AT 0 + RANGE 2 .. 4; + CH_COMP_2 AT 0 + RANGE 5 .. 7; + END RECORD; + + CHECK_RECORD : CHECK_CLAUSE := (TRUE, TRUE, -2, -2); + +BEGIN + TEST ("CD4051D", "CHECK THAT A RECORD REPRESENTATION " & + "CLAUSE CAN BE GIVEN FOR A DERIVED TYPE " & + "WHOSE PARENT TYPE IS A RECORD TYPE " & + "WITH VARIANTS AND WHERE THE RECORD " & + "REPRESENTATION CLAUSE MENTIONS COMPONENTS " & + "THAT DO NOT EXIST IN THE DERIVED SUBTYPE"); + + IF CHECK_RECORD.DISC'FIRST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF DISC"); + END IF; + + IF CHECK_RECORD.DISC'LAST_BIT /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF DISC"); + END IF; + + IF CHECK_RECORD.DISC'POSITION /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF DISC"); + END IF; + + IF CHECK_RECORD.BOOL_COMP'FIRST_BIT /= IDENT_INT (1) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF BOOL_COMP"); + END IF; + + IF CHECK_RECORD.BOOL_COMP'LAST_BIT /= IDENT_INT (1) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF BOOL_COMP"); + END IF; + + IF CHECK_RECORD.BOOL_COMP'POSITION /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF BOOL_COMP"); + END IF; + + IF CHECK_RECORD.CH_COMP_1'FIRST_BIT /= IDENT_INT (2) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CH_COMP_1"); + END IF; + + IF CHECK_RECORD.CH_COMP_1'LAST_BIT /= IDENT_INT (4) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CH_COMP_1"); + END IF; + + IF CHECK_RECORD.CH_COMP_1'POSITION /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CH_COMP_1"); + END IF; + + IF CHECK_RECORD.CH_COMP_2'FIRST_BIT /= IDENT_INT (5) THEN + FAILED ("INCORRECT VALUE FOR FIRST_BIT OF CH_COMP_2"); + END IF; + + IF CHECK_RECORD.CH_COMP_2'LAST_BIT /= IDENT_INT (7) THEN + FAILED ("INCORRECT VALUE FOR LAST_BIT OF CH_COMP_2"); + END IF; + + IF CHECK_RECORD.CH_COMP_2'POSITION /= IDENT_INT (0) THEN + FAILED ("INCORRECT VALUE FOR POSITION OF CH_COMP_2"); + END IF; + + RESULT; +END CD4051D; Index: cd3015e.ada =================================================================== --- cd3015e.ada (nonexistent) +++ cd3015e.ada (revision 338) @@ -0,0 +1,130 @@ +-- CD3015E.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 WHEN THERE IS NO ENUMERATION CLAUSE FOR THE PARENT +-- TYPE IN A GENERIC UNIT, THE DERIVED TYPE CAN BE USED CORRECTLY +-- IN ORDERING RELATIONS, INDEXING ARRAYS, AND IN GENERIC +-- INSTANTIATIONS. + +-- HISTORY +-- DHH 10/05/87 CREATED ORIGINAL TEST +-- DHH 03/30/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA' AND ADDED +-- CHECK FOR REPRESENTATION CLAUSE. +-- RJW 03/20/90 MODIFIED CHECK FOR ARRAY INDEXING. +-- THS 09/18/90 REVISED WORDING ON FAILURE ERROR MESSAGE. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3015E IS + +BEGIN + + TEST ("CD3015E", "CHECK THAT WHEN THERE " & + "IS NO ENUMERATION CLAUSE FOR THE PARENT " & + "TYPE IN A GENERIC UNIT, THE " & + "DERIVED TYPE CAN BE USED CORRECTLY IN " & + "ORDERING RELATIONS, INDEXING ARRAYS, AND IN " & + "GENERIC INSTANTIATIONS"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW,'R','B','Y'); + + TYPE HUE IS NEW MAIN; + FOR HUE USE + (RED => 1, BLUE => 6, + YELLOW => 11, 'R' => 16, + 'B' => 22, 'Y' => 30); + + TYPE BASE IS ARRAY(HUE) OF INTEGER; + COLOR,BASIC : HUE; + BARRAY : BASE; + T : INTEGER := 1; + + TYPE INT1 IS RANGE 1 .. 30; + FOR INT1'SIZE USE HUE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(HUE, INT1); + + GENERIC + TYPE ENUM IS (<>); + PROCEDURE CHANGE(X,Y : IN OUT ENUM); + + END GENPACK; + + PACKAGE BODY GENPACK IS + + PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS + T : ENUM; + BEGIN + T := X; + X := Y; + Y := T; + END CHANGE; + + PROCEDURE PROC IS NEW CHANGE(HUE); + + BEGIN + BASIC := RED; + COLOR := HUE'SUCC(BASIC); + IF (COLOR < BASIC OR + BASIC >= 'R' OR + 'Y' <= COLOR OR + COLOR > 'B') THEN + FAILED("ORDERING RELATIONS ARE INCORRECT"); + END IF; + + PROC(BASIC,COLOR); + + IF COLOR /= RED THEN + FAILED("VALUES OF PARAMETERS TO INSTANCE OF " & + "GENERIC UNIT NOT CORRECT AFTER CALL"); + END IF; + + FOR I IN HUE LOOP + BARRAY(I) := IDENT_INT(T); + T := T + 1; + END LOOP; + + IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR + BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR + BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) THEN + FAILED("INDEXING ARRAY FAILURE"); + END IF; + + CHECK_1 (YELLOW, 11, "HUE"); + + END GENPACK; + + PACKAGE P IS NEW GENPACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015E; Index: cd5003g.ada =================================================================== --- cd5003g.ada (nonexistent) +++ cd5003g.ada (revision 338) @@ -0,0 +1,89 @@ +-- CD5003G.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A GENERIC PROCEDURE BODY CONTAINING AN ADDRESS CLAUSE +-- AS LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT CONTAINING +-- THE GENERIC PROCEDURE SPECIFICATION. + +-- HISTORY: +-- VCL 09/09/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +WITH SYSTEM; +PACKAGE CD5003G_PACK2 IS + GENERIC + PROCEDURE CD5003G_PROC2; +END CD5003G_PACK2; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +PACKAGE BODY CD5003G_PACK2 IS + PROCEDURE CD5003G_PROC2 IS + TYPE FIXD IS DELTA 0.1 RANGE -10.0 .. 10.0; + + TEST_VAR : FIXD := 0.0; + FOR TEST_VAR USE AT SPPRT13.VARIABLE_ADDRESS; + USE SYSTEM; + + FUNCTION IDENT_FIXD (P : FIXD) RETURN FIXD IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN 0.0; + END IF; + END IDENT_FIXD; + BEGIN + TEST ("CD5003G", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT " & + "BE GIVEN FOR A GENERIC PROCEDURE BODY " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS " & + "A 'WITH' CLAUSE IS GIVEN FOR THE UNIT " & + "CONTAINING THE GENERIC PROCEDURE " & + "SPECIFICATION"); + + TEST_VAR := IDENT_FIXD (3.3); + + IF TEST_VAR /= 3.3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + + RESULT; + END CD5003G_PROC2; +END CD5003G_PACK2; + + +WITH CD5003G_PACK2; USE CD5003G_PACK2; +PROCEDURE CD5003G IS + PROCEDURE PROC3 IS NEW CD5003G_PROC2; +BEGIN + PROC3; +END CD5003G; Index: cd3015g.ada =================================================================== --- cd3015g.ada (nonexistent) +++ cd3015g.ada (revision 338) @@ -0,0 +1,136 @@ +-- CD3015G.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 A DERIVED ENUMERATION TYPE WITH A REPRESENTATION +-- CLAUSE CAN BE USED CORRECTLY IN ORDERING RELATIONS, INDEXING +-- ARRAYS, AND IN GENERIC INSTANTIATIONS WHEN THERE IS AN +-- ENUMERATION CLAUSE FOR THE PARENT. + +-- HISTORY +-- DHH 09/30/87 CREATED ORIGINAL TEST. +-- BCB 03/20/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- BCB 03/08/90 REVISED WORDING IN HEADER COMMENT AND IN CALL TO +-- REPORT.TEST. ADDED CHECK FOR NON-CONTIGUOUS CODES. +-- REVISED CHECK FOR ARRAY INDEXING. +-- THS 09/18/90 REVISED WORDING IN HEADER COMMENT AND FIXED FAILURE +-- ERROR MESSAGE. + +WITH REPORT; USE REPORT; +PROCEDURE CD3015G IS + +BEGIN + + TEST ("CD3015G", "CHECK THAT A DERIVED ENUMERATION TYPE WITH A " & + "REPRESENTATION CLAUSE CAN BE USED CORRECTLY " & + "IN ORDERING RELATIONS, INDEXING ARRAYS, AND " & + "IN GENERIC INSTANTIATIONS WHEN THERE IS AN " & + "ENUMERATION CLAUSE FOR THE PARENT"); + + DECLARE + PACKAGE PACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW,'R','B','Y'); + + FOR MAIN USE (RED => 1, BLUE => 2, YELLOW => 3, 'R' => 4, + 'B' => 5, 'Y' => 6); + + TYPE HUE IS NEW MAIN; + FOR HUE USE (RED => 8, BLUE => 9, YELLOW => 10, + 'R' => 11, 'B' => 12, 'Y' => 13); + + TYPE HUE1 IS NEW MAIN; + FOR HUE1 USE (RED => 10, BLUE => 14, YELLOW => 16, + 'R' => 19, 'B' => 41, 'Y' => 46); + + TYPE BASE1 IS ARRAY(HUE1) OF INTEGER; + COLOR1,BASIC1 : HUE1; + BARRAY1 : BASE1; + + TYPE BASE IS ARRAY(HUE) OF INTEGER; + COLOR,BASIC : HUE; + BARRAY : BASE; + + GENERIC + TYPE ENUM IS (<>); + PROCEDURE CHANGE(X,Y : IN OUT ENUM); + + END PACK; + + PACKAGE BODY PACK IS + + PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS + T : ENUM; + BEGIN + T := X; + X := Y; + Y := T; + END CHANGE; + + PROCEDURE PROC IS NEW CHANGE(HUE); + PROCEDURE PROC1 IS NEW CHANGE(HUE1); + + BEGIN + BASIC := RED; + COLOR := HUE'SUCC(BASIC); + BASIC1 := RED; + COLOR1 := HUE1'SUCC(BASIC1); + IF (COLOR < BASIC OR BASIC >= 'R' OR 'Y' <= COLOR OR + COLOR > 'B') OR + NOT (COLOR1 >= BASIC1 AND BASIC1 < 'R' AND + 'Y' > COLOR1 AND COLOR1 <= 'B') THEN + FAILED("ORDERING RELATIONS ARE INCORRECT"); + END IF; + + PROC(BASIC,COLOR); + PROC1(BASIC1,COLOR1); + + IF COLOR /= RED OR COLOR1 /= RED THEN + FAILED("VALUES OF PARAMETERS TO INSTANCE OF " & + "GENERIC UNIT NOT CORRECT AFTER CALL"); + END IF; + + BARRAY := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + BARRAY1 := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR + BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR + BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) OR + NOT (BARRAY1 (RED) = 1 AND BARRAY1 (BLUE) = 2 AND + BARRAY1 (YELLOW) = 3 AND BARRAY1 ('R') = 4 AND + BARRAY1 ('B') = 5 AND BARRAY1 ('Y') = 6) + THEN + FAILED("INDEXING ARRAY FAILURE"); + END IF; + + END PACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015G; Index: cd7007b.ada =================================================================== --- cd7007b.ada (nonexistent) +++ cd7007b.ada (revision 338) @@ -0,0 +1,52 @@ +-- CD7007B.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 SUBTYPE 'PRIORITY' IS DECLARED WITHIN THE PACKAGE +-- SYSTEM AND IT IS A SUBTYPE OF 'INTEGER'. + +-- HISTORY: +-- VCL 09/16/87 CREATED ORIGINAL TEST. + +WITH SYSTEM; +WITH REPORT; USE REPORT; +PROCEDURE CD7007B IS +BEGIN + TEST ("CD7007B", "THE SUBTYPE 'PRIORITY' IS DECLARED WITHIN " & + "THE PACKAGE SYSTEM AND IT IS A SUBTYPE OF " & + "'INTEGER'"); + + DECLARE + CHECK_VAR : SYSTEM.PRIORITY; + BEGIN + IF SYSTEM.PRIORITY'FIRST NOT IN + INTEGER'FIRST .. INTEGER'LAST AND + SYSTEM.PRIORITY'LAST NOT IN + INTEGER'FIRST .. INTEGER'LAST THEN + FAILED ("'SYSTEM.PRIORITY' IS NOT AN INTEGER SUBTYPE"); + END IF; + END; + + RESULT; +END CD7007B; Index: cd5003i.ada =================================================================== --- cd5003i.ada (nonexistent) +++ cd5003i.ada (revision 338) @@ -0,0 +1,94 @@ +-- CD5003I.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 A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE GIVEN +-- FOR A GENERIC PROCEDURE BODY SUBUNIT CONTAINING AN ADDRESS +-- CLAUSE AS LONG AS A 'WITH' CLAUSE IS GIVEN FOR THE UNIT +-- CONTAINING THE GENERIC PROCEDURE SPECIFICATION. + +-- HISTORY: +-- VCL 09/09/87 CREATED ORIGINAL TEST. +-- PWB 05/11/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. + +PACKAGE CD5003I_PACK3 IS + GENERIC + PROCEDURE PROC2; +END CD5003I_PACK3; + +WITH SYSTEM; +PACKAGE BODY CD5003I_PACK3 IS + PROCEDURE PROC2 IS SEPARATE; +END CD5003I_PACK3; + +WITH SPPRT13; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (SPPRT13); +PRAGMA ELABORATE (REPORT); +SEPARATE (CD5003I_PACK3) +PROCEDURE PROC2 IS + TYPE FIXD IS DELTA 0.1 RANGE -10.0 .. 10.0; + + TEST_VAR : FIXD; + FOR TEST_VAR + USE AT SPPRT13.VARIABLE_ADDRESS; + + USE SYSTEM; + + FUNCTION IDENT (P : FIXD) RETURN FIXD IS + BEGIN + IF EQUAL (3, 3) THEN + RETURN P; + ELSE + RETURN 0.0; + END IF; + END IDENT; +BEGIN + TEST ("CD5003I", "A 'WITH' CLAUSE NAMING 'SYSTEM' NEED NOT BE " & + "GIVEN FOR A GENERIC PROCEDURE BODY SUBUNIT " & + "CONTAINING AN ADDRESS CLAUSE AS LONG AS A " & + "'WITH' CLAUSE IS GIVEN FOR THE UNIT " & + "CONTAINING THE GENERIC PROCEDURE SPECIFICATION"); + + TEST_VAR := IDENT (3.3); + + IF TEST_VAR /= 3.3 THEN + FAILED ("INCORRECT VALUE FOR TEST_VAR"); + END IF; + + IF TEST_VAR'ADDRESS /= SPPRT13.VARIABLE_ADDRESS THEN + FAILED ("INCORRECT ADDRESS FOR TEST_VAR"); + END IF; + + RESULT; +END PROC2; + +WITH CD5003I_PACK3; USE CD5003I_PACK3; +WITH REPORT; USE REPORT; +PRAGMA ELABORATE (REPORT); +PROCEDURE CD5003I IS + PROCEDURE PROC3 IS NEW PROC2; +BEGIN + PROC3; +END CD5003I; Index: cd33001.a =================================================================== --- cd33001.a (nonexistent) +++ cd33001.a (revision 338) @@ -0,0 +1,139 @@ +-- CD33001.A +-- +-- 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 Component_Sizes that are a factor of the word +-- size are supported. +-- +-- Check that for such Component_Sizes arrays contain no gaps between +-- components. +-- +-- TEST DESCRIPTION: +-- This test defines three array types and specifies their layouts +-- using representation specifications for the 'Component_Size and +-- pragma Packs for each. It then checks that the implied assumptions +-- about the resulting layout actually can be made. +-- +-- APPLICABILITY CRITERIA: +-- All implementations must attempt to compile this test. +-- +-- For implementations validating against Systems Programming Annex (C): +-- this test must execute and report PASSED. +-- +-- For implementations not validating against Annex C: +-- this test may report compile time errors at one or more points +-- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. +-- Otherwise, the test must execute and report PASSED. +-- +-- +-- CHANGE HISTORY: +-- 22 JUL 95 SAIC Initial version +-- 07 MAY 96 SAIC Revised for 2.1 +-- 24 AUG 96 SAIC Additional 2.1 revisions +-- 17 FEB 97 PWB.CTA Corrected prefix of 'Component_Size to name +-- array object instead of array subtype +-- 16 FEB 98 EDS Modified documentation. +--! + +----------------------------------------------------------------- CD33001_0 + +with System; +package CD33001_0 is + + S_Units_per_Word : constant := System.Word_Size/System.Storage_Unit; + + type Nibble is mod 2**4; + + type Byte is mod 2**8; + + type Half_Stuff is array(Natural range <>) of Nibble; + for Half_Stuff'Component_Size + use System.Word_Size / 2; -- factor -- ANX-C RQMT. + pragma Pack(Half_Stuff); -- ANX-C RQMT. + + type Word_Stuff is array(Natural range <>) of Byte; + for Word_Stuff'Component_Size + use System.Word_Size; -- ANX-C RQMT. + + type Address_Calculator is record + Item_1 : Nibble; + Item_2 : Nibble; + end record; + + for Address_Calculator use record + Item_1 at 0 range 0..3; + Item_2 at 1 range 0..3; + end record; + + -- given that Item_1 is specified to be at 'Position = 0 and + -- Item_2 is specified to be at 'Position = 1 + -- by definition (13.5.2(2)) abs(Item_2'Address - Item_1'Address) = 1 + +end CD33001_0; + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +-- there is no package body CD33001_0 + +------------------------------------------------------------------- CD33001 + +with Report; +with System.Storage_Elements; +with CD33001_0; +procedure CD33001 is + + use type System.Storage_Elements.Storage_Offset; + + A_Half : CD33001_0.Half_Stuff(0..15); + + A_Word : CD33001_0.Word_Stuff(0..15); + + procedure Unexpected( Message : String; Wanted, Got: Integer ) is + begin + Report.Failed( Message & " Wanted:" + & Integer'Image(Wanted) & " Got:" & Integer'Image(Got) ); + end Unexpected; + +begin -- Main test procedure. + + Report.Test ("CD33001", "Check that Component_Sizes that are factor of " & + "the word size are supported. Check that for " & + "such Component_Sizes arrays contain no gaps " & + "between components" ); + + if A_Half'Size /= A_Half'Component_Size * 16 then + Unexpected("Half word Size", + CD33001_0.Half_Stuff'Component_Size * 16, + A_Half'Size ); + end if; + + if A_Word(1)'Size /= System.Word_Size then + Unexpected("Word Size", System.Word_Size, A_Word(1)'Size ); + end if; + + + Report.Result; + +end CD33001; Index: cd3015i.ada =================================================================== --- cd3015i.ada (nonexistent) +++ cd3015i.ada (revision 338) @@ -0,0 +1,144 @@ +-- CD3015I.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 A DERIVED ENUMERATION TYPE WITH A REPRESENTATION +-- CLAUSE IN A GENERIC UNIT CAN BE USED CORRECTLY IN ORDERING +-- RELATIONS, INDEXING ARRAYS, AND IN GENERIC INSTANTIATIONS WHEN +-- THERE IS AN ENUMERATION CLAUSE FOR THE PARENT. + +-- HISTORY +-- DHH 09/30/87 CREATED ORIGINAL TEST. +-- BCB 03/20/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA'. +-- BCB 03/08/90 REVISED WORDING IN HEADER COMMENT AND IN CALL TO +-- REPORT.TEST. ADDED CHECK FOR NON-CONTIGUOUS CODES. +-- REVISED CHECK FOR ARRAY INDEXING. +-- THS 09/18/90 REVISED WORDING IN HEADER COMMENT AND FIXED FAILURE +-- ERROR MESSAGE. + +WITH REPORT; USE REPORT; +PROCEDURE CD3015I IS + +BEGIN + + TEST ("CD3015I", "CHECK THAT A DERIVED ENUMERATION TYPE WITH A " & + "REPRESENTATION CLAUSE IN A GENERIC UNIT CAN " & + "BE USED CORRECTLY IN ORDERING RELATIONS, " & + "INDEXING ARRAYS, AND IN GENERIC " & + "INSTANTIATIONS WHEN THERE IS AN ENUMERATION " & + "CLAUSE FOR THE PARENT"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW,'R','B','Y'); + FOR MAIN USE + (RED => 1, BLUE => 2, + YELLOW => 3, 'R' => 4, + 'B' => 5, 'Y' => 6); + + TYPE HUE IS NEW MAIN; + FOR HUE USE + (RED => 8, BLUE => 9, + YELLOW => 10, 'R' => 11, + 'B' => 12, 'Y' => 13); + + TYPE BASE IS ARRAY(HUE) OF INTEGER; + COLOR,BASIC : HUE; + BARRAY : BASE; + + TYPE HUE1 IS NEW MAIN; + FOR HUE1 USE (RED => 10, BLUE => 14, YELLOW => 16, + 'R' => 19, 'B' => 41, 'Y' => 46); + + TYPE BASE1 IS ARRAY(HUE1) OF INTEGER; + COLOR1,BASIC1 : HUE1; + BARRAY1 : BASE1; + + GENERIC + TYPE ENUM IS (<>); + PROCEDURE CHANGE(X,Y : IN OUT ENUM); + + END GENPACK; + + PACKAGE BODY GENPACK IS + + PROCEDURE CHANGE(X,Y : IN OUT ENUM) IS + T : ENUM; + BEGIN + T := X; + X := Y; + Y := T; + END CHANGE; + + PROCEDURE PROC IS NEW CHANGE(HUE); + PROCEDURE PROC1 IS NEW CHANGE(HUE1); + + BEGIN + BASIC := RED; + COLOR := HUE'SUCC(BASIC); + BASIC1 := RED; + COLOR1 := HUE1'SUCC(BASIC1); + IF (COLOR < BASIC OR BASIC >= 'R' OR 'Y' <= COLOR OR + COLOR > 'B') OR + NOT (COLOR1 >= BASIC1 AND BASIC1 < 'R' AND + 'Y' > COLOR1 AND COLOR1 <= 'B') THEN + FAILED("ORDERING RELATIONS ARE INCORRECT"); + END IF; + + PROC(BASIC,COLOR); + PROC1(BASIC1,COLOR1); + + IF COLOR /= RED OR COLOR1 /= RED THEN + FAILED("VALUES OF PARAMETERS TO INSTANCE OF " & + "GENERIC UNIT NOT CORRECT AFTER CALL"); + END IF; + + BARRAY := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + BARRAY1 := (IDENT_INT(1),IDENT_INT(2),IDENT_INT(3), + IDENT_INT(4),IDENT_INT(5),IDENT_INT(6)); + + IF (BARRAY (RED) /= 1 OR BARRAY (BLUE) /= 2 OR + BARRAY (YELLOW) /= 3 OR BARRAY ('R') /= 4 OR + BARRAY ('B') /= 5 OR BARRAY ('Y') /= 6) OR + NOT (BARRAY1 (RED) = 1 AND BARRAY1 (BLUE) = 2 AND + BARRAY1 (YELLOW) = 3 AND BARRAY1 ('R') = 4 AND + BARRAY1 ('B') = 5 AND BARRAY1 ('Y') = 6) + THEN + FAILED("INDEXING ARRAY FAILURE"); + END IF; + + END GENPACK; + + PACKAGE P IS NEW GENPACK; + BEGIN + NULL; + END; + + RESULT; +END CD3015I; Index: cdd2a01.a =================================================================== --- cdd2a01.a (nonexistent) +++ cdd2a01.a (revision 338) @@ -0,0 +1,379 @@ +-- CDD2A01.A +-- +-- Grant of Unlimited Rights +-- +-- The Ada Conformity Assessment Authority (ACAA) holds unlimited +-- rights in the software and documentation contained herein. Unlimited +-- rights are the same as those granted by the U.S. Government for older +-- parts of the Ada Conformity Assessment Test Suite, and are defined +-- in DFAR 252.227-7013(a)(19). By making this public release, the ACAA +-- intends to confer upon all recipients unlimited rights equal to those +-- held by the ACAA. 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 Read and Write attributes for a type extension are created +-- from the parent type's attribute (which may be user-defined) and those +-- for the extension components. Also check that the default Input and +-- Output attributes are used for a type extension, even if the parent +-- type's attribute is user-defined. (Defect Report 8652/0040, +-- as reflected in Technical Corrigendum 1, penultimate sentence of +-- 13.13.2(9/1) and 13.13.2(25/1)). +-- +-- CHANGE HISTORY: +-- 30 JUL 2001 PHL Initial version. +-- 5 DEC 2001 RLB Reformatted for ACATS. +-- +--! +with Ada.Streams; +use Ada.Streams; +with FDD2A00; +use FDD2A00; +with Report; +use Report; +procedure CDD2A01 is + + Input_Output_Error : exception; + + type Int is range 1 .. 1000; + type Str is array (Int range <>) of Character; + + procedure Read (Stream : access Root_Stream_Type'Class; + Item : out Int'Base); + procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base); + function Input (Stream : access Root_Stream_Type'Class) return Int'Base; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base); + + for Int'Read use Read; + for Int'Write use Write; + for Int'Input use Input; + for Int'Output use Output; + + + type Parent (D1, D2 : Int; B : Boolean) is tagged + record + S : Str (D1 .. D2); + case B is + when False => + C1 : Integer; + when True => + C2 : Float; + end case; + end record; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent); + procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent); + function Input (Stream : access Root_Stream_Type'Class) return Parent; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent); + + for Parent'Read use Read; + for Parent'Write use Write; + for Parent'Input use Input; + for Parent'Output use Output; + + + procedure Actual_Read + (Stream : access Root_Stream_Type'Class; Item : out Int) is + begin + Integer'Read (Stream, Integer (Item)); + end Actual_Read; + + procedure Actual_Write + (Stream : access Root_Stream_Type'Class; Item : Int) is + begin + Integer'Write (Stream, Integer (Item)); + end Actual_Write; + + function Actual_Input (Stream : access Root_Stream_Type'Class) return Int is + begin + return Int (Integer'Input (Stream)); + end Actual_Input; + + procedure Actual_Output + (Stream : access Root_Stream_Type'Class; Item : Int) is + begin + Integer'Output (Stream, Integer (Item)); + end Actual_Output; + + + procedure Actual_Read + (Stream : access Root_Stream_Type'Class; Item : out Parent) is + begin + case Item.B is + when False => + Item.C1 := 7; + when True => + Float'Read (Stream, Item.C2); + end case; + Str'Read (Stream, Item.S); + end Actual_Read; + + procedure Actual_Write + (Stream : access Root_Stream_Type'Class; Item : Parent) is + begin + case Item.B is + when False => + null; -- Don't write C1 + when True => + Float'Write (Stream, Item.C2); + end case; + Str'Write (Stream, Item.S); + end Actual_Write; + + function Actual_Input + (Stream : access Root_Stream_Type'Class) return Parent is + X : Parent (1, 1, True); + begin + raise Input_Output_Error; + return X; + end Actual_Input; + + procedure Actual_Output + (Stream : access Root_Stream_Type'Class; Item : Parent) is + begin + raise Input_Output_Error; + end Actual_Output; + + package Int_Ops is new Counting_Stream_Ops (T => Int'Base, + Actual_Write => Actual_Write, + Actual_Input => Actual_Input, + Actual_Read => Actual_Read, + Actual_Output => Actual_Output); + + package Parent_Ops is + new Counting_Stream_Ops (T => Parent, + Actual_Write => Actual_Write, + Actual_Input => Actual_Input, + Actual_Read => Actual_Read, + Actual_Output => Actual_Output); + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Int'Base) + renames Int_Ops.Read; + procedure Write (Stream : access Root_Stream_Type'Class; Item : Int'Base) + renames Int_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Int'Base + renames Int_Ops.Input; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Int'Base) + renames Int_Ops.Output; + + procedure Read (Stream : access Root_Stream_Type'Class; Item : out Parent) + renames Parent_Ops.Read; + procedure Write (Stream : access Root_Stream_Type'Class; Item : Parent) + renames Parent_Ops.Write; + function Input (Stream : access Root_Stream_Type'Class) return Parent + renames Parent_Ops.Input; + procedure Output (Stream : access Root_Stream_Type'Class; Item : Parent) + renames Parent_Ops.Output; + + type Derived1 is new Parent with + record + C3 : Int; + end record; + + type Derived2 (D : Int) is new Parent (D1 => D, + D2 => D, + B => False) with + record + C3 : Int; + end record; + +begin + Test ("CDD2A01", + "Check that the Read and Write attributes for a type " & + "extension are created from the parent type's " & + "attribute (which may be user-defined) and those for the " & + "extension components; also check that the default input " & + "and output attributes are used for a type extension, even " & + "if the parent type's attribute is user-defined"); + + Test1: + declare + S : aliased My_Stream (1000); + X1 : Derived1 (D1 => Int (Ident_Int (2)), + D2 => Int (Ident_Int (5)), + B => Ident_Bool (True)); + Y1 : Derived1 := (D1 => 3, + D2 => 6, + B => False, + S => Str (Ident_Str ("3456")), + C1 => Ident_Int (100), + C3 => Int (Ident_Int (88))); + X2 : Derived1 (D1 => Int (Ident_Int (2)), + D2 => Int (Ident_Int (5)), + B => Ident_Bool (True)); + begin + X1.S := Str (Ident_Str ("bcde")); + X1.C2 := Float (Ident_Int (4)); + X1.C3 := Int (Ident_Int (99)); + + Derived1'Write (S'Access, X1); + if Int_Ops.Get_Counts /= + (Read => 0, Write => 1, Input => 0, Output => 0) then + Failed ("Error writing extension components - 1"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 0, Write => 1, Input => 0, Output => 0) then + Failed ("Didn't call parent type's Write - 1"); + end if; + + Derived1'Read (S'Access, X2); + if Int_Ops.Get_Counts /= + (Read => 1, Write => 1, Input => 0, Output => 0) then + Failed ("Error reading extension components - 1"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 1, Write => 1, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 1"); + end if; + + if X2 /= (D1 => 2, + D2 => 5, + B => True, + S => Str (Ident_Str ("bcde")), + C2 => Float (Ident_Int (4)), + C3 => Int (Ident_Int (99))) then + Failed + ("Inherited Read and Write are not inverses of each other - 1"); + end if; + + begin + Derived1'Output (S'Access, Y1); + if Int_Ops.Get_Counts /= + (Read => 1, Write => 4, Input => 0, Output => 0) then + Failed ("Error writing extension components - 2"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 1, Write => 2, Input => 0, Output => 0) then + Failed ("Didn't call inherited Write - 2"); + end if; + exception + when Input_Output_Error => + Failed ("Did call inherited Output - 2"); + end; + + begin + declare + Y2 : Derived1 := Derived1'Input (S'Access); + begin + if Int_Ops.Get_Counts /= + (Read => 4, Write => 4, Input => 0, Output => 0) then + Failed ("Error reading extension components - 2"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 2, Write => 2, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 2"); + end if; + if Y2 /= (D1 => 3, + D2 => 6, + B => False, + S => Str (Ident_Str ("3456")), + C1 => Ident_Int (7), + C3 => Int (Ident_Int (88))) then + Failed + ("Input and Output are not inverses of each other - 2"); + end if; + end; + exception + when Input_Output_Error => + Failed ("Did call inherited Input - 2"); + end; + + end Test1; + + Test2: + declare + S : aliased My_Stream (1000); + X1 : Derived2 (D => Int (Ident_Int (7))); + Y1 : Derived2 := (D => 8, + S => Str (Ident_Str ("8")), + C1 => Ident_Int (200), + C3 => Int (Ident_Int (77))); + X2 : Derived2 (D => Int (Ident_Int (7))); + begin + X1.S := Str (Ident_Str ("g")); + X1.C1 := Ident_Int (4); + X1.C3 := Int (Ident_Int (666)); + + Derived2'Write (S'Access, X1); + if Int_Ops.Get_Counts /= + (Read => 4, Write => 5, Input => 0, Output => 0) then + Failed ("Error writing extension components - 3"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 2, Write => 3, Input => 0, Output => 0) then + Failed ("Didn't call inherited Write - 3"); + end if; + + Derived2'Read (S'Access, X2); + if Int_Ops.Get_Counts /= + (Read => 5, Write => 5, Input => 0, Output => 0) then + Failed ("Error reading extension components - 3"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 3, Write => 3, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 3"); + end if; + + if X2 /= (D => 7, + S => Str (Ident_Str ("g")), + C1 => Ident_Int (7), + C3 => Int (Ident_Int (666))) then + Failed ("Read and Write are not inverses of each other - 3"); + end if; + + begin + Derived2'Output (S'Access, Y1); + if Int_Ops.Get_Counts /= + (Read => 5, Write => 7, Input => 0, Output => 0) then + Failed ("Error writing extension components - 4"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 3, Write => 4, Input => 0, Output => 0) then + Failed ("Didn't call inherited Write - 4"); + end if; + exception + when Input_Output_Error => + Failed ("Did call inherited Output - 4"); + end; + + begin + declare + Y2 : Derived2 := Derived2'Input (S'Access); + begin + if Int_Ops.Get_Counts /= + (Read => 7, Write => 7, Input => 0, Output => 0) then + Failed ("Error reading extension components - 4"); + end if; + if Parent_Ops.Get_Counts /= + (Read => 4, Write => 4, Input => 0, Output => 0) then + Failed ("Didn't call inherited Read - 4"); + end if; + if Y2 /= (D => 8, + S => Str (Ident_Str ("8")), + C1 => Ident_Int (7), + C3 => Int (Ident_Int (77))) then + Failed + ("Input and Output are not inverses of each other - 4"); + end if; + end; + exception + when Input_Output_Error => + Failed ("Did call inherited Input - 4"); + end; + + end Test2; + + Result; +end CDD2A01; Index: cd3015k.ada =================================================================== --- cd3015k.ada (nonexistent) +++ cd3015k.ada (revision 338) @@ -0,0 +1,92 @@ +-- CD3015K.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 AN ENUMERATION +-- REPRESENTATION CLAUSE FOR A DERIVED TYPE CAN BE GIVEN IN THE +-- VISIBLE OR PRIVATE PART OF A GENERIC PACKAGE FOR A DERIVED TYPE +-- DECLARED IN THE VISIBLE PART, WHERE AN ENUMERATION CLAUSE +-- HAS BEEN GIVEN FOR THE PARENT. + +-- HISTORY +-- DHH 10/01/87 CREATED ORIGINAL TEST +-- DHH 03/29/89 CHANGE FROM 'A' TEST TO 'C' TEST AND FROM '.DEP' +-- '.ADA'. ADDED CHECK ON REPRESENTATION CLAUSES. + +WITH REPORT; USE REPORT; +WITH ENUM_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD3015K IS + +BEGIN + + TEST ("CD3015K", "CHECK THAT AN ENUMERATION REPRESENTATION " & + "CLAUSE FOR A DERIVED TYPE CAN BE GIVEN IN " & + "THE VISIBLE OR PRIVATE PART OF A GENERIC " & + "PACKAGE FOR A DERIVED TYPE DECLARED IN " & + "THE VISIBLE PART, WHERE AN ENUMERATION " & + "CLAUSE HAS BEEN GIVEN FOR THE PARENT"); + + DECLARE + + GENERIC + PACKAGE GENPACK IS + + TYPE MAIN IS (RED,BLUE,YELLOW); + FOR MAIN USE (RED => 1, BLUE => 2, YELLOW => 3); + + TYPE HUE IS NEW MAIN; + TYPE NEWHUE IS NEW MAIN; + + FOR HUE USE (RED => 8, BLUE => 11, YELLOW => 12); + + PRIVATE + + FOR NEWHUE USE (RED => 6, BLUE => 12, YELLOW => 18); + + TYPE INT1 IS RANGE 8 .. 12; + FOR INT1'SIZE USE HUE'SIZE; + + TYPE INT2 IS RANGE 6 .. 18; + FOR INT2'SIZE USE NEWHUE'SIZE; + + PROCEDURE CHECK_1 IS NEW ENUM_CHECK(HUE, INT1); + PROCEDURE CHECK_2 IS NEW ENUM_CHECK(NEWHUE, INT2); + + END GENPACK; + + PACKAGE BODY GENPACK IS + + BEGIN + CHECK_1 (RED, 8, "HUE"); + CHECK_2 (YELLOW, 18, "NEWHUE"); + END GENPACK; + + PACKAGE P IS NEW GENPACK; + + BEGIN + NULL; + END; + + RESULT; +END CD3015K; Index: cd2a31a.ada =================================================================== --- cd2a31a.ada (nonexistent) +++ cd2a31a.ada (revision 338) @@ -0,0 +1,266 @@ +-- CD2A31A.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN +-- INTEGER TYPE, THEN OPERATIONS ON VALUES OF SUCH A TYPE +-- ARE NOT AFFECTED BY THE REPRESENTATION CLAUSE. + +-- HISTORY: +-- JET 08/06/87 CREATED ORIGINAL TEST. +-- DHH 04/06/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 9, AND ADDED REPRESENTAION +-- CLAUSE CHECK. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD2A31A IS + + BASIC_SIZE : CONSTANT := 9; + + TYPE INT IS RANGE -100 .. 100; + + FOR INT'SIZE USE BASIC_SIZE; + + I1 : INT := -100; + I2 : INT := 0; + I3 : INT := 100; + + TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE -1 .. 1) OF INT; + INTARRAY : ARRAY_TYPE := (-100, 0, 100); + + TYPE REC_TYPE IS RECORD + COMPN : INT := -100; + COMPZ : INT := 0; + COMPP : INT := 100; + END RECORD; + + IREC : REC_TYPE; + + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (INT); + + FUNCTION IDENT (I : INT) RETURN INT IS + BEGIN + IF EQUAL (0,0) THEN + RETURN I; + ELSE + RETURN 0; + END IF; + END IDENT; + + PROCEDURE PROC (PIN, PIP : INT; + PIOZ, PIOP : IN OUT INT; + POP : OUT INT) IS + + BEGIN + IF PIN'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR PIN'SIZE"); + END IF; + + IF NOT ((PIN < IDENT (0)) AND + (IDENT (PIP) > IDENT (PIOZ)) AND + (PIOZ <= IDENT (1)) AND + (IDENT (100) = PIP)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS - 1"); + END IF; + + IF NOT (((PIN + PIP) = PIOZ) AND + ((PIP - PIOZ) = PIOP) AND + ((PIOP * PIOZ) = PIOZ) AND + ((PIOZ / PIN) = PIOZ) AND + ((PIN ** 1) = PIN) AND + ((PIN REM 9) = IDENT (-1)) AND + ((PIP MOD 9) = IDENT (1))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 1"); + END IF; + + IF INT'VAL (-100) /= IDENT (PIN) OR + INT'VAL (0) /= IDENT (PIOZ) OR + INT'VAL (100) /= IDENT (PIOP) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 1"); + END IF; + + IF INT'PRED (PIOZ) /= IDENT (-1) OR + INT'PRED (PIP) /= IDENT (99) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 1"); + END IF; + + IF INT'VALUE ("-100") /= IDENT (PIN) OR + INT'VALUE ("0") /= IDENT (PIOZ) OR + INT'VALUE ("100") /= IDENT (PIOP) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 1"); + END IF; + + POP := 100; + + END PROC; + +BEGIN + TEST ("CD2A31A", "CHECK THAT WHEN A SIZE SPECIFICATION IS " & + "GIVEN FOR AN INTEGER TYPE, THEN " & + "OPERATIONS ON VALUES OF SUCH A TYPE ARE " & + "NOT AFFECTED BY THE REPRESENTATION CLAUSE"); + + CHECK_1 (I1, 9, "INT"); + PROC (-100, 100, I2, I3, I3); + + IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INT'SIZE"); + END IF; + + IF I1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR I1'SIZE"); + END IF; + + FOR I IN IDENT (I1) .. IDENT (I3) LOOP + IF NOT (I IN I1 .. I3) OR + (I NOT IN IDENT(-100) .. IDENT(100)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 2"); + END IF; + END LOOP; + + IF NOT ((+I1 = I1) AND + (-I3 = I1) AND + (ABS I1 = I3)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 2"); + END IF; + + IF INT'FIRST /= IDENT (-100) THEN + FAILED ("INCORRECT VALUE FOR INT'FIRST - 2"); + END IF; + + IF INT'POS (I1) /= IDENT_INT (-100) OR + INT'POS (I2) /= IDENT_INT ( 0) OR + INT'POS (I3) /= IDENT_INT ( 100) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 2"); + END IF; + + IF INT'SUCC (I1) /= IDENT (-99) OR + INT'SUCC (I2) /= IDENT (1) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 2"); + END IF; + + IF INT'IMAGE (I1) /= IDENT_STR ("-100") OR + INT'IMAGE (I2) /= IDENT_STR (" 0") OR + INT'IMAGE (I3) /= IDENT_STR (" 100") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 2"); + END IF; + + IF INTARRAY(0)'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INTARRAY(0)'SIZE"); + END IF; + + IF NOT ((INTARRAY(-1) < IDENT (0)) AND + (IDENT (INTARRAY (1)) > IDENT (INTARRAY(0))) AND + (INTARRAY(0) <= IDENT (0)) AND + (IDENT (100) = INTARRAY (1))) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 3"); + END IF; + + FOR I IN IDENT (INTARRAY(-1)) .. IDENT (INTARRAY(1)) LOOP + IF NOT (I IN INTARRAY(-1) .. INTARRAY(1)) OR + (I NOT IN IDENT(-100) .. IDENT(100)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 3"); + END IF; + END LOOP; + + IF NOT (((INTARRAY(-1) + INTARRAY( 1)) = INTARRAY( 0)) AND + ((INTARRAY( 0) - INTARRAY( 1)) = INTARRAY(-1)) AND + ((INTARRAY( 1) * INTARRAY( 0)) = INTARRAY( 0)) AND + ((INTARRAY( 0) / INTARRAY(-1)) = INTARRAY( 0)) AND + ((INTARRAY(-1) ** 1) = INTARRAY(-1)) AND + ((INTARRAY(-1) REM 9) = IDENT (-1)) AND + ((INTARRAY( 1) MOD 9) = IDENT ( 1))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS - 3"); + END IF; + + IF INT'POS (INTARRAY (-1)) /= IDENT_INT (-100) OR + INT'POS (INTARRAY ( 0)) /= IDENT_INT ( 0) OR + INT'POS (INTARRAY ( 1)) /= IDENT_INT ( 100) THEN + FAILED ("INCORRECT VALUE FOR INT'POS - 3"); + END IF; + + IF INT'SUCC (INTARRAY (-1)) /= IDENT (-99) OR + INT'SUCC (INTARRAY ( 0)) /= IDENT (1) THEN + FAILED ("INCORRECT VALUE FOR INT'SUCC - 3"); + END IF; + + IF INT'IMAGE (INTARRAY (-1)) /= IDENT_STR ("-100") OR + INT'IMAGE (INTARRAY ( 0)) /= IDENT_STR (" 0") OR + INT'IMAGE (INTARRAY ( 1)) /= IDENT_STR (" 100") THEN + FAILED ("INCORRECT VALUE FOR INT'IMAGE - 3"); + END IF; + + IF IREC.COMPP'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR IREC.COMPP'SIZE"); + END IF; + + IF NOT ((IREC.COMPN < IDENT (0)) AND + (IDENT (IREC.COMPP) > IDENT (IREC.COMPZ)) AND + (IREC.COMPZ <= IDENT (0)) AND + (IDENT (100) = IREC.COMPP)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL OPERATORS - 4"); + END IF; + + FOR I IN IDENT (IREC.COMPN) .. IDENT (IREC.COMPP) LOOP + IF NOT (I IN IREC.COMPN .. IREC.COMPP) OR + (I NOT IN IDENT(-100) .. IDENT(100)) THEN + FAILED ("INCORRECT RESULTS FOR MEMBERSHIP " & + "OPERATORS - 4"); + END IF; + END LOOP; + + IF NOT ((+IREC.COMPN = IREC.COMPN) AND + (-IREC.COMPP = IREC.COMPN) AND + (ABS IREC.COMPN = IREC.COMPP)) THEN + FAILED ("INCORRECT RESULTS FOR UNARY ARITHMETIC " & + "OPERATORS - 4"); + END IF; + + IF INT'VAL (-100) /= IDENT (IREC.COMPN) OR + INT'VAL ( 0) /= IDENT (IREC.COMPZ) OR + INT'VAL ( 100) /= IDENT (IREC.COMPP) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL - 4"); + END IF; + + IF INT'PRED (IREC.COMPZ) /= IDENT (-1) OR + INT'PRED (IREC.COMPP) /= IDENT (99) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED - 4"); + END IF; + + IF INT'VALUE ("-100") /= IDENT (IREC.COMPN) OR + INT'VALUE ( "0") /= IDENT (IREC.COMPZ) OR + INT'VALUE ( "100") /= IDENT (IREC.COMPP) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE - 4"); + END IF; + + RESULT; +END CD2A31A; Index: cd2a31c.ada =================================================================== --- cd2a31c.ada (nonexistent) +++ cd2a31c.ada (revision 338) @@ -0,0 +1,127 @@ +-- CD2A31C.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 INTEGER 'SIZE SPECIFICATIONS CAN BE GIVEN: +-- IN THE VISIBLE OR PRIVATE PART OF A PACKAGE FOR A TYPE +-- DECLARED IN THE VISIBLE PART; +-- FOR A DERIVED INTEGER TYPE; +-- FOR A DERIVED PRIVATE TYPE WHOSE FULL DECLARATION IS AS +-- AN INTEGER TYPE; +-- FOR AN INTEGER TYPE IN A GENERIC UNIT. + +-- HISTORY: +-- PWB 06/17/87 CREATED ORIGINAL TEST. +-- DHH 04/06/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 9, AND ADDED REPRESENTAION +-- CLAUSE CHECK AND INCLUDED TEST FOR INTEGER IN A +-- GENERIC UNIT. +-- JRL 03/27/92 REMOVED TESTING OF NONOBJECTIVE TYPES. +-- DTN 06/17/92 REMOVED THE LENGTH CLAUSE FOR TYPE PRIVATE_INT. + +WITH REPORT; USE REPORT; +WITH LENGTH_CHECK; -- CONTAINS A CALL TO 'FAILED'. +PROCEDURE CD2A31C IS + + TYPE BASIC_INT IS RANGE -60 .. 80; + SPECIFIED_SIZE : CONSTANT := 9; + + TYPE DERIVED_INT IS NEW BASIC_INT; + FOR DERIVED_INT'SIZE USE SPECIFIED_SIZE; + + PACKAGE P IS + TYPE INT_IN_P IS RANGE -125 .. 125; + FOR INT_IN_P'SIZE USE SPECIFIED_SIZE; + TYPE PRIVATE_INT IS PRIVATE; + TYPE ALT_INT_IN_P IS RANGE -125 .. 125; + PRIVATE + TYPE PRIVATE_INT IS RANGE -125 .. 125; + FOR ALT_INT_IN_P'SIZE USE SPECIFIED_SIZE; + END P; + + USE P; + TYPE DERIVED_PRIVATE_INT IS NEW PRIVATE_INT; + FOR DERIVED_PRIVATE_INT'SIZE USE SPECIFIED_SIZE; + MINIMUM_SIZE : INTEGER := IDENT_INT(SPECIFIED_SIZE); + +-- SIZE SPECIFICATION GIVEN IN A GENERIC PROCEDURE. + + GENERIC + PROCEDURE GENPROC; + + PROCEDURE GENPROC IS + TYPE CHECK_INT IS RANGE -125 .. 125; + FOR CHECK_INT'SIZE USE SPECIFIED_SIZE; + + PROCEDURE CHECK_4 IS NEW LENGTH_CHECK (CHECK_INT); + + BEGIN + + IF CHECK_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("GENERIC CHECK_INT'SIZE IS INCORRECT"); + END IF; + CHECK_4 (-60, 9, "GENERIC CHECK_INT"); + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC; + + PROCEDURE CHECK_1 IS NEW LENGTH_CHECK (DERIVED_INT); + PROCEDURE CHECK_2 IS NEW LENGTH_CHECK (INT_IN_P); + PROCEDURE CHECK_3 IS NEW LENGTH_CHECK (ALT_INT_IN_P); + +BEGIN + + TEST("CD2A31C", "CHECK THAT 'SIZE SPECIFICATIONS CAN BE GIVEN IN " & + "VISIBLE OR PRIVATE PART OF PACKAGE FOR INTEGER " & + "TYPE DECLARED IN VISIBLE PART, AND FOR " & + "DERIVED INTEGER TYPES " & + "AND DERIVED PRIVATE TYPES WHOSE FULL DECLARATIONS " & + "ARE AS INTEGER TYPES"); + + CHECK_1 (-60, 9, "DERIVED_INT"); + CHECK_2 (-60, 9, "INT_IN_P"); + CHECK_3 (-60, 9, "ALT_INT_IN_P"); + + NEWPROC; + + IF DERIVED_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_INT'SIZE INCORRECT"); + END IF; + + IF INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("INT_IN_P'SIZE INCORRECT"); + END IF; + + IF ALT_INT_IN_P'SIZE /= MINIMUM_SIZE THEN + FAILED ("ALT_INT_IN_P'SIZE INCORRECT"); + END IF; + + IF DERIVED_PRIVATE_INT'SIZE /= MINIMUM_SIZE THEN + FAILED ("DERIVED_PRIVATE_INT'SIZE INCORRECT"); + END IF; + + RESULT; + +END CD2A31C; Index: cd2a31e.ada =================================================================== --- cd2a31e.ada (nonexistent) +++ cd2a31e.ada (revision 338) @@ -0,0 +1,139 @@ +-- CD2A31E.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 WHEN A SIZE SPECIFICATION IS GIVEN FOR AN +-- INTEGER TYPE, THEN SUCH A TYPE CAN BE PASSED AS AN ACTUAL +-- PARAMETER TO GENERIC PROCEDURES. + +-- HISTORY: +-- JET 08/12/87 CREATED ORIGINAL TEST. +-- BCB 10/18/88 MODIFIED HEADER AND ENTERED IN ACVC. +-- DHH 04/06/89 CHANGED EXTENSION FROM '.DEP' TO '.ADA', CHANGED +-- SIZE CLAUSE VALUE TO 9, AND CHANGED 'SIZE CLAUSE +-- CHECKS. +-- JRL 03/27/92 ELIMINATED REDUNDANT TESTING. + +WITH REPORT; USE REPORT; + +PROCEDURE CD2A31E IS + + TYPE BASIC_INT IS RANGE -100 .. 100; + BASIC_SIZE : CONSTANT := 9; + + FOR BASIC_INT'SIZE USE BASIC_SIZE; + +BEGIN + + TEST ("CD2A31E", "CHECK THAT WHEN A SIZE SPECIFICATION IS " & + "GIVEN FOR AN INTEGER TYPE, THEN SUCH A TYPE " & + "CAN BE PASSED AS AN ACTUAL PARAMETER TO " & + "GENERIC PACKAGES AND PROCEDURES"); + + DECLARE -- TYPE DECLARATION WITHIN GENERIC PROCEDURE. + + GENERIC + TYPE GPARM IS RANGE <>; + PROCEDURE GENPROC; + + PROCEDURE GENPROC IS + + SUBTYPE INT IS GPARM; + + I1 : INT := -100; + I2 : INT := 0; + I3 : INT := 100; + + FUNCTION IDENT (I : INT) RETURN INT IS + BEGIN + IF EQUAL (0,0) THEN + RETURN I; + ELSE + RETURN 0; + END IF; + END IDENT; + + BEGIN -- GENPROC. + + IF INT'SIZE /= IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR INT'SIZE"); + END IF; + + IF I1'SIZE < IDENT_INT (BASIC_SIZE) THEN + FAILED ("INCORRECT VALUE FOR I1'SIZE"); + END IF; + + IF NOT ((I1 < IDENT (0)) AND + (IDENT (I3) > IDENT (I2)) AND + (I2 <= IDENT (0)) AND + (IDENT (100) = I3)) THEN + FAILED ("INCORRECT RESULTS FOR RELATIONAL " & + "OPERATORS"); + END IF; + + IF NOT (((I1 + I3) = I2) AND + ((I2 - I3) = I1) AND + ((I3 * I2) = I2) AND + ((I2 / I1) = I2) AND + ((I1 ** 1) = I1) AND + ((I1 REM 9) = IDENT (-1)) AND + ((I3 MOD 9) = IDENT (1))) THEN + FAILED ("INCORRECT RESULTS FOR BINARY ARITHMETIC " & + "OPERATORS"); + END IF; + + IF INT'LAST /= IDENT (100) THEN + FAILED ("INCORRECT VALUE FOR INT'LAST"); + END IF; + + IF INT'VAL (-100) /= IDENT (I1) OR + INT'VAL (0) /= IDENT (I2) OR + INT'VAL (100) /= IDENT (I3) THEN + FAILED ("INCORRECT VALUE FOR INT'VAL"); + END IF; + + IF INT'PRED (I2) /= IDENT (-1) OR + INT'PRED (I3) /= IDENT (99) THEN + FAILED ("INCORRECT VALUE FOR INT'PRED"); + END IF; + + IF INT'VALUE ("-100") /= IDENT (I1) OR + INT'VALUE (" 0") /= IDENT (I2) OR + INT'VALUE (" 100") /= IDENT (I3) THEN + FAILED ("INCORRECT VALUE FOR INT'VALUE"); + END IF; + + END GENPROC; + + PROCEDURE NEWPROC IS NEW GENPROC (BASIC_INT); + + BEGIN + + NEWPROC; + + END; + + RESULT; + +END CD2A31E; Index: cd7101f.dep =================================================================== --- cd7101f.dep (nonexistent) +++ cd7101f.dep (revision 338) @@ -0,0 +1,62 @@ +-- CD7101F.DEP + +-- 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 FOR MIN_INT AND MAX_INT IN PACKAGE SYSTEM, +-- LONG_INTEGER'FIRST >= MIN_INT AND LONG_INTEGER'LAST <= MAX_INT. + +-- APPLICABILITY CRITERIA: +-- THIS TEST IS APPLICABLE ONLY TO IMPLEMENTATIONS THAT SUPPORT +-- THE LONG_INTEGER DATA TYPE. + +-- IF THE LONG_INTEGER TYPE IS NOT SUPPORTED, THEN THE +-- DECLARATION OF "TEST_VAR" MUST BE REJECTED. + +-- HISTORY: +-- JET 09/10/87 CREATED ORIGINAL TEST. + +WITH SYSTEM; +WITH REPORT; USE REPORT; + +PROCEDURE CD7101F IS + + TEST_VAR : LONG_INTEGER := 0; -- N/A => ERROR. + +BEGIN + + TEST ("CD7101F", "CHECK THAT FOR MIN_INT AND MAX_INT IN PACKAGE " & + "SYSTEM, LONG_INTEGER'FIRST >= MIN_INT AND " & + "LONG_INTEGER'LAST <= MAX_INT"); + + IF LONG_INTEGER'POS (LONG_INTEGER'FIRST) < SYSTEM.MIN_INT THEN + FAILED ("INCORRECT VALUE FOR SYSTEM.MIN_INT"); + END IF; + + IF LONG_INTEGER'POS (LONG_INTEGER'LAST) > SYSTEM.MAX_INT THEN + FAILED ("INCORRECT VALUE FOR SYSTEM.MAX_INT"); + END IF; + + RESULT; + +END CD7101F;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.