Skip to content

Commit 16eb134

Browse files
committed
removed range check error on zero sized range removal within valid index range
1 parent d6e49fd commit 16eb134

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

Source/Base/Collections/Spring.Collections.Lists.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,7 @@ procedure TAbstractArrayList<T>.DeleteRange(index, count: Integer);
920920
tailCount: Integer;
921921
begin
922922
{$IFDEF SPRING_ENABLE_GUARD}
923-
Guard.CheckRange((index >= 0) and (index < Self.Count), 'index');
923+
Guard.CheckRange(index >= 0, 'index');
924924
Guard.CheckRange((count >= 0) and (count <= Self.Count - index), 'count');
925925
{$ENDIF}
926926

Tests/Source/Base/Spring.Tests.Collections.pas

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ TTestIntegerList = class(TTestCase)
182182
procedure TestExtractRange;
183183

184184
procedure TestTryMethodsReturnDefaultWhenFalse;
185+
186+
procedure TestDeleteRangeEmptyList;
185187
end;
186188

187189
TTestStringList = class(TTestCase)
@@ -1124,6 +1126,21 @@ procedure TTestIntegerList.TestCopyTo;
11241126
CheckNotEquals(SUT.First, values[0]);
11251127
end;
11261128

1129+
procedure TTestIntegerList.TestDeleteRangeEmptyList;
1130+
begin
1131+
SUT.DeleteRange(0, 0);
1132+
CheckException(EArgumentOutOfRangeException,
1133+
procedure
1134+
begin
1135+
SUT.DeleteRange(0, 1);
1136+
end);
1137+
CheckException(EArgumentOutOfRangeException,
1138+
procedure
1139+
begin
1140+
SUT.DeleteRange(1, 0);
1141+
end);
1142+
end;
1143+
11271144
procedure TTestIntegerList.TestEnumeratorMoveNext_VersionMismatch;
11281145
var
11291146
e: IEnumerator<Integer>;

0 commit comments

Comments
 (0)