cxa4004.a

来自「用于进行gcc测试」· A 代码 · 共 432 行 · 第 1/2 页

A
432
字号
      begin         Location := ASF.Index(Source_String6,    -- "abcdefabcdef"                               "",                -- null pattern string.                               Ada.Strings.Forward);         Report.Failed("Pattern_Error not raised by Index");      exception         when Ada.Strings.Pattern_Error => null;  -- OK, expected exception.         when others                    =>           Report.Failed("Incorrect exception raised by Index, null pattern");      end;      -- Use the search direction "backward" to locate the particular      -- pattern within the source string.      Location := ASF.Index(Source_String6,         -- "abcdefabcdef"                            "de",                   -- slice 4..5, 10..11                            Ada.Strings.Backward);  -- search from right end.      if Location /= 10  then         Report.Failed("Incorrect result from Index going Backward");      end if;      -- Using the version of Index testing character set membership,       -- check combinations of forward/backward, inside/outside parameter      -- configurations.      if ASF.Index(Source => Source_String1,      -- "abcde"                   Set    => CD_Set,                   Test   => Ada.Strings.Inside,                   Going  => Ada.Strings.Forward) /= 3 or -- 'c' at pos 3.         ASF.Index(Source_String6,                -- "abcdefabcdef"                   CD_Set,                   Ada.Strings.Outside,                   Ada.Strings.Backward)  /=  12  or   -- 'f' at position 12         ASF.Index(Source_String6,                -- "abcdefabcdef"                   CD_Set,                   Ada.Strings.Inside,                   Ada.Strings.Backward)  /=   10  or  -- 'd' at position 10         ASF.Index("cdcdcdcdacdcdcdcd",                                  CD_Set,                   Ada.Strings.Outside,                   Ada.Strings.Forward)   /=    9      -- 'a' at position 9      then         Report.Failed("Incorrect result from function Index for sets - 1");      end if;      -- Additional interesting uses/combinations using Index for sets.      if ASF.Index("cd",                               -- same size, str-set                   CD_Set,                   Ada.Strings.Inside,                   Ada.Strings.Forward)   /=    1  or  -- 'c' at position 1         ASF.Index("abcd",                             -- same size, str-set,                   Maps.To_Set("efgh"),                -- different contents.                   Ada.Strings.Outside,                                   Ada.Strings.Forward)   /=    1  or         ASF.Index("abccd",                            -- set > string                   Maps.To_Set("acegik"),                   Ada.Strings.Inside,                   Ada.Strings.Backward)  /=    4  or  -- 'c' at position 4         ASF.Index("abcde",                   Maps.Null_Set)         /=    0  or         ASF.Index("",                                 -- Null string.                   CD_Set)                /=    0  or         ASF.Index("abc ab",                           -- blank included                   Maps.To_Set("e "),                  -- in string and set.                   Ada.Strings.Inside,                   Ada.Strings.Backward)  /=    4      -- blank in string.      then         Report.Failed("Incorrect result from function Index for sets - 2");      end if;      -- Function Index_Non_Blank.                            -- (Other usage examples of this function found in CXA4002-3.)                                                               if ASF.Index_Non_Blank(Source => Source_String4,  -- "abcdefghij  "                             Going  => Ada.Strings.Backward)  /= 10  or         ASF.Index_Non_Blank("abc def ghi jkl  ",                             Ada.Strings.Backward)            /= 15  or         ASF.Index_Non_Blank("  abcdef")                      /=  3  or         ASF.Index_Non_Blank("        ")                      /=  0      then          Report.Failed("Incorrect result from Index_Non_Blank");      end if;      -- Function Count      -- (Other usage examples of this function found in CXA4002-3.)      if ASF.Count("abababa",   "aba")            /=  2  or         ASF.Count("abababa",   "ab" )            /=  3  or         ASF.Count("babababa",  "ab")             /=  3  or         ASF.Count("abaabaaba", "aba")            /=  3  or         ASF.Count("xxxxxxxxxxxxxxxxxxxy", "xy")  /=  1  or         ASF.Count("xxxxxxxxxxxxxxxxxxxx", "x")   /= 20      then         Report.Failed("Incorrect result from Function Count");      end if;      -- Determine the number of slices of Source that when mapped to a       -- non-identity map, match the pattern string.      Slice_Count := ASF.Count(Source_String6, -- "abcdefabcdef"                               "xy",                               CD_to_XY_Map);  -- maps 'c' to 'x', 'd' to 'y'      if Slice_Count /= 2 then  -- two slices "xy" in "mapped" Source_String6         Report.Failed("Incorrect result from Count with non-identity map");      end if;      -- If the pattern supplied to Function Count is the null string, then      -- Pattern_Error is propagated.      declare         The_Null_String : constant String := "";      begin         Slice_Count := ASF.Count(Source_String6, The_Null_String);         Report.Failed("Pattern_Error not raised by Function Count");      exception         when Ada.Strings.Pattern_Error => null;   -- OK         when others =>           Report.Failed("Incorrect exception from Count with null pattern");      end;      -- Function Count returning the number of characters in a particular      -- set that are found in source string.      if ASF.Count(Source_String6, CD_Set) /= 4 then  -- 2 'c' and 'd' chars.         Report.Failed("Incorrect result from Count with set");      end if;       -- Function Find_Token.                                  -- (Other usage examples of this function found in CXA4002-3.)      ASF.Find_Token(Source  => Source_String6,      -- First slice with no                      Set     => ABCD_Set,            -- 'a', 'b', 'c', or 'd'                     Test    => Ada.Strings.Outside, -- is "ef" at 5..6.                     First   => Slice_Start,                     Last    => Slice_End);      if Slice_Start /= 5  or Slice_End /= 6 then         Report.Failed("Incorrect result from Find_Token - 1");      end if;      -- If no appropriate slice is contained by the source string, then the       -- value returned in Last is zero, and the value in First is       -- Source'First.      ASF.Find_Token(Source_String6,      -- "abcdefabcdef"                     A_to_F_Set,          -- Set of characters 'a' thru 'f'.                     Ada.Strings.Outside, -- No characters outside this set.                     Slice_Start,                     Slice_End);            if Slice_Start /= Source_String6'First  or Slice_End /= 0 then         Report.Failed("Incorrect result from Find_Token - 2");      end if;      -- Additional testing of Find_Token.      ASF.Find_Token("eabcdabcddcab",                      ABCD_Set,                      Ada.Strings.Inside,                     Slice_Start,                     Slice_End);      if Slice_Start /= 2  or Slice_End /= 13 then         Report.Failed("Incorrect result from Find_Token - 3");      end if;      ASF.Find_Token("efghijklabcdabcd",                     ABCD_Set,                     Ada.Strings.Outside,                     Slice_Start,                     Slice_End);      if Slice_Start /= 1  or Slice_End /= 8 then         Report.Failed("Incorrect result from Find_Token - 4");      end if;      ASF.Find_Token("abcdefgabcdabcd",                     ABCD_Set,                     Ada.Strings.Outside,                     Slice_Start,                     Slice_End);      if Slice_Start /= 5  or Slice_End /= 7 then         Report.Failed("Incorrect result from Find_Token - 5");      end if;      ASF.Find_Token("abcdcbabcdcba",                     ABCD_Set,                     Ada.Strings.Inside,                     Slice_Start,                     Slice_End);      if Slice_Start /= 1  or Slice_End /= 13 then         Report.Failed("Incorrect result from Find_Token - 6");      end if;   exception      when others => Report.Failed("Exception raised in Test_Block");   end Test_Block;   Report.Result;end CXA4004;

⌨️ 快捷键说明

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