URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c3/] [c354003.a] - Rev 720
Compare with Previous | Blame | View Log
-- C354003.A---- 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 the Wide_String attributes of modular types yield-- correct values/results. The attributes checked are:---- Wide_Image-- Wide_Value---- TEST DESCRIPTION:-- This test is split from C354002. It tests only the attributes:---- Wide_Image, Wide_Value---- This test defines several modular types. One type defined at-- each of System.Max_Binary_Modulus, System.Max_Nonbinary_Modulus,-- a power of two half that of System.Max_Binary_Modulus, one less-- than that power of two; one more than that power of two, two-- less than a (large) power of two. For each of these types,-- determine the correct operation of the Wide_String attributes.------ CHANGE HISTORY:-- 13 DEC 94 SAIC Initial version-- 06 JAN 94 SAIC Promoted to future release-- 19 APR 95 SAIC Revised in accord with reviewer comments-- 01 DEC 95 SAIC Corrected for 2.0.1-- 27 JAN 96 SAIC Eliminated potential 32/64 bit conflict for 2.1-- 24 FEB 97 PWB.CTA Corrected out-of-range value--!with Report;with System;with TCTouch;with Ada.Characters.Handling;procedure C354003 isfunction ID(Local_Value: Integer) return Integer renames Report.Ident_Int;function ID(Local_Value: String) return String renames Report.Ident_Str;function ID(Local_Value: String) return Wide_String isbeginreturn Ada.Characters.Handling.To_Wide_String( ID( Local_Value ) );end ID;Half_Max_Binary_Value : constant := System.Max_Binary_Modulus / 2;type Max_Binary is mod System.Max_Binary_Modulus;type Max_NonBinary is mod System.Max_Nonbinary_Modulus;type Half_Max_Binary is mod Half_Max_Binary_Value;type Medium is mod 2048;type Medium_Plus is mod 2042;type Medium_Minus is mod 2111;type Small is mod 2;type Finger is mod 5;type Finger_Id is (Thumb, Index, Middle, Ring, Pinkie);subtype Midrange is Medium_Minus range 222 .. 1111;AMB, BMB : Max_Binary;AHMB, BHMB : Half_Max_Binary;AM, BM : Medium;AMP, BMP : Medium_Plus;AMM, BMM : Medium_Minus;AS, BS : Small;AF, BF : Finger;procedure Wide_Value_Fault( S: Wide_String ) is-- check 'Wide_Value for failure modesbegin-- the evaluation of the 'Wide_Value expression should raise C_ETCTouch.Assert_Not( Midrange'Wide_Value(S) = 0, "Wide_Value_Fault" );if Midrange'Wide_Value(S) not in Midrange'Base thenReport.Failed("'Wide_Value raised no exception");end if;exceptionwhen Constraint_Error => null; -- expected casewhen others =>Report.Failed("'Wide_Value raised wrong exception");end Wide_Value_Fault;The_Cap, The_Toe : Natural;procedure Check_Non_Static_Cases( Lower_Bound,Upper_Bound : Medium ) issubtype Non_Static is Medium range Lower_Bound..Upper_Bound;begin-- First, Last, Range, Min, Max, Succ, Pred, Pos, and ValTCTouch.Assert( Non_Static'First = Medium(The_Toe), "Non_Static'First" );TCTouch.Assert( Non_Static'Last = Non_Static(The_Cap),"Non_Static'Last" );TCTouch.Assert( Non_Static(The_Cap/2) in Non_Static'Range,"Non_Static'Range" );TCTouch.Assert( Non_Static'Min(Medium(Report.Ident_Int(100)),Medium(Report.Ident_Int(200))) = 100,"Non_Static'Min" );TCTouch.Assert( Non_Static'Max(Medium(Report.Ident_Int(100)),Medium(Report.Ident_Int(200))) = 200,"Non_Static'Max" );TCTouch.Assert( Non_Static'Succ(Non_Static(The_Cap))= Medium'Succ(Upper_Bound),"Non_Static'Succ" );TCTouch.Assert( Non_Static'Pred(Medium(Report.Ident_Int(The_Cap)))= Non_Static(Report.Ident_Int(The_Cap-1)),"Non_Static'Pred" );TCTouch.Assert( Non_Static'Pos(Upper_Bound) = Non_Static(The_Cap),"Non_Static'Pos" );TCTouch.Assert( Non_Static'Val(Non_Static(The_Cap)) = Upper_Bound,"Non_Static'Val" );end Check_Non_Static_Cases;begin -- Main test procedure.Report.Test ("C354003", "Check Wide_String attributes of modular types" );Wide_Strings_Needed: declareMax_Bin_Mod_Div_3 : constant := Max_Binary'Modulus/3;Max_Non_Mod_Div_4 : constant := Max_NonBinary'Modulus/4;begin-- Wide_ImageTCTouch.Assert( Half_Max_Binary'Wide_Image(255) = " 255","Half_Max_Binary'Wide_Image" );TCTouch.Assert( Medium'Wide_Image(0) = " 0", "Medium'Wide_Image" );TCTouch.Assert( Medium_Plus'Wide_Image(Medium_Plus'Last) = " 2041","Medium_Plus'Wide_Image" );TCTouch.Assert( Medium_Minus'Wide_Image(Medium_Minus(ID(1024))) = " 1024","Medium_Minus'Wide_Image" );TCTouch.Assert( Small'Wide_Image(1) = " 1", "Small'Wide_Image" );TCTouch.Assert( Midrange'Wide_Image(Midrange(ID(333))) = " 333","Midrange'Wide_Image" );-- Wide_ValueTCTouch.Assert( Half_Max_Binary'Wide_Value("255") = 255,"Half_Max_Binary'Wide_Value" );TCTouch.Assert( Medium'Wide_Value(" 0 ") = 0, "Medium'Wide_Value" );TCTouch.Assert( Medium_Plus'Wide_Value(ID("2041")) = Medium_Plus'Last,"Medium_Plus'Wide_Value" );TCTouch.Assert( Medium_Minus'Wide_Value("+1_4 ") = 14,"Medium_Minus'Wide_Value" );TCTouch.Assert( Small'Wide_Value("+1") = 1, "Small'Wide_Value" );TCTouch.Assert( Midrange'Wide_Value(ID("333")) = 333,"Midrange'Wide_Value" );TCTouch.Assert( Midrange'Wide_Value(ID("1E3")) = 1000,"Midrange'Wide_Value(""1E3"")" );Wide_Value_Fault( "bad input" );Wide_Value_Fault( "-333" );Wide_Value_Fault( "9999" );Wide_Value_Fault( ".1" );Wide_Value_Fault( "1e-1" );end Wide_Strings_Needed;The_Toe := Report.Ident_Int(25);The_Cap := Report.Ident_Int(256);Check_Non_Static_Cases( Medium(Report.Ident_Int(The_Toe)),Medium(Report.Ident_Int(The_Cap)) );The_Toe := Report.Ident_Int(40);The_Cap := Report.Ident_Int(2047);Check_Non_Static_Cases( Medium(Report.Ident_Int(The_Toe)),Medium(Report.Ident_Int(The_Cap)) );Report.Result;end C354003;
