| -- CXA3004.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 functions defined in package Ada.Characters.Handling |
| -- for classification of and conversion between Wide_Character and |
| -- Character values produce correct results when given the appropriate |
| -- Character and String inputs. |
| -- |
| -- TEST DESCRIPTION: |
| -- This test demonstrates the functions defined in package |
| -- Ada.Characters.Handling which provide for the classification of and |
| -- conversion between Wide_Characters and Characters, in character |
| -- variables and strings. |
| -- Each of the functions is provided with input values that are of the |
| -- appropriate range. The results of the function processing are |
| -- subsequently evaluated. |
| -- |
| -- APPLICABILITY CRITERIA: |
| -- Applicable to all implementations using the Latin_1 set as the |
| -- definition of Character. |
| -- |
| -- |
| -- CHANGE HISTORY: |
| -- 06 Dec 94 SAIC ACVC 2.0 |
| -- 27 Dec 94 SAIC Corrected variable names. |
| -- |
| --! |
| |
| with Report; |
| with Ada.Characters.Handling; |
| |
| procedure CXA3004 is |
| begin |
| |
| Report.Test ("CXA3004", "Check that the functions defined in package " & |
| "Ada.Characters.Handling for classification " & |
| "of and conversion between Wide_Character and " & |
| "Character values produce correct results " & |
| "when given the appropriate Character " & |
| "and String inputs"); |
| |
| Test_Block: |
| declare |
| |
| package ACH renames Ada.Characters.Handling; |
| |
| Char_End : Integer := 255; |
| WC_Start : Integer := 256; |
| Sub_Char : Character := '*'; |
| |
| Blank : Character := ' '; |
| First_Char : Character := Character'First; |
| Last_Char : Character := Character'Last; |
| F_Char : Character := 'F'; |
| |
| |
| First_Wide_Char : Wide_Character := Wide_Character'First; |
| Last_Non_Wide_Char : Wide_Character := Wide_Character'Val(Char_End); |
| First_Unique_Wide_Char : Wide_Character := Wide_Character'Val(WC_Start); |
| Last_Wide_Char : Wide_Character := Wide_Character'Last; |
| |
| A_String : String (1..3) := First_Char & 'X' & Last_Char; |
| A_Wide_String : Wide_String (1..3) := First_Wide_Char & |
| ACH.To_Wide_Character('X') & |
| ACH.To_Wide_Character(Last_Char); |
| |
| Unique_Wide_String : Wide_String (1..2) := First_Unique_Wide_Char & |
| Last_Wide_Char; |
| |
| Mixed_Wide_String : Wide_String (1..6) := ACH.To_Wide_Character('A') & |
| First_Wide_Char & |
| Last_Non_Wide_Char & |
| First_Unique_Wide_Char & |
| Last_Wide_Char & |
| ACH.To_Wide_Character('Z'); |
| |
| |
| Basic_Char : Character := 'A'; |
| Basic_Wide_Char : Wide_Character := 'A'; |
| Basic_String : String (1..6) := "ABCXYZ"; |
| Basic_Wide_String : Wide_String (1..6) := "ABCXYZ"; |
| |
| begin |
| |
| |
| -- Function Is_Character |
| |
| |
| if not ACH.Is_Character(First_Wide_Char) then |
| Report.Failed ("Incorrect result from Is_Character - 1"); |
| end if; |
| |
| |
| if ACH.Is_Character(First_Unique_Wide_Char) or |
| ACH.Is_Character(Last_Wide_Char) |
| then |
| Report.Failed ("Incorrect result from Is_Character - 2"); |
| end if; |
| |
| |
| -- Function Is_String |
| |
| |
| if not ACH.Is_String(A_Wide_String) then |
| Report.Failed ("Incorrect result from Is_String - 1"); |
| end if; |
| |
| |
| if ACH.Is_String(Unique_Wide_String) or |
| ACH.Is_String(Mixed_Wide_String) |
| then |
| Report.Failed ("Incorrect result from Is_String - 2"); |
| end if; |
| |
| |
| -- Function To_Character |
| |
| |
| -- Use default substitution character in call of To_Character. |
| |
| if ACH.To_Character(First_Wide_Char) /= First_Char or |
| ACH.To_Character(Last_Non_Wide_Char) /= Last_Char |
| then |
| Report.Failed ("Incorrect result from To_Character - 1"); |
| end if; |
| |
| |
| -- Provide a substitution character for use with To_Character. |
| |
| if ACH.To_Character(First_Unique_Wide_Char, Blank) /= Blank or |
| ACH.To_Character(First_Unique_Wide_Char, Sub_Char) /= Sub_Char or |
| ACH.To_Character(Last_Wide_Char) /= ' ' -- default |
| then |
| Report.Failed ("Incorrect result from To_Character - 2"); |
| end if; |
| |
| |
| -- Function To_String |
| |
| |
| if ACH.To_String(A_Wide_String) /= A_String then |
| Report.Failed ("Incorrect result from To_String - 1"); |
| end if; |
| |
| |
| if ACH.To_String(Unique_Wide_String, Sub_Char) /= "**" then |
| Report.Failed ("Incorrect result from To_String - 2"); |
| end if; |
| |
| |
| |
| if ACH.To_String(Mixed_Wide_String, Sub_Char) /= |
| ('A' & First_Char & Last_Char & "**" & 'Z') or |
| ACH.To_String(Mixed_Wide_String, Sub_Char) /= |
| (ACH.To_Character(Mixed_Wide_String(1), Sub_Char) & |
| ACH.To_Character(Mixed_Wide_String(2), Sub_Char) & |
| ACH.To_Character(Mixed_Wide_String(3), Sub_Char) & |
| ACH.To_Character(Mixed_Wide_String(4), Sub_Char) & |
| ACH.To_Character(Mixed_Wide_String(5), Sub_Char) & |
| ACH.To_Character(Mixed_Wide_String(6), Sub_Char)) |
| then |
| Report.Failed ("Incorrect result from To_String - 3"); |
| end if; |
| |
| |
| -- Function To_Wide_Character |
| |
| |
| if ACH.To_Wide_Character(Basic_Char) /= Basic_Wide_Char then |
| Report.Failed ("Incorrect result from To_Wide_Character"); |
| end if; |
| |
| |
| -- Function To_Wide_String |
| |
| |
| if not (ACH.To_Wide_String(Basic_String) = Basic_Wide_String) then |
| Report.Failed ("Incorrect result from To_Wide_String"); |
| end if; |
| |
| |
| -- Functions Used In Combination |
| |
| if not ACH.Is_Character (ACH.To_Wide_Character ( |
| ACH.To_Character(First_Wide_Char))) |
| then |
| Report.Failed ("Incorrect result from functions in combination - 1"); |
| end if; |
| |
| |
| if not ACH.Is_String(ACH.To_Wide_String(ACH.To_String(A_Wide_String))) |
| then |
| Report.Failed ("Incorrect result from functions in combination - 2"); |
| end if; |
| |
| |
| if ACH.To_String(ACH.To_Wide_Character('A') & |
| ACH.To_Wide_Character(F_Char) & |
| ACH.To_Wide_Character('Z')) /= "AFZ" |
| then |
| Report.Failed ("Incorrect result from functions in combination - 3"); |
| end if; |
| |
| |
| exception |
| when others => Report.Failed ("Exception raised in Test_Block"); |
| end Test_Block; |
| |
| |
| Report.Result; |
| |
| end CXA3004; |