OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [cc/] [cc3605a.ada] - Rev 720

Compare with Previous | Blame | View Log

-- CC3605A.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 SOME DIFFERENCES BETWEEN THE FORMAL AND THE
--     ACTUAL SUBPROGRAMS DO NOT INVALIDATE A MATCH.
--          1)  CHECK DIFFERENT PARAMETER NAMES.
--          2)  CHECK DIFFERENT PARAMETER CONSTRAINTS.
--          3)  CHECK ONE PARAMETER CONSTRAINED AND THE OTHER
--               UNCONSTRAINED (WITH ARRAY, RECORD, ACCESS, AND
--               PRIVATE TYPES).
--          4)  CHECK PRESENCE OR ABSENCE OF AN EXPLICIT "IN" MODE
--               INDICATOR.
--          5)  DIFFERENT TYPE MARKS USED TO SPECIFY THE TYPE OF
--               PARAMETERS.
 
-- HISTORY:
--     LDC 10/04/88  CREATED ORIGINAL TEST.
 
PACKAGE CC3605A_PACK IS
 
     SUBTYPE INT IS INTEGER RANGE -100 .. 100;
 
     TYPE PRI_TYPE (SIZE : INT) IS PRIVATE;
 
     SUBTYPE PRI_CONST IS PRI_TYPE (2);
 
PRIVATE
 
     TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
 
     TYPE PRI_TYPE (SIZE : INT) IS
          RECORD
               SUB_A : ARR_TYPE (1 .. SIZE);
          END RECORD;
 
END CC3605A_PACK;
 
 
WITH REPORT;
USE  REPORT;
WITH CC3605A_PACK;
USE  CC3605A_PACK;
 
PROCEDURE CC3605A IS
 
     SUBTYPE ZERO_TO_TEN IS INTEGER
          RANGE IDENT_INT (0) .. IDENT_INT (10);
 
     SUBTYPE ONE_TO_FIVE IS INTEGER
          RANGE IDENT_INT (1) .. IDENT_INT (5);
 
     SUBPRG_ACT : BOOLEAN := FALSE;
BEGIN
     TEST
          ("CC3605A", "CHECK THAT SOME DIFFERENCES BETWEEN THE " &
                      "FORMAL AND THE ACTUAL PARAMETERS DO NOT " &
                      "INVALIDATE A MATCH");
 
----------------------------------------------------------------------
-- DIFFERENT PARAMETER NAMES
----------------------------------------------------------------------
 
     DECLARE
 
          PROCEDURE ACT_PROC (DIFF_NAME_PARM : ONE_TO_FIVE) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : ONE_TO_FIVE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (ONE_TO_FIVE'FIRST);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("DIFFERENT PARAMETER NAMES MADE MATCH INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- DIFFERENT PARAMETER CONSTRAINTS
----------------------------------------------------------------------
 
     DECLARE
 
          PROCEDURE ACT_PROC (PARM : ONE_TO_FIVE) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : ZERO_TO_TEN);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (ONE_TO_FIVE'FIRST);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("DIFFERENT PARAMETER CONSTRAINTS MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- ONE PARAMETER CONSTRAINED (ARRAY)
----------------------------------------------------------------------
 
     DECLARE
 
          TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
 
          SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
               ONE_TO_FIVE'LAST);
 
          PASSED_PARM : ARR_CONST := (OTHERS => TRUE);
 
          PROCEDURE ACT_PROC (PARM : ARR_CONST) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : ARR_TYPE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (PASSED_PARM);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("ONE ARRAY PARAMETER CONSTRAINED MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- ONE PARAMETER CONSTRAINED (RECORDS)
----------------------------------------------------------------------
 
     DECLARE
 
          TYPE REC_TYPE (BOL : BOOLEAN) IS
               RECORD
                    SUB_A : INTEGER;
                    CASE BOL IS
                         WHEN TRUE =>
                              DSCR_A : INTEGER;
 
                         WHEN FALSE =>
                              DSCR_B : BOOLEAN;
 
                    END CASE;
               END RECORD;
 
          SUBTYPE REC_CONST IS REC_TYPE (TRUE);
 
          PASSED_PARM : REC_CONST := (TRUE, 1, 2);
 
          PROCEDURE ACT_PROC (PARM : REC_CONST) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : REC_TYPE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (PASSED_PARM);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("ONE RECORD PARAMETER CONSTRAINED MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- ONE PARAMETER CONSTRAINED (ACCESS)
----------------------------------------------------------------------
 
     DECLARE
 
          TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
 
          SUBTYPE ARR_CONST     IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
               ONE_TO_FIVE'LAST);
 
          TYPE ARR_ACC_TYPE IS ACCESS ARR_TYPE;
 
          SUBTYPE ARR_ACC_CONST IS ARR_ACC_TYPE (1 .. 3);
 
          PASSED_PARM : ARR_ACC_TYPE := NULL;
 
          PROCEDURE ACT_PROC (PARM : ARR_ACC_CONST) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : ARR_ACC_TYPE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (PASSED_PARM);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("ONE ACCESS PARAMETER CONSTRAINED MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- ONE PARAMETER CONSTRAINED (PRIVATE)
----------------------------------------------------------------------
 
     DECLARE
          PASSED_PARM : PRI_CONST;
 
          PROCEDURE ACT_PROC (PARM : PRI_CONST) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : PRI_TYPE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (PASSED_PARM);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                    ("ONE PRIVATE PARAMETER CONSTRAINED MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- PRESENCE (OR ABSENCE) OF AN EXPLICIT "IN" MODE
----------------------------------------------------------------------
 
     DECLARE
 
          PROCEDURE ACT_PROC (PARM : INTEGER) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM : IN INTEGER);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (1);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED
                     ("PRESENCE OF AN EXPLICIT 'IN' MODE MADE MATCH " &
                     "INVALID");
          END IF;
     END;
 
----------------------------------------------------------------------
-- DIFFERENT TYPE MARKS
----------------------------------------------------------------------
 
     DECLARE
 
          SUBTYPE MARK_1_TYPE IS INTEGER;
 
          SUBTYPE MARK_2_TYPE IS INTEGER;
 
          PROCEDURE ACT_PROC (PARM1 : IN MARK_1_TYPE) IS
          BEGIN
               SUBPRG_ACT := TRUE;
          END ACT_PROC;
 
          GENERIC
 
               WITH PROCEDURE PASSED_PROC (PARM2 : MARK_2_TYPE);
 
          PROCEDURE GEN_PROC;
 
          PROCEDURE GEN_PROC IS
          BEGIN
               PASSED_PROC (1);
          END GEN_PROC;
 
          PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
     BEGIN
          SUBPRG_ACT := FALSE;
          INST_PROC;
          IF NOT SUBPRG_ACT THEN
               FAILED ("DIFFERENT TYPE MARKS MADE MATCH INVALID");
          END IF;
     END;
     RESULT;
END CC3605A;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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