cc3225a.ada

来自「用于进行gcc测试」· ADA 代码 · 共 184 行

ADA
184
字号
-- CC3225A.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 FORMAL ACCESS TYPE DENOTES ITS ACTUAL--     PARAMETER, AND THAT OPERATIONS OF THE FORMAL TYPE ARE THOSE--     IDENTIFIED WITH THE CORRESPONDING OPERATIONS OF THE ACTUAL TYPE.-- HISTORY:--     DHH 10/21/88  CREATED ORIGINAL TEST.--     PWN 02/02/95  REMOVED INCONSISTENCIES WITH ADA 9X.WITH REPORT; USE REPORT;PROCEDURE CC3225A IS     GENERIC          TYPE NODE IS PRIVATE;          TYPE T IS ACCESS NODE;     PACKAGE P IS          SUBTYPE SUB_T IS T;          PAC_VAR : SUB_T;     END P;BEGIN     TEST ("CC3225A", "CHECK THAT A FORMAL ACCESS TYPE DENOTES ITS " &                      "ACTUAL PARAMETER, AND THAT OPERATIONS OF THE " &                      "FORMAL TYPE ARE THOSE IDENTIFIED WITH THE " &                      "CORRESPONDING OPERATIONS OF THE ACTUAL TYPE");     DECLARE          SUBTYPE INT IS INTEGER RANGE 1 .. 3;          TYPE ARR IS ARRAY(1 .. 3) OF INTEGER;          TYPE ACC_ARR IS ACCESS ARR;          Q : ACC_ARR := NEW ARR;          PACKAGE P1 IS NEW P (ARR, ACC_ARR);          USE P1;     BEGIN          PAC_VAR := NEW ARR'(1, 2, 3);          IF PAC_VAR'FIRST /= Q'FIRST THEN               FAILED("'FIRST ATTRIBUTE FAILED");          END IF;          IF PAC_VAR'LAST /= Q'LAST THEN               FAILED("'LAST ATTRIBUTE FAILED");          END IF;          IF PAC_VAR'FIRST(1) /= Q'FIRST(1) THEN               FAILED("'FIRST(N) ATTRIBUTE FAILED");          END IF;          IF NOT (PAC_VAR'LAST(1) = Q'LAST(1)) THEN               FAILED("'LAST(N) ATTRIBUTE FAILED");          END IF;          IF 2 NOT IN PAC_VAR'RANGE THEN               FAILED("'RANGE ATTRIBUTE FAILED");          END IF;          IF 3 NOT IN PAC_VAR'RANGE(1) THEN               FAILED("'RANGE(N) ATTRIBUTE FAILED");          END IF;          IF PAC_VAR'LENGTH /= Q'LENGTH THEN               FAILED("'LENGTH ATTRIBUTE FAILED");          END IF;          IF PAC_VAR'LENGTH(1) /= Q'LENGTH(1) THEN               FAILED("'LENGTH(N) ATTRIBUTE FAILED");           END IF;          PAC_VAR.ALL := (1, 2, 3);          IF IDENT_INT(3) /= PAC_VAR(3) THEN               FAILED("ASSIGNMENT FAILED");          END IF;          IF SUB_T'(PAC_VAR) NOT IN SUB_T THEN               FAILED("QUALIFIED EXPRESSION FAILED");          END IF;          Q.ALL := PAC_VAR.ALL;          IF SUB_T(Q) = PAC_VAR THEN               FAILED("EXPLICIT CONVERSION FAILED");          END IF;          IF Q(1) /= PAC_VAR(1) THEN               FAILED("INDEXING FAILED");          END IF;          IF (1, 2) /= PAC_VAR(1 .. 2) THEN               FAILED("SLICE FAILED");          END IF;          IF (1, 2) & PAC_VAR(3) /= PAC_VAR.ALL THEN               FAILED("CATENATION FAILED");          END IF;     END;     DECLARE          TASK TYPE TSK IS               ENTRY ONE;          END TSK;          GENERIC               TYPE T IS ACCESS TSK;          PACKAGE P IS               SUBTYPE SUB_T IS T;               PAC_VAR : SUB_T;          END P;          TYPE ACC_TSK IS ACCESS TSK;          PACKAGE P1 IS NEW P(ACC_TSK);          USE P1;          GLOBAL : INTEGER := 5;          TASK BODY TSK IS          BEGIN               ACCEPT ONE DO                    GLOBAL := 1;               END ONE;          END;     BEGIN          PAC_VAR := NEW TSK;          PAC_VAR.ONE;          IF GLOBAL /= 1 THEN               FAILED("TASK ENTRY SELECTION FAILED");          END IF;     END;     DECLARE          TYPE REC IS               RECORD                    I : INTEGER;                    B : BOOLEAN;               END RECORD;          TYPE ACC_REC IS ACCESS REC;          PACKAGE P1 IS NEW P (REC, ACC_REC);          USE P1;     BEGIN          PAC_VAR := NEW REC'(4, (PAC_VAR IN ACC_REC));          IF PAC_VAR.I /= IDENT_INT(4) AND NOT PAC_VAR.B THEN               FAILED("RECORD COMPONENT SELECTION FAILED");          END IF;     END;     DECLARE          TYPE REC(B : BOOLEAN := FALSE) IS               RECORD                    NULL;               END RECORD;          TYPE ACC_REC IS ACCESS REC;          PACKAGE P1 IS NEW P (REC, ACC_REC);          USE P1;     BEGIN          PAC_VAR := NEW REC'(B => PAC_VAR IN ACC_REC);          IF NOT PAC_VAR.B THEN               FAILED("DISCRIMINANT SELECTION FAILED");          END IF;     END;     RESULT;END CC3225A;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?