Index: tests/natools-string_slice_set_tests.adb ================================================================== --- tests/natools-string_slice_set_tests.adb +++ tests/natools-string_slice_set_tests.adb @@ -996,17 +996,23 @@ Name : constant String := "Simple tokenization"; Space : constant Ada.Strings.Maps.Character_Set := Ada.Strings.Maps.To_Set (" "); function Has_Spaces (S : String) return Boolean; + function Is_Fox (S : String) return Boolean; function Trim_Spaces (S : String) return String_Slices.String_Range; function Has_Spaces (S : String) return Boolean is begin return Ada.Strings.Fixed.Index (S, Space) > 0; end Has_Spaces; + + function Is_Fox (S : String) return Boolean is + begin + return S = "fox"; + end Is_Fox; function Trim_Spaces (S : String) return String_Slices.String_Range is Result : String_Slices.String_Range; N : Natural; begin @@ -1020,10 +1026,12 @@ (S, Space, Ada.Strings.Outside, Ada.Strings.Backward); String_Slices.Set_Last (Result, N); return Result; end Trim_Spaces; + + use type String_Slices.String_Range; begin declare Set : Slice_Sets.Slice_Set := Slice_Sets.To_Slice_Set (Parent_String); R : String_Slices.String_Range; N : Natural; @@ -1043,13 +1051,27 @@ Dump (Report, Set); return; end if; R := Set.Find_Slice (Has_Spaces'Access); - if R.First /= 1 or R.Length /= 0 then + if R /= (First => 1, Length => 0) then + Report.Item (Name, NT.Fail); + Report.Info ("Unexpected slice found at " + & String_Slices.Image (R)); + Dump (Report, Set); + return; + end if; + + R := Set.Find_Slice (Is_Fox'Access, Ada.Strings.Backward); + if R = (First => 1, Length => 0) then + Report.Item (Name, NT.Fail); + Report.Info ("Unable to find ""fox"" slice"); + Dump (Report, Set); + return; + elsif R /= (First => 27, Length => 3) then Report.Item (Name, NT.Fail); - Report.Info ("Unxpected slice found at " + Report.Info ("Unexpected ""fox"" slice found at " & String_Slices.Image (R)); Dump (Report, Set); return; end if; end;