| -- CD30004.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 unspecified Size of static discrete |
| -- subtypes is the number of bits needed to represent each value |
| -- belonging to the subtype using an unbiased representation, where |
| -- space for a sign bit is provided only in the event the subtype |
| -- contains negative values. Check that for first subtypes specified |
| -- Sizes are supported reflecting this representation. [ARM 95 13.3(55)]. |
| -- |
| -- TEST DESCRIPTION: |
| -- This test defines a few types that should have distinctly recognizable |
| -- sizes. A packed record which should result in very specific bits |
| -- sizes for it's components is used to check the first part of the |
| -- objective. The second part of the objective is checked by giving |
| -- sizes for a similar set of types. |
| -- |
| -- 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 |
| -- 06 MAY 96 SAIC Revised for 2.1 |
| -- 26 FEB 97 PWB.CTA Added pragma Pack for type Check_Record |
| -- 16 FEB 98 EDS Modified Documentation. |
| -- 06 JUL 99 RLB Repaired comments, removed junk test cases. |
| -- Added test cases to test that appropriate Size |
| -- clauses are allowed. |
| |
| --! |
| ----------------------------------------------------------------- CD30004_0 |
| |
| package CD30004_0 is |
| |
| -- Check that the unspecified Size of static discrete and fixed point |
| -- subtypes are the number of bits needed to represent each value |
| -- belonging to the subtype using an unbiased representation, where |
| -- space for a sign bit is provided only in the event the subtype |
| -- contains negative values. Check that for first subtypes specified |
| -- Sizes are supported reflecting this representation. |
| |
| type Bits_2 is ( Zeroth_Bit, Fiercest_Bit, Secants_Bit, Threadless_Bit ); |
| |
| type Bits_3 is range 0..2**3-1; |
| |
| type Bits_5 is range -2**4+1..2**4-1; -- allow for 1's comp |
| |
| type Bits_14 is mod 2**14; |
| |
| type Check_Record is |
| record |
| B14 : Bits_14; |
| B2 : Bits_2; |
| B3 : Bits_3; |
| B5 : Bits_5; |
| C : Character; |
| end record; |
| pragma Pack ( Check_Record ); |
| |
| procedure TC_Check_Values; |
| procedure TC_Check_Specified_Sizes; |
| |
| end CD30004_0; |
| |
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| with Report; |
| with Impdef; |
| package body CD30004_0 is |
| |
| procedure TC_Check_Values is |
| begin |
| |
| if Bits_2'Size /= 2 then |
| if Impdef.Validating_Annex_C then |
| Report.Failed("Bits_2'Size not 2 bits"); |
| else -- Recommended levels of support are not binding. |
| Report.Comment("Bits_2'Size not 2 bits"); |
| end if; |
| end if; |
| |
| if Bits_14'Size /= 14 then |
| if Impdef.Validating_Annex_C then |
| Report.Failed("Bits_14'Size not 14 bits"); |
| else |
| Report.Comment("Bits_14'Size not 14 bits"); |
| end if; |
| end if; |
| |
| if Bits_3'Size /= 3 then |
| if Impdef.Validating_Annex_C then |
| Report.Failed("Bits_3'Size not 3 bits"); |
| else |
| Report.Comment("Bits_3'Size not 3 bits"); |
| end if; |
| end if; |
| |
| if Bits_5'Size /= 5 then |
| if Impdef.Validating_Annex_C then |
| Report.Failed("Bits_5'Size not 5 bits"); |
| else |
| Report.Comment("Bits_5'Size not 5 bits"); |
| end if; |
| end if; |
| |
| if Character'Size /= 8 then |
| Report.Failed("Character'Size not 8 bits"); |
| end if; |
| |
| if Wide_Character'Size /= 16 then |
| Report.Failed("Wide_Character'Size not 16 bits"); |
| end if; |
| |
| end TC_Check_Values; |
| |
| type Spec_Bits_2 is ( Zeroth_Bit, Fiercest_Bit, Secants_Bit, Threadless_Bit ); |
| for Spec_Bits_2'Size use 2; -- ANX-C RQMT. |
| |
| type Spec_Bits_3 is range 0..2**3-1; |
| for Spec_Bits_3'Size use 3; -- ANX-C RQMT. |
| |
| type Spec_Bits_5 is range -2**4+1..2**4-1; -- allow for 1's comp |
| for Spec_Bits_5'Size use 5; -- ANX-C RQMT. |
| |
| type Spec_Bits_14 is mod 2**14; |
| for Spec_Bits_14'Size use 14; -- ANX-C RQMT. |
| |
| type Spec_Record is new Check_Record; |
| for Spec_Record'Size use 64; -- ANX-C RQMT. |
| |
| procedure TC_Check_Specified_Sizes is |
| |
| begin |
| |
| if Spec_Record'Size /= 64 then |
| Report.Failed("Spec_Record'Size not 64 bits"); |
| end if; |
| |
| if Spec_Bits_2'Size /= 2 then |
| Report.Failed("Spec_Bits_2'Size not 2 bits"); |
| end if; |
| |
| if Spec_Bits_14'Size /= 14 then |
| Report.Failed("Spec_Bits_14'Size not 14 bits"); |
| end if; |
| |
| if Spec_Bits_3'Size /= 3 then |
| Report.Failed("Spec_Bits_3'Size not 3 bits"); |
| end if; |
| |
| if Spec_Bits_5'Size /= 5 then |
| Report.Failed("Spec_Bits_5'Size not 5 bits"); |
| end if; |
| |
| end TC_Check_Specified_Sizes; |
| |
| end CD30004_0; |
| |
| ------------------------------------------------------------------- CD30004 |
| |
| with Report; |
| with CD30004_0; |
| |
| procedure CD30004 is |
| |
| begin -- Main test procedure. |
| |
| Report.Test ("CD30004", "Check that the unspecified Size of static " & |
| "discrete and fixed point subtypes is the number of bits " & |
| "needed to represent each value belonging to the subtype " & |
| "using an unbiased representation, where space for a sign " & |
| "bit is provided only in the event the subtype contains " & |
| "negative values. Check that for first subtypes " & |
| "specified Sizes are supported reflecting this " & |
| "representation."); |
| |
| CD30004_0.TC_Check_Values; |
| |
| CD30004_0.TC_Check_Specified_Sizes; |
| |
| Report.Result; |
| |
| end CD30004; |