| -- CD40001.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 Enumeration_Representation_Clauses are supported for |
| -- codes in the range System.Min_Int..System.Max_Int. |
| -- |
| -- TEST DESCRIPTION: |
| -- This test defines several types, and checks that the range of the |
| -- enumeration clause is as expected. |
| -- |
| -- APPLICABILITY CRITERIA: |
| -- All implementations must attempt to compile this test. |
| -- |
| -- For implementations validating against Systems Programming Annex (C): |
| -- this test must execute and report PASSED. |
| -- |
| -- For implementations not validating against Annex C: |
| -- this test may report compile time errors at one or more points |
| -- indicated by "-- ANX-C RQMT", in which case it may be graded as inapplicable. |
| -- Otherwise, the test must execute and report PASSED. |
| -- |
| -- |
| -- CHANGE HISTORY: |
| -- 22 JUL 95 SAIC Initial version |
| -- 07 MAY 96 SAIC Revised for 2.1 |
| -- 16 FEB 98 EDS Modified Documentation. |
| --! |
| |
| with System; |
| with Ada.Unchecked_Conversion; |
| package CD40001_0 is |
| |
| type Press_The_Bounds is ( Negative_Large, Positive_Large ); |
| |
| for Press_The_Bounds use |
| ( Negative_Large => System.Min_Int, -- ANX-C RQMT. |
| Positive_Large => System.Max_Int ); -- ANX-C RQMT. |
| |
| type Add_The_Bounds is |
| ( Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); |
| |
| for Add_The_Bounds use |
| ( Monday => System.Min_Int, -- ANX-C RQMT. |
| Tuesday => System.Min_Int + 1, -- ANX-C RQMT. |
| Wednesday => System.Min_Int + 2, -- ANX-C RQMT. |
| Thursday => System.Min_Int + 3, -- ANX-C RQMT. |
| Friday => System.Min_Int + 4, -- ANX-C RQMT. |
| Saturday => System.Min_Int + 5 ); -- ANX-C RQMT. |
| |
| type Minus_The_Bounds is ( Jan, Feb, Mar, Apr); |
| |
| for Minus_The_Bounds use |
| ( Apr => System.Max_Int, -- ANX-C RQMT. |
| Mar => System.Max_Int - 1, -- ANX-C RQMT. |
| Feb => System.Max_Int - 2, -- ANX-C RQMT. |
| Jan => System.Max_Int - 3 ); -- ANX-C RQMT. |
| |
| type TC_Integer is range System.Min_Int..System.Max_Int; |
| |
| procedure TC_Check_Press; |
| |
| procedure TC_Check_Add; |
| |
| procedure TC_Check_Minus; |
| |
| function TC_Compare_Press is new Ada.Unchecked_Conversion |
| (Press_The_Bounds, TC_Integer); |
| |
| function TC_Compare_Add is new Ada.Unchecked_Conversion |
| (Add_The_Bounds, TC_Integer); |
| |
| function TC_Compare_Minus is new Ada.Unchecked_Conversion |
| (Minus_The_Bounds, TC_Integer); |
| |
| end CD40001_0; |
| |
| --==================================================================-- |
| |
| with Report; |
| package body CD40001_0 is |
| |
| procedure TC_Check_Press is |
| My_Press_First : Press_The_Bounds := Negative_Large; |
| My_Press_Last : Press_The_Bounds := Positive_Large; |
| begin |
| if TC_Compare_Press (My_Press_First) /= System.Min_Int or |
| TC_Compare_Press (My_Press_Last) /= System.Max_Int |
| then |
| Report.Failed |
| ("Expected enumeration size of System.Min_Int and System.Max_Int " & |
| "not available for this implementation"); |
| end if; |
| end TC_Check_Press; |
| |
| --------------------------------------------------------------------------- |
| procedure TC_Check_Add is |
| My_Monday : Add_The_Bounds := Monday; |
| My_Tuesday : Add_The_Bounds := Tuesday; |
| My_Wednesday : Add_The_Bounds := Wednesday; |
| My_Thursday : Add_The_Bounds := Thursday; |
| My_Friday : Add_The_Bounds := Friday; |
| My_Saturday : Add_The_Bounds := Saturday; |
| begin |
| if TC_Compare_Add (My_Monday) /= (System.Min_Int) or |
| TC_Compare_Add (My_Thursday) /= (System.Min_Int + 3) or |
| TC_Compare_Add (My_Wednesday) /= (System.Min_Int + 2) or |
| TC_Compare_Add (My_Tuesday) /= (System.Min_Int + 1) or |
| TC_Compare_Add (My_Saturday) /= (System.Min_Int + 5) or |
| TC_Compare_Add (My_Friday) /= (System.Min_Int + 4) |
| then |
| Report.Failed |
| ("Expected enumeration size of System.Min_Int, System.Min_Int + 1 " & |
| "through System.Min_Int + 5 not available for this implementation"); |
| end if; |
| end TC_Check_Add; |
| |
| --------------------------------------------------------------------------- |
| procedure TC_Check_Minus is |
| My_Jan : Minus_The_Bounds := Jan; |
| My_Feb : Minus_The_Bounds := Feb; |
| My_Mar : Minus_The_Bounds := Mar; |
| My_Apr : Minus_The_Bounds := Apr; |
| begin |
| if TC_Compare_Minus (My_Jan) /= (System.Max_Int - 3) or |
| TC_Compare_Minus (My_Feb) /= (System.Max_Int - 2) or |
| TC_Compare_Minus (My_Mar) /= (System.Max_Int - 1) or |
| TC_Compare_Minus (My_Apr) /= (System.Max_Int) |
| then |
| Report.Failed |
| ("Expected enumeration size of System.Max_Int, System.Max_Int - 1 " & |
| "through System.Max_Int - 3 not available for this implementation"); |
| end if; |
| end TC_Check_Minus; |
| |
| end CD40001_0; |
| |
| --==================================================================-- |
| |
| with Report; |
| with CD40001_0; |
| |
| procedure CD40001 is |
| |
| begin -- Main test procedure. |
| |
| Report.Test ("CD40001", "Check that Enumeration_Representation_Clauses " & |
| "are supported for codes in the range " & |
| "System.Min_Int..System.Max_Int" ); |
| |
| CD40001_0.TC_Check_Press; |
| |
| CD40001_0.TC_Check_Add; |
| |
| CD40001_0.TC_Check_Minus; |
| |
| Report.Result; |
| |
| end CD40001; |