⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxa4023.a

📁 linux下编程用 编译软件
💻 A
📖 第 1 页 / 共 2 页
字号:
-- CXA4023.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 subprograms defined in package --      Ada.Strings.Wide_Unbounded are available, and that they produce --      correct results. Specifically, check the subprograms Delete, --      Find_Token, Translate, Trim, and "*".--      -- TEST DESCRIPTION:--      This test demonstrates the uses of many of the subprograms defined--      in package Ada.Strings.Wide_Unbounded for use with unbounded wide --      strings.  The test simulates how unbounded wide strings --      will be processed in a user environment, using the subprograms --      provided in this package.----      This test, when taken in conjunction with tests CXA4021-22, will --      constitute a test of the functionality contained in package--      Ada.Strings.Wide_Unbounded.  This test uses a variety--      of the subprograms defined in the unbounded wide string package--      in ways typical of common usage, with different combinations of--      available subprograms being used to accomplish similar --      unbounded wide string processing goals.----       -- CHANGE HISTORY:--      06 Dec 94   SAIC    ACVC 2.0--      08 Nov 95   SAIC    Corrected accessibility level and type --                          visibility problems for ACVC 2.0.1.----!with Ada.Characters.Handling;with Ada.Strings;package CXA40230 is   -- The following two functions are used to translate character and string   -- values to non-character "Wide" values.  They will be applied to all the   -- Wide_Bounded subprogram character and string parameters to simulate the   -- use of Wide_Characters and Wide_Strings in actual practice.   -- Note: These functions do not actually return "equivalent" wide   --       characters to their character inputs, just "non-character"   --       wide characters.   function Equiv (Ch : Character) return Wide_Character;   function Equiv (Str : String) return Wide_String;   -- Functions and access-to-subprogram object used to supply mapping   -- capability to the appropriate versions of Translate.   function AB_to_US_Mapping_Function (From : Wide_Character)      return Wide_Character;   function AB_to_Blank_Mapping_Function (From : Wide_Character)      return Wide_Character;end CXA40230;package body CXA40230 is   function Equiv (Ch : Character) return Wide_Character is      C : Character := Ch;   begin      if Ch = ' ' then         return Ada.Characters.Handling.To_Wide_Character(C);      else         return Wide_Character'Val(Character'Pos(Ch) +                 Character'Pos(Character'Last) + 1);      end if;   end Equiv;   function Equiv (Str : String) return Wide_String is      WS : Wide_String(Str'First..Str'Last);   begin      for i in Str'First..Str'Last loop         WS(i) := Equiv(Str(i));      end loop;      return WS;   end Equiv;   function AB_to_US_Mapping_Function (From : Wide_Character)      return Wide_Character is      UnderScore : constant Wide_Character := Equiv('_');   begin      if From = Equiv('a')  or  From = Equiv('b')  then         return UnderScore;      else         return From;      end if;   end AB_to_US_Mapping_Function;   function AB_to_Blank_Mapping_Function (From : Wide_Character)      return Wide_Character is   begin      if From = Equiv('a')  or  From = Equiv('b') then         return Ada.Strings.Wide_Space;      else         return From;      end if;   end AB_to_Blank_Mapping_Function;end CXA40230;with CXA40230;with Report;with Ada.Characters.Handling;with Ada.Strings.Wide_Maps;with Ada.Strings.Wide_Unbounded;procedure CXA4023 isbegin   Report.Test ("CXA4023", "Check that the subprograms defined in "    &                           "package Ada.Strings.Wide_Unbounded are "   &                           "available, and that they produce correct " &                           "results");   Test_Block:   declare      use CXA40230;      package ASW renames Ada.Strings.Wide_Unbounded;      use Ada.Strings;      use type Wide_Maps.Wide_Character_Set;      use type ASW.Unbounded_Wide_String;      Test_String   : ASW.Unbounded_Wide_String;      AtoE_Str      : ASW.Unbounded_Wide_String :=                        ASW.To_Unbounded_Wide_String(Equiv("abcde"));      Cad_String    : ASW.Unbounded_Wide_String :=                         ASW.To_Unbounded_Wide_String(Equiv("cad"));      Magic_String  : ASW.Unbounded_Wide_String :=                         ASW.To_Unbounded_Wide_String(Equiv("abracadabra"));      Incantation   : ASW.Unbounded_Wide_String := Magic_String;      A_Small_G : Wide_Character := Equiv('g');            ABCD_Set  : Wide_Maps.Wide_Character_Set :=                     Wide_Maps.To_Set(Equiv("abcd"));      B_Set     : Wide_Maps.Wide_Character_Set :=                     Wide_Maps.To_Set(Equiv('b'));      AB_Set    : Wide_Maps.Wide_Character_Set :=                     Wide_Maps."OR"(Wide_Maps.To_Set(Equiv('a')), B_Set);      AB_to_YZ_Map     : Wide_Maps.Wide_Character_Mapping :=                            Wide_Maps.To_Mapping(From => Equiv("ab"),                                                 To   => Equiv("yz"));      Code_Map         : Wide_Maps.Wide_Character_Mapping :=                            Wide_Maps.To_Mapping(Equiv("abcd"), Equiv("wxyz"));      Reverse_Code_Map : Wide_Maps.Wide_Character_Mapping :=                           Wide_Maps.To_Mapping(Equiv("wxyz"), Equiv("abcd"));      Non_Existent_Map : Wide_Maps.Wide_Character_Mapping :=                           Wide_Maps.To_Mapping(Equiv("jkl"), Equiv("mno"));      Token_Start      : Positive;      Token_End        : Natural := 0;      Map_Ptr  : Wide_Maps.Wide_Character_Mapping_Function :=                   AB_to_US_Mapping_Function'Access;   begin      -- Find_Token      ASW.Find_Token(Magic_String,      -- Find location of first "ab" equiv.                     AB_Set,            -- Should be (1..2).                     Ada.Strings.Inside,                     Token_Start,                     Token_End);      if Natural(Token_Start) /= ASW.To_Wide_String(Magic_String)'First  or         Token_End            /= ASW.Index(Magic_String, B_Set)          or         Token_End            /= 2      then          Report.Failed("Incorrect result from Procedure Find_Token - 1");      end if;      ASW.Find_Token(Source => Magic_String, -- Find location of char 'r'equiv                     Set    => ABCD_Set,     -- in wide str, should be (3..3)                     Test   => Ada.Strings.Outside,                     First  => Token_Start,                     Last   => Token_End);      if Natural(Token_Start) /= 3  or  Token_End /= 3 then         Report.Failed("Incorrect result from Procedure Find_Token - 2");      end if;      ASW.Find_Token(Magic_String,                -- No 'g' "equivalent in                      Wide_Maps.To_Set(A_Small_G), -- the wide str, so the                     Ada.Strings.Inside,          -- result params should be                      First => Token_Start,        -- First = Source'First and                     Last  => Token_End);         -- Last = 0.      if Token_Start /= ASW.To_Wide_String(Magic_String)'First  or         Token_End   /= 0      then         Report.Failed("Incorrect result from Procedure Find_Token - 3");      end if;       ASW.Find_Token(ASW.To_Unbounded_Wide_String(Equiv("abpqpqrttrcpqr")),                     Wide_Maps.To_Set(Equiv("trpq")),                     Ada.Strings.Inside,                     Token_Start,                     Token_End);      if Token_Start /= 3 or         Token_End   /= 10      then         Report.Failed("Incorrect result from Procedure Find_Token - 4");      end if;      ASW.Find_Token(ASW.To_Unbounded_Wide_String(Equiv("abpqpqrttrcpqr")),                     Wide_Maps.To_Set(Equiv("abpq")),                     Ada.Strings.Outside,                     Token_Start,                     Token_End);      if Token_Start /= 7 or         Token_End   /= 11      then         Report.Failed("Incorrect result from Procedure Find_Token - 5");      end if;      -- Translate      -- Use a mapping ("abcd" -> "wxyz") to transform the contents of       -- the unbounded wide string.      -- Magic_String = "abracadabra"      Incantation := ASW.Translate(Magic_String, Code_Map);       if Incantation /=          ASW.To_Unbounded_Wide_String(Equiv("wxrwywzwxrw"))       then         Report.Failed("Incorrect result from Function Translate - 1");      end if;      -- (Note: See below for additional testing of Function Translate)      -- Use the inverse mapping of the one above to return the "translated"      -- unbounded wide string to its original form.      ASW.Translate(Incantation, Reverse_Code_Map);      -- The map contained in the following call to Translate contains three      -- elements, and these elements are not found in the unbounded wide      -- string, so this call to Translate should have no effect on it.      if Incantation /= ASW.Translate(Magic_String, Non_Existent_Map) then         Report.Failed("Incorrect result from Procedure Translate - 1");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -