-- 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;