c48006b.ada

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

ADA
237
字号
-- C48006B.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.--*-- CHECK THAT AN ALLOCATOR OF THE FORM "NEW T'(X)" ALLOCATES A NEW-- OBJECT EACH TIME IT IS EXECUTED AND THAT IF T IS A RECORD, ARRAY, OR-- PRIVATE TYPE (CONSTRAINED OR UNCONSTRAINED), THE ALLOCATED OBJECT HAS-- THE VALUE OF (X).-- RM  01/14/80-- RM  01/O1/82-- SPS 10/27/82-- EG  07/05/84-- JBG 11/08/85 AVOID CONFLICT WITH AI-7 OR AI-275WITH REPORT;PROCEDURE C48006B IS     USE REPORT ;BEGIN     TEST("C48006B","CHECK THAT THE FORM 'NEW T'(X)' " &                    "ALLOCATES A NEW OBJECT " &                    "AND THAT IF T IS A RECORD, ARRAY, OR PRIVATE "    &                    "TYPE, THE ALLOCATED OBJECT HAS THE VALUE (X)");     -- RECORD OR ARRAY TYPE (CONSTRAINED OR UNCONSTRAINED)     DECLARE          TYPE  TB0(  A , B : INTEGER )  IS               RECORD                    C : INTEGER := 7 ;               END RECORD;          SUBTYPE  TB  IS  TB0( 2 , 3 );          TYPE ATB  IS  ACCESS TB  ;          TYPE ATB0 IS  ACCESS TB0 ;          VB1  ,  VB2  : ATB  ;          VB01 , VB02  : ATB0 ;          TYPE  ARR0  IS  ARRAY( INTEGER RANGE <> ) OF INTEGER ;          SUBTYPE  ARR  IS ARR0( 1..4 );          TYPE  A_ARR   IS  ACCESS ARR  ;          TYPE  A_ARR0  IS  ACCESS ARR0 ;          VARR1  , VARR2  : A_ARR  ;          VARR01 , VARR02 : A_ARR0 ;     BEGIN          VB1  :=  NEW TB'( 2 , 3 , 5 );          IF ( VB1.A /=IDENT_INT( 2)  OR               VB1.B /=IDENT_INT( 3)  OR               VB1.C /=IDENT_INT( 5) )          THEN FAILED( "WRONG VALUES  -  B1 1" );          END IF;          VB2  :=  NEW TB'( IDENT_INT(2), IDENT_INT(3), IDENT_INT(6));          IF ( VB2.A /= 2  OR               VB2.B /= 3  OR               VB2.C /= 6  OR               VB1.A /= 2  OR               VB1.B /= 3  OR               VB1.C /= 5 )          THEN FAILED( "WRONG VALUES  -  B1 2" );          END IF;          VB01  :=  NEW TB0'( 1 , 2 , 3 );          IF ( VB01.A /=IDENT_INT( 1)  OR               VB01.B /=IDENT_INT( 2)  OR               VB01.C /=IDENT_INT( 3) )          THEN FAILED( "WRONG VALUES  -  B2 1" );          END IF;          VB02  :=  NEW TB0'( IDENT_INT(4) , IDENT_INT(5) ,                                                      IDENT_INT(6) );          IF ( VB02.A /=IDENT_INT( 4)  OR               VB02.B /=IDENT_INT( 5)  OR               VB02.C /=IDENT_INT( 6)  OR               VB01.A /=IDENT_INT( 1)  OR               VB01.B /=IDENT_INT( 2)  OR               VB01.C /=IDENT_INT( 3) )          THEN FAILED( "WRONG VALUES  -  B2 2" );          END IF;          VARR1 := NEW ARR'( 5 , 6 , 7 , 8 );          IF  ( VARR1(1) /=IDENT_INT( 5)  OR                VARR1(2) /=IDENT_INT( 6)  OR                VARR1(3) /=IDENT_INT( 7)  OR                VARR1(4) /=IDENT_INT( 8) )          THEN FAILED( "WRONG VALUES  -  B3 1" );          END IF ;          VARR2 := NEW ARR'( IDENT_INT(1) , IDENT_INT(2) , IDENT_INT(3),                                                         IDENT_INT(4) );          IF  ( VARR2(1) /= 1  OR                VARR2(2) /= 2  OR                VARR2(3) /= 3  OR                VARR2(4) /= 4  OR                VARR1(1) /= 5  OR                VARR1(2) /= 6  OR                VARR1(3) /= 7  OR                VARR1(4) /= 8 )          THEN FAILED( "WRONG VALUES  -  B3 2" );          END IF ;          VARR01 := NEW ARR0'( 11 , 12 , 13 );          IF  ( VARR01(INTEGER'FIRST) /= IDENT_INT(11)  OR                VARR01(INTEGER'FIRST + 1) /= IDENT_INT(12)  OR                VARR01(INTEGER'FIRST + 2) /= IDENT_INT(13) )          THEN FAILED( "WRONG VALUES -  B4 1" );          END IF ;          IF  ( VARR01.ALL'FIRST /= IDENT_INT( INTEGER'FIRST )  OR                VARR01.ALL'LAST  /= IDENT_INT( INTEGER'FIRST + 2 ) )          THEN FAILED( "WRONG VALUES -  B4 2" );          END IF ;          VARR02 := NEW ARR0'( 1 => IDENT_INT(14) , 2 => IDENT_INT(15));          IF  ( VARR02(1) /= 14  OR                VARR02(2) /= 15  OR                VARR01(INTEGER'FIRST) /= 11  OR                VARR01(INTEGER'FIRST + 1) /= 12  OR                VARR01(INTEGER'FIRST + 2) /= 13 )          THEN FAILED( "WRONG VALUES -  B4 3" );          END IF ;     END ;     -- PRIVATE TYPE (CONSTRAINED OR UNCONSTRAINED)     DECLARE          PACKAGE P IS               TYPE UP(A, B : INTEGER) IS PRIVATE;--             SUBTYPE CP IS UP(1, 2);--             TYPE A_CP IS ACCESS CP;               TYPE A_UP IS ACCESS UP;               CONS1_UP : CONSTANT UP;               CONS2_UP : CONSTANT UP;               CONS3_UP : CONSTANT UP;               CONS4_UP : CONSTANT UP;--             PROCEDURE CHECK1 (X : A_CP);--             PROCEDURE CHECK2 (X, Y : A_CP);               PROCEDURE CHECK3 (X : A_UP);               PROCEDURE CHECK4 (X, Y : A_UP);          PRIVATE               TYPE UP(A, B : INTEGER) IS                    RECORD                         C : INTEGER;                    END RECORD;               CONS1_UP : CONSTANT UP := (1, 2, 3);               CONS2_UP : CONSTANT UP := (IDENT_INT(1), IDENT_INT(2),                                          IDENT_INT(4));               CONS3_UP : CONSTANT UP := (7, 8, 9);               CONS4_UP : CONSTANT UP := (IDENT_INT(10), IDENT_INT(11),                                          IDENT_INT(12));          END P;          USE P;--        V_A_CP1, V_A_CP2 : A_CP;          V_A_UP1, V_A_UP2 : A_UP;          PACKAGE BODY P IS--             PROCEDURE CHECK1 (X : A_CP) IS--             BEGIN--                  IF (X.A /= IDENT_INT(1) OR--                      X.B /= IDENT_INT(2) OR--                      X.C /= IDENT_INT(3)) THEN--                       FAILED ("WRONG VALUES - CP1");--                  END IF;--             END CHECK1;--             PROCEDURE CHECK2 (X, Y : A_CP) IS--             BEGIN--                  IF (X.A /= 1 OR X.B /= 2 OR X.C /= 3 OR--                      Y.A /= 1 OR Y.B /= 2 OR Y.C /= 4) THEN--                       FAILED ("WRONG VALUES - CP2");--                  END IF;--             END CHECK2;               PROCEDURE CHECK3 (X : A_UP) IS               BEGIN                    IF (X.A /= IDENT_INT(7) OR                        X.B /= IDENT_INT(8) OR                        X.C /= IDENT_INT(9)) THEN                         FAILED ("WRONG VALUES - UP1");                    END IF;               END CHECK3;               PROCEDURE CHECK4 (X, Y : A_UP) IS               BEGIN                    IF (X.A /=  7 OR X.B /=  8 OR X.C /=  9 OR                        Y.A /= 10 OR Y.B /= 11 OR Y.C /= 12) THEN                         FAILED ("WRONG VALUES - UP2");                    END IF;               END CHECK4;          END P;     BEGIN--        V_A_CP1 := NEW CP'(CONS1_UP);--        CHECK1(V_A_CP1);--        V_A_CP2 := NEW CP'(CONS2_UP);--        CHECK2(V_A_CP1, V_A_CP2);          V_A_UP1 := NEW P.UP'(CONS3_UP);          CHECK3(V_A_UP1);          V_A_UP2 := NEW P.UP'(CONS4_UP);          CHECK4(V_A_UP1, V_A_UP2);     END;     RESULT;END C48006B;

⌨️ 快捷键说明

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