URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c3/] [c392013.a] - Rev 720
Compare with Previous | Blame | View Log
-- C392013.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 "/=" implicitly declared with the declaration of "=" for-- a tagged type is legal and can be used in a dispatching call.-- (Defect Report 8652/0010, as reflected in Technical Corrigendum 1).---- CHANGE HISTORY:-- 23 JAN 2001 PHL Initial version.-- 16 MAR 2001 RLB Readied for release; added identity and negative-- result cases.-- 24 MAY 2001 RLB Corrected the result for the 9 vs. 9 case.--!with Report;use Report;procedure C392013 ispackage P1 istype T is taggedrecordC1 : Integer;end record;function "=" (L, R : T) return Boolean;end P1;package P2 istype T is new P1.T with private;function Make (Ancestor : P1.T; X : Float) return T;privatetype T is new P1.T withrecordC2 : Float;end record;function "=" (L, R : T) return Boolean;end P2;package P3 istype T is new P2.T withrecordC3 : Character;end record;privatefunction "=" (L, R : T) return Boolean;function Make (Ancestor : P1.T; X : Float) return T;end P3;package body P1 is separate;package body P2 is separate;package body P3 is separate;type Cwat is access P1.T'Class;type Cwat_Array is array (Positive range <>) of Cwat;A : constant Cwat_Array :=(1 => new P1.T'(C1 => Ident_Int (3)),2 => new P2.T'(P2.Make (Ancestor => (C1 => Ident_Int (5)), X => 4.0)),3 => new P2.T'(P2.Make (Ancestor => (C1 => Ident_Int (-5)), X => 4.2)),4 => new P1.T'(C1 => Ident_Int (-3)),5 => new P2.T'(P2.Make (Ancestor => (C1 => Ident_Int (5)), X => 3.6)),6 => new P1.T'(C1 => Ident_Int (4)),7 => new P3.T'(P2.Make(Ancestor => (C1 => Ident_Int (4)), X => 1.2) withIdent_Char ('a')),8 => new P3.T'(P2.Make(Ancestor => (C1 => Ident_Int (-4)), X => 1.3) withIdent_Char ('A')),9 => new P3.T'(P2.Make(Ancestor => (C1 => Ident_Int (4)), X => 1.0) withIdent_Char ('B')));type Truth is ('F', 'T');type Truth_Table is array (Positive range <>, Positive range <>) of Truth;Equality : constant Truth_Table (A'Range, A'Range) := ("TFFTFFFFF","FTTFTFFFF","FTTFFFFFF","TFFTFFFFF","FTFFTFFFF","FFFFFTFFF","FFFFFFTTF","FFFFFFTTF","FFFFFFFFT");beginTest ("C392013", "Check that the ""/="" implicitly declared " &"with the declaration of ""="" for a tagged " &"type is legal and can be used in a dispatching call");for I in A'Range loopfor J in A'Range loop-- Test identity:if P1."=" (A (I).all, A (J).all) /=(not P1."/=" (A (I).all, A (J).all)) thenFailed ("Incorrect identity comparing objects" &Positive'Image (I) & " and" & Positive'Image (J));end if;-- Test the result of "/=":if Equality (I, J) = 'T' thenif P1."/=" (A (I).all, A (J).all) thenFailed ("Incorrect result comparing objects" &Positive'Image (I) & " and" & Positive'Image (J) & " - T");end if;elseif not P1."/=" (A (I).all, A (J).all) thenFailed ("Incorrect result comparing objects" &Positive'Image (I) & " and" & Positive'Image (J) & " - F");end if;end if;end loop;end loop;Result;end C392013;separate (C392013)package body P1 isfunction "=" (L, R : T) return Boolean isbeginreturn abs L.C1 = abs R.C1;end "=";end P1;separate (C392013)package body P2 isfunction "=" (L, R : T) return Boolean isbeginreturn P1."=" (P1.T (L), P1.T (R)) and then abs (L.C2 - R.C2) <= 0.5;end "=";function Make (Ancestor : P1.T; X : Float) return T isbeginreturn (Ancestor with X);end Make;end P2;with Ada.Characters.Handling;separate (C392013)package body P3 isfunction "=" (L, R : T) return Boolean isbeginreturn P2."=" (P2.T (L), P2.T (R)) and thenAda.Characters.Handling.To_Upper (L.C3) =Ada.Characters.Handling.To_Upper (R.C3);end "=";function Make (Ancestor : P1.T; X : Float) return T isbeginreturn (P2.Make (Ancestor, X) with ' ');end Make;end P3;
