cc1225a.tst

来自「用于进行gcc测试」· TST 代码 · 共 351 行

TST
351
字号
-- CC1225A.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, FOR A FORMAL ACCESS TYPE, THAT ALL ALLOWABLE OPERATIONS--     ARE IMPLICITLY DECLARED.-- MACRO SUBSTITUTION:--     $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR--     THE ACTIVATION OF A TASK.-- HISTORY:--     BCB 03/29/88  CREATED ORIGINAL TEST.--     RDH 04/09/90  ADDED 'STORAGE_SIZE CLAUSES.  CHANGED EXTENSION TO--                   'TST'.--     LDC 09/26/90  REMOVED 'USE PACK' AFTER THE WITH SINCE IT ISN'T --                   NEEDED, ADDED CHECK FOR NULL AFTER ASSIGMENT TO--                   NULL, ADDED CHECKS FOR OTHER RELATION OPERATORS,--                   CHANGED CHECK FOR 'ADDRESS TO A PROCEDURE CALL.--     LDC 10/13/90  CHANGED CHECK FOR 'SIZE TO ONLY CHECK FOR --                   AVAILABILITY.  CHANGED CHECK FOR 'ADDRESS TO A --                   MEMBERSHIP TEST.--     PWN 01/31/95  REMOVED INCONSISTENCIES WITH ADA 9X.WITH REPORT; USE REPORT;WITH SYSTEM; USE SYSTEM;PROCEDURE CC1225A IS     TASK_STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE;     TYPE AI IS ACCESS INTEGER;     TYPE ACCINTEGER IS ACCESS INTEGER;     TYPE REC IS RECORD          COMP : INTEGER;     END RECORD;     TYPE DISCREC (DISC : INTEGER := 1) IS RECORD          COMPD : INTEGER;     END RECORD;     TYPE AREC IS ACCESS REC;     TYPE ADISCREC IS ACCESS DISCREC;     TYPE ARR IS ARRAY(1..2,1..2) OF INTEGER;     TYPE ONEDIM IS ARRAY(1..10) OF INTEGER;     TYPE AA IS ACCESS ARR;     TYPE AONEDIM IS ACCESS ONEDIM;     TYPE ENUM IS (ONE, TWO, THREE);     TASK TYPE T IS          ENTRY HERE(VAL : IN OUT INTEGER);     END T;     TYPE ATASK IS ACCESS T;     TYPE ANOTHERTASK IS ACCESS T;     FOR ANOTHERTASK'STORAGE_SIZE USE 2 * TASK_STORAGE_SIZE;     TASK TYPE T1 IS          ENTRY HERE1(ENUM)(VAL1 : IN OUT INTEGER);     END T1;     TYPE ATASK1 IS ACCESS T1;     TASK BODY T IS     BEGIN          ACCEPT HERE(VAL : IN OUT INTEGER) DO               VAL := VAL * 2;          END HERE;     END T;     TASK BODY T1 IS     BEGIN          SELECT               ACCEPT HERE1(ONE)(VAL1 : IN OUT INTEGER) DO                    VAL1 := VAL1 * 1;               END HERE1;          OR               ACCEPT HERE1(TWO)(VAL1 : IN OUT INTEGER) DO                    VAL1 := VAL1 * 2;               END HERE1;          OR               ACCEPT HERE1(THREE)(VAL1 : IN OUT INTEGER) DO                    VAL1 := VAL1 * 3;               END HERE1;          END SELECT;     END T1;     GENERIC          TYPE FORM IS (<>);          TYPE ACCFORM IS ACCESS FORM;          TYPE ACC IS ACCESS INTEGER;          TYPE ACCREC IS ACCESS REC;          TYPE ACCDISCREC IS ACCESS DISCREC;          TYPE ACCARR IS ACCESS ARR;          TYPE ACCONE IS ACCESS ONEDIM;          TYPE ACCTASK IS ACCESS T;          TYPE ACCTASK1 IS ACCESS T1;          TYPE ANOTHERTASK1 IS ACCESS T;     PACKAGE P IS     END P;     PACKAGE BODY P IS          AF : ACCFORM;          TYPE DER_ACC IS NEW ACC;          A, B : ACC;          DERA : DER_ACC;          R : ACCREC;          DR : ACCDISCREC;          C : ACCARR;          D, E : ACCONE;          F : ACCTASK;          G : ACCTASK1;          INT : INTEGER := 5;     BEGIN          TEST ("CC1225A", "CHECK, FOR A FORMAL ACCESS TYPE, THAT " &                           "ALL ALLOWABLE OPERATIONS ARE IMPLICITLY " &                           "DECLARED");          IF AF'ADDRESS NOT IN ADDRESS THEN               FAILED ("IMPROPER RESULT FROM AF'ADDRESS TEST");          END IF;          DECLARE               AF_SIZE : INTEGER := ACCFORM'SIZE;          BEGIN               IF AF_SIZE NOT IN INTEGER THEN                    FAILED ("IMPROPER RESULT FROM AF'SIZE");               END IF;          END;          IF ANOTHERTASK1'STORAGE_SIZE < TASK_STORAGE_SIZE THEN               FAILED ("IMPROPER VALUE FOR ANOTHERTASK1'STORAGE_SIZE");          END IF;          B := NEW INTEGER'(25);          A := B;          IF A.ALL /= 25 THEN               FAILED ("IMPROPER VALUE FOR ASSIGNMENT OF VARIABLE " &                       "OF A FORMAL ACCESS TYPE FROM ANOTHER " &                       "VARIABLE OF A FORMAL ACCESS TYPE");          END IF;          A := NEW INTEGER'(10);          IF A.ALL /= 10 THEN               FAILED ("IMPROPER VALUE FOR VARIABLE OF FORMAL ACCESS " &                       "TYPE");          END IF;          IF A NOT IN ACC THEN               FAILED ("IMPROPER RESULT FROM MEMBERSHIP TEST");          END IF;          B := ACC'(A);          IF B.ALL /= 10 THEN               FAILED ("IMPROPER VALUE FROM QUALIFICATION");          END IF;          DERA := NEW INTEGER'(10);          A := ACC(DERA);          IF A.ALL /= IDENT_INT(10) THEN               FAILED ("IMPROPER VALUE FROM EXPLICIT CONVERSION");          END IF;          IF A.ALL > IDENT_INT(10) THEN               FAILED ("IMPROPER VALUE USED IN LESS THAN");          END IF;          IF A.ALL < IDENT_INT(10) THEN               FAILED ("IMPROPER VALUE USED IN GREATER THAN");          END IF;          IF A.ALL >= IDENT_INT(11) THEN               FAILED ("IMPROPER VALUE USED IN LESS THAN OR EQUAL");          END IF;          IF A.ALL <= IDENT_INT(9) THEN               FAILED ("IMPROPER VALUE USED IN GREATER THAN OR EQUAL");          END IF;          IF NOT (A.ALL + A.ALL = IDENT_INT(20)) THEN               FAILED ("IMPROPER VALUE FROM ADDITION");          END IF;          IF NOT (A.ALL - IDENT_INT(2) = IDENT_INT(8)) THEN               FAILED ("IMPROPER VALUE FROM SUBTRACTION");          END IF;          IF NOT (A.ALL * IDENT_INT(3) = IDENT_INT(30)) THEN               FAILED ("IMPROPER VALUE FROM MULTIPLICATION");          END IF;          IF NOT (A.ALL / IDENT_INT(3) = IDENT_INT(3)) THEN               FAILED ("IMPROPER VALUE FROM DIVISION");          END IF;          IF NOT (A.ALL MOD IDENT_INT(3) = IDENT_INT(1)) THEN               FAILED ("IMPROPER VALUE FROM MODULO");          END IF;          IF NOT (A.ALL REM IDENT_INT(7) = IDENT_INT(3)) THEN               FAILED ("IMPROPER VALUE FROM REMAINDER");          END IF;          IF NOT (A.ALL ** IDENT_INT(2) = IDENT_INT(100)) THEN               FAILED ("IMPROPER VALUE FROM EXPONENTIATION");          END IF;          IF NOT (+A.ALL = IDENT_INT(10)) THEN               FAILED ("IMPROPER VALUE FROM IDENTITY");          END IF;          IF NOT (-A.ALL = IDENT_INT(-10)) THEN               FAILED ("IMPROPER VALUE FROM NEGATION");          END IF;          A := NULL;          IF A /= NULL THEN               FAILED ("IMPROPER VALUE FROM ACCESS SET TO NULL");          END IF;          IF A'ADDRESS NOT IN ADDRESS THEN               FAILED ("IMPROPER RESULT FROM A'ADDRESS TEST");          END IF;          DECLARE               ACC_SIZE : INTEGER := ACC'SIZE;          BEGIN               IF ACC_SIZE NOT IN INTEGER THEN                    FAILED ("IMPROPER RESULT FROM ACC'SIZE");               END IF;          END;          R := NEW REC'(COMP => 5);          IF NOT EQUAL(R.COMP,5) THEN               FAILED ("IMPROPER VALUE FOR RECORD COMPONENT");          END IF;          DR := NEW DISCREC'(DISC => 1, COMPD => 5);          IF NOT EQUAL(DR.DISC,1) OR NOT EQUAL(DR.COMPD,5) THEN               FAILED ("IMPROPER VALUES FOR DISCRIMINATED RECORD " &                       "COMPONENTS");          END IF;          C := NEW ARR'(1 => (1,2), 2 => (3,4));          IF C(1,1) /= 1 OR C(1,2) /= 2 OR C(2,1) /= 3 OR C(2,2) /= 4               THEN FAILED ("IMPROPER ARRAY COMPONENT VALUES");          END IF;          D := NEW ONEDIM'(1,2,3,4,5,6,7,8,9,10);          E := NEW ONEDIM'(10,9,8,7,6,5,4,3,2,1);          D(1..5) := E(1..5);          IF D(1) /= 10 OR D(2) /= 9 OR D(3) /= 8               OR D(4) /= 7 OR D(5) /= 6 THEN               FAILED ("IMPROPER RESULTS FROM SLICE ASSIGNMENT");          END IF;          IF C'FIRST /= 1 OR C'FIRST(2) /= 1 THEN               FAILED ("IMPROPER LOWER BOUNDS FOR CONSTRAINED ARRAY");          END IF;          IF C'LAST /= 2 OR C'LAST(2) /= 2 THEN               FAILED ("IMPROPER UPPER BOUNDS FOR CONSTRAINED ARRAY");          END IF;          IF 1 NOT IN C'RANGE THEN               FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 1");          END IF;          IF 1 NOT IN C'RANGE(2) THEN               FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 2");          END IF;          IF C'LENGTH /= 2 THEN               FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &                       "ARRAY - 1");          END IF;          IF C'LENGTH(2) /= 2 THEN               FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &                       "ARRAY - 2");          END IF;          F := NEW T;          F.HERE(INT);          IF NOT EQUAL(INT,IDENT_INT(10)) THEN               FAILED ("IMPROPER RESULTS FROM ENTRY SELECTION");          END IF;          G := NEW T1;          G.HERE1(TWO)(INT);          IF NOT EQUAL(INT,IDENT_INT(20)) THEN               FAILED ("IMPROPER RESULTS FROM FAMILY ENTRY SELECTION");          END IF;          RESULT;     END P;     PACKAGE PACK IS NEW P(INTEGER,ACCINTEGER,AI,AREC,ADISCREC,                           AA,AONEDIM,ATASK,ATASK1,ANOTHERTASK);BEGIN     NULL;END CC1225A;

⌨️ 快捷键说明

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