| -- CXB4003.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 function Valid, with the Display_Format parameter |
| -- set to Unsigned, will return True if Numeric parameter Item |
| -- comprises one or more decimal digit characters; check that it |
| -- returns False if the parameter Item is otherwise comprised. |
| -- |
| -- Check that function Valid, with Display_Format parameter set to |
| -- Leading_Separate, will return True if Numeric parameter Item |
| -- comprises a single occurrence of a Plus_Sign or Minus_Sign |
| -- character, and then by one or more decimal digit characters; |
| -- check that it returns False if the parameter Item is otherwise |
| -- comprised. |
| -- |
| -- Check that function Valid, with Display_Format parameter set to |
| -- Trailing_Separate, will return True if Numeric parameter Item |
| -- comprises one or more decimal digit characters, and then by a |
| -- single occurrence of the Plus_Sign or Minus_Sign character; |
| -- check that it returns False if the parameter Item is otherwise |
| -- comprised. |
| -- |
| -- TEST DESCRIPTION: |
| -- This test checks that a version of function Valid, from an instance |
| -- of the generic package Decimal_Conversions, will produce correct |
| -- results based on the particular Numeric and Display_Format |
| -- parameters provided. Arrays of both valid and invalid Numeric |
| -- data items have been created to correspond to a particular |
| -- value of Display_Format. The result of the function is compared |
| -- against the expected result for each appropriate combination of |
| -- Numeric and Display_Format parameter. |
| -- This test assumes that the following characters are all included |
| -- in the implementation defined type Interfaces.COBOL.COBOL_Character: |
| -- ' ', 'A'..'Z', '+', '-', '.', '$'. |
| -- |
| -- APPLICABILITY CRITERIA: |
| -- This test is applicable to all implementations that provide |
| -- package Interfaces.COBOL. If an implementation provides |
| -- package Interfaces.COBOL, this test must compile, execute, and |
| -- report "PASSED". |
| -- |
| -- |
| -- |
| -- CHANGE HISTORY: |
| -- 18 Jan 96 SAIC Initial version for 2.1. |
| -- 30 May 96 SAIC Incorporated reviewer comments for ACVC 2.1. |
| -- 27 Oct 96 SAIC Incorporated reviewer comments. |
| -- |
| --! |
| |
| with Report; |
| with Ada.Exceptions; |
| with Interfaces.COBOL; -- N/A => ERROR |
| |
| procedure CXB4003 is |
| begin |
| |
| Report.Test ("CXB4003", "Check that function Valid, with various " & |
| "Display_Format parameters, produces correct " & |
| "results"); |
| |
| Test_Block: |
| declare |
| |
| use Interfaces; |
| use Ada.Exceptions; |
| |
| type A_Numeric_Type is delta 0.01 digits 16; |
| type Numeric_Access is access COBOL.Numeric; |
| type Numeric_Items_Type is array(Integer range <>) of Numeric_Access; |
| |
| package Display_Format is |
| new COBOL.Decimal_Conversions(Num => A_Numeric_Type); |
| |
| |
| Number_Of_Valid_Unsigned_Items : constant := 5; |
| Number_Of_Invalid_Unsigned_Items : constant := 21; |
| Number_Of_Valid_Leading_Separate_Items : constant := 5; |
| Number_Of_Invalid_Leading_Separate_Items : constant := 23; |
| Number_Of_Valid_Trailing_Separate_Items : constant := 5; |
| Number_Of_Invalid_Trailing_Separate_Items : constant := 22; |
| |
| Valid_Unsigned_Items : |
| Numeric_Items_Type(1..Number_Of_Valid_Unsigned_Items) := |
| (new COBOL.Numeric'("0"), |
| new COBOL.Numeric'("1"), |
| new COBOL.Numeric'("0000000001"), |
| new COBOL.Numeric'("1234567890123456"), |
| new COBOL.Numeric'("0000")); |
| |
| Invalid_Unsigned_Items : |
| Numeric_Items_Type(1..Number_Of_Invalid_Unsigned_Items) := |
| (new COBOL.Numeric'(" 12345"), |
| new COBOL.Numeric'(" 12345"), |
| new COBOL.Numeric'("1234567890 "), |
| new COBOL.Numeric'("1234567890 "), |
| new COBOL.Numeric'("1.01"), |
| new COBOL.Numeric'(".0000000001"), |
| new COBOL.Numeric'("12345 6"), |
| new COBOL.Numeric'("MCXVIII"), |
| new COBOL.Numeric'("15F"), |
| new COBOL.Numeric'("+12345"), |
| new COBOL.Numeric'("$12.30"), |
| new COBOL.Numeric'("1234-"), |
| new COBOL.Numeric'("12--"), |
| new COBOL.Numeric'("+12-"), |
| new COBOL.Numeric'("++99--"), |
| new COBOL.Numeric'("-1.01"), |
| new COBOL.Numeric'("(1.01)"), |
| new COBOL.Numeric'("123,456"), |
| new COBOL.Numeric'("101."), |
| new COBOL.Numeric'(""), |
| new COBOL.Numeric'("1.0000")); |
| |
| Valid_Leading_Separate_Items : |
| Numeric_Items_Type(1..Number_Of_Valid_Leading_Separate_Items) := |
| (new COBOL.Numeric'("+1000"), |
| new COBOL.Numeric'("-1"), |
| new COBOL.Numeric'("-0000000001"), |
| new COBOL.Numeric'("+1234567890123456"), |
| new COBOL.Numeric'("-0000")); |
| |
| Invalid_Leading_Separate_Items : |
| Numeric_Items_Type(1..Number_Of_Invalid_Leading_Separate_Items) := |
| (new COBOL.Numeric'("123456"), |
| new COBOL.Numeric'(" +12345"), |
| new COBOL.Numeric'(" +12345"), |
| new COBOL.Numeric'("- 0000000001"), |
| new COBOL.Numeric'("1234567890- "), |
| new COBOL.Numeric'("1234567890+ "), |
| new COBOL.Numeric'("123-456"), |
| new COBOL.Numeric'("+15F"), |
| new COBOL.Numeric'("++123"), |
| new COBOL.Numeric'("12--"), |
| new COBOL.Numeric'("+12-"), |
| new COBOL.Numeric'("+/-12"), |
| new COBOL.Numeric'("++99--"), |
| new COBOL.Numeric'("1.01"), |
| new COBOL.Numeric'("(1.01)"), |
| new COBOL.Numeric'("+123,456"), |
| new COBOL.Numeric'("+15FF"), |
| new COBOL.Numeric'("- 123"), |
| new COBOL.Numeric'("+$123"), |
| new COBOL.Numeric'(""), |
| new COBOL.Numeric'("-"), |
| new COBOL.Numeric'("-1.01"), |
| new COBOL.Numeric'("1.0000+")); |
| |
| Valid_Trailing_Separate_Items : |
| Numeric_Items_Type(1..Number_Of_Valid_Trailing_Separate_Items) := |
| (new COBOL.Numeric'("1001-"), |
| new COBOL.Numeric'("1+"), |
| new COBOL.Numeric'("0000000001+"), |
| new COBOL.Numeric'("1234567890123456-"), |
| new COBOL.Numeric'("0000-")); |
| |
| Invalid_Trailing_Separate_Items : |
| Numeric_Items_Type(1..Number_Of_Invalid_Trailing_Separate_Items) := |
| (new COBOL.Numeric'("123456"), |
| new COBOL.Numeric'("+12345"), |
| new COBOL.Numeric'("12345 "), |
| new COBOL.Numeric'("123- "), |
| new COBOL.Numeric'("123- "), |
| new COBOL.Numeric'("12345 +"), |
| new COBOL.Numeric'("12345+ "), |
| new COBOL.Numeric'("-0000000001"), |
| new COBOL.Numeric'("123-456"), |
| new COBOL.Numeric'("12--"), |
| new COBOL.Numeric'("+12-"), |
| new COBOL.Numeric'("99+-"), |
| new COBOL.Numeric'("12+/-"), |
| new COBOL.Numeric'("12.01-"), |
| new COBOL.Numeric'("$12.01+"), |
| new COBOL.Numeric'("(1.01)"), |
| new COBOL.Numeric'("DM12-"), |
| new COBOL.Numeric'("123,456+"), |
| new COBOL.Numeric'(""), |
| new COBOL.Numeric'("-"), |
| new COBOL.Numeric'("1.01-"), |
| new COBOL.Numeric'("+1.0000")); |
| |
| begin |
| |
| -- Check that function Valid, with the Display_Format parameter |
| -- set to Unsigned, will return True if Numeric parameter Item |
| -- comprises one or more decimal digit characters; check that it |
| -- returns False if the parameter Item is otherwise comprised. |
| |
| for i in 1..Number_of_Valid_Unsigned_Items loop |
| -- Fail if the Item parameter is _NOT_ considered Valid. |
| if not Display_Format.Valid(Item => Valid_Unsigned_Items(i).all, |
| Format => COBOL.Unsigned) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Unsigned, for valid " & |
| "format item number " & Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| for i in 1..Number_of_Invalid_Unsigned_Items loop |
| -- Fail if the Item parameter _IS_ considered Valid. |
| if Display_Format.Valid(Item => Invalid_Unsigned_Items(i).all, |
| Format => COBOL.Unsigned) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Unsigned, for invalid " & |
| "format item number " & Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| |
| -- Check that function Valid, with Display_Format parameter set to |
| -- Leading_Separate, will return True if Numeric parameter Item |
| -- comprises a single occurrence of a Plus_Sign or Minus_Sign |
| -- character, and then by one or more decimal digit characters; |
| -- check that it returns False if the parameter Item is otherwise |
| -- comprised. |
| |
| for i in 1..Number_of_Valid_Leading_Separate_Items loop |
| -- Fail if the Item parameter is _NOT_ considered Valid. |
| if not Display_Format.Valid(Valid_Leading_Separate_Items(i).all, |
| Format => COBOL.Leading_Separate) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Leading_Separate, " & |
| "for valid format item number " & Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| for i in 1..Number_of_Invalid_Leading_Separate_Items loop |
| -- Fail if the Item parameter _IS_ considered Valid. |
| if Display_Format.Valid(Invalid_Leading_Separate_Items(i).all, |
| Format => COBOL.Leading_Separate) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Leading_Separate, " & |
| "for invalid format item number " & |
| Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| |
| -- Check that function Valid, with Display_Format parameter set to |
| -- Trailing_Separate, will return True if Numeric parameter Item |
| -- comprises one or more decimal digit characters, and then by a |
| -- single occurrence of the Plus_Sign or Minus_Sign character; |
| -- check that it returns False if the parameter Item is otherwise |
| -- comprised. |
| |
| for i in 1..Number_of_Valid_Trailing_Separate_Items loop |
| -- Fail if the Item parameter is _NOT_ considered Valid. |
| if not Display_Format.Valid(Valid_Trailing_Separate_Items(i).all, |
| COBOL.Trailing_Separate) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Trailing_Separate, " & |
| "for valid format item number " & Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| for i in 1..Number_of_Invalid_Trailing_Separate_Items loop |
| -- Fail if the Item parameter _IS_ considered Valid. |
| if Display_Format.Valid(Invalid_Trailing_Separate_Items(i).all, |
| COBOL.Trailing_Separate) |
| then |
| Report.Failed("Incorrect result from function Valid, with " & |
| "Format parameter set to Trailing_Separate, " & |
| "for invalid format item number " & |
| Integer'Image(i)); |
| end if; |
| end loop; |
| |
| |
| exception |
| when The_Error : others => |
| Report.Failed ("The following exception was raised in the " & |
| "Test_Block: " & Exception_Name(The_Error)); |
| end Test_Block; |
| |
| Report.Result; |
| |
| end CXB4003; |