cxf3002.a
来自「用于进行gcc测试」· A 代码 · 共 232 行
A
232 行
-- CXF3002.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 functionality contained in package-- Ada.Wide_Text_IO.Editing is available and produces correct results.---- TEST DESCRIPTION:-- This test is designed to validate the procedures and functions that-- are found in package Ada.Wide_Text_IO.Editing, the "wide" -- complementary package to Ada.Text_IO.Editing. The test is similar -- to CXF3301, which tested a large portion of the Ada.Text_IO.Editing-- package. Additional testing has been added here to cover the balance-- of the Wide_Text_IO.Editing child package.-- This test is structured using tables of data, consisting of-- numerical values, picture strings, and expected image-- result strings. ---- Each picture string is checked for validity, and an invalid picture -- string will cause immediate test failure on its first pass through-- the evaluation loop. Inside the evaluation loop, each decimal data -- item is combined with each of the picture strings as parameters to a-- call to Image, and the result of each call is compared to an -- expected edited output result string.---- Note: Each of the functions Valid, To_Picture, and Pic_String has-- String (rather than Wide_String) as its parameter or result-- subtype, since a picture String is not localizable.-- -- -- CHANGE HISTORY:-- 22 Jun 95 SAIC Initial prerelease version.-- 22 Aug 95 SAIC Test name changed to CXF3002 (from CXF3401) to -- conform with naming conventions.-- 24 Feb 97 PWB.CTA Corrected picture strings and expected values.--!with Ada.Wide_Text_IO.Editing;with Report;procedure CXF3002 isbegin Report.Test ("CXF3002", "Check that the functionality contained " & "in package Ada.Wide_Text_IO.Editing is " & "available and produces correct results"); Test_Block: declare use Ada.Wide_Text_IO; Number_Of_Decimal_Items : constant := 5; Number_Of_Picture_Strings : constant := 4; Number_Of_Expected_Results : constant := Number_Of_Decimal_Items * Number_Of_Picture_Strings; Def_Cur : constant Wide_String := "$"; Def_Fill : constant Wide_Character := '*'; Def_Sep : constant Wide_Character := Editing.Default_Separator; Def_Radix : constant Wide_Character := Editing.Default_Radix_Mark; type String_Pointer_Type is access String; type Wide_String_Pointer_Type is access Wide_String; -- Define a decimal data type, and instantiate the Decimal_Output -- generic package for the data type. type Decimal_Data_Type is delta 0.01 digits 16; package Wide_Ed_Out is new Editing.Decimal_Output(Num => Decimal_Data_Type, Default_Currency => Def_Cur, Default_Fill => Def_Fill, Default_Separator => Def_Sep, Default_Radix_Mark => Def_Radix); -- Define types for the arrays of data that will hold the decimal data -- values, picture strings, and expected edited output results. type Decimal_Data_Array_Type is array (Integer range <>) of Decimal_Data_Type; type Picture_String_Array_Type is array (Integer range <>) of String_Pointer_Type; type Edited_Output_Results_Array_Type is array (Integer range <>) of Wide_String_Pointer_Type; -- Define the data arrays for this test. Decimal_Data : Decimal_Data_Array_Type(1..Number_Of_Decimal_Items) := ( 1 => 5678.90, 2 => -6789.01, 3 => 0.00, 4 => 0.20, 5 => 3.45 ); Picture_Strings : Picture_String_Array_Type(1..Number_Of_Picture_Strings) := ( 1 => new String'("-$$_$$9.99"), 2 => new String'("-$$_$$$.$$"), 3 => new String'("-ZZZZ.ZZ"), 4 => new String'("-$$$_999.99") ); Edited_Output : Edited_Output_Results_Array_Type(1..Number_Of_Expected_Results) := ( 1 => new Wide_String'(" $5,678.90"), 2 => new Wide_String'(" $5,678.90"), 3 => new Wide_String'(" 5678.90"), 4 => new Wide_String'(" $5,678.90"), 5 => new Wide_String'("-$6,789.01"), 6 => new Wide_String'("-$6,789.01"), 7 => new Wide_String'("-6789.01"), 8 => new Wide_String'("- $6,789.01"), 9 => new Wide_String'(" $0.00"), 10 => new Wide_String'(" "), 11 => new Wide_String'(" "), 12 => new Wide_String'(" $ 000.00"), 13 => new Wide_String'(" $0.20"), 14 => new Wide_String'(" $.20"), 15 => new Wide_String'(" .20"), 16 => new Wide_String'(" $ 000.20"), 17 => new Wide_String'(" $3.45"), 18 => new Wide_String'(" $3.45"), 19 => new Wide_String'(" 3.45"), 20 => new Wide_String'(" $ 003.45") ); TC_Picture : Editing.Picture; TC_Loop_Count : Natural := 0; begin -- Compare string result of Image with expected edited output wide -- string. Evaluate_Edited_Output: for i in 1..Number_Of_Decimal_Items loop for j in 1..Number_Of_Picture_Strings loop TC_Loop_Count := TC_Loop_Count + 1; -- Check on the validity of the picture strings prior to -- processing. if Editing.Valid(Picture_Strings(j).all) then -- Create the picture object from the picture string. TC_Picture := Editing.To_Picture(Picture_Strings(j).all); -- Check results of function Decimal_Output.Valid. if not Wide_Ed_Out.Valid(Decimal_Data(i), TC_Picture) then Report.Failed("Incorrect result from function Valid " & "when examining the picture string that " & "was produced from string " & Integer'Image(j) & " in conjunction with " & "decimal data item # " & Integer'Image(i)); end if; -- Check results of function Editing.Pic_String. if Editing.Pic_String(TC_Picture) /= Picture_Strings(j).all then Report.Failed("Incorrect result from To_Picture/" & "Pic_String conversion for picture " & "string # " & Integer'Image(j)); end if; -- Compare actual edited output result of Function Image with -- the expected result. if Wide_Ed_Out.Image(Decimal_Data(i), TC_Picture) /= Edited_Output(TC_Loop_Count).all then Report.Failed("Incorrect result from Function Image, " & "when used with decimal data item # " & Integer'Image(i) & " and picture string # " & Integer'Image(j)); end if; else Report.Failed("Picture String # " & Integer'Image(j) & "reported as being invalid"); end if; end loop; end loop Evaluate_Edited_Output; exception when Editing.Picture_Error => Report.Failed ("Picture_Error raised in Test_Block"); when Layout_Error => Report.Failed ("Layout_Error raised in Test_Block"); when others => Report.Failed ("Exception raised in Test_Block"); end Test_Block; Report.Result;end CXF3002;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?