blob: 609dabc50891d66878f79af41b440f46b83519cc [file] [log] [blame]
-- 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;