Skip to content

Commit b6046c3

Browse files
committed
unittest upgrade
1 parent 9a974e3 commit b6046c3

File tree

3 files changed

+125
-13
lines changed

3 files changed

+125
-13
lines changed

UnitTest/RipGrepper.Common.ArrayExTest.pas

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ TArrayExTest = class
8080
procedure InsertIfNotContainsAtEndTest();
8181
[Test]
8282
procedure InsertIfNotContainsAtMiddleTest();
83+
[Test]
84+
procedure GetRangeTest();
85+
[Test]
86+
procedure GetRangeWithCountTest();
87+
[Test]
88+
procedure GetRangeExceedingCountTest();
89+
[Test]
90+
procedure GetRangeTenItemsTest();
8391
end;
8492

8593
implementation
@@ -809,6 +817,82 @@ class function TTestRecord.NameAgeComparer() : IComparer<TTestRecord>;
809817
end);
810818
end;
811819

820+
procedure TArrayExTest.GetRangeTest();
821+
var
822+
ai : TArrayEx<integer>;
823+
result : TArrayEx<integer>;
824+
begin
825+
ai := [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
826+
827+
result := ai.GetRange(0, 5);
828+
Assert.AreEqual<integer>(5, result.Count, 'GetRange(0, 5) should return 5 elements');
829+
Assert.IsTrue(result.Compare([0, 1, 2, 3, 4]), 'GetRange(0, 5) should return first 5 elements');
830+
831+
result := ai.GetRange(3, 4);
832+
Assert.AreEqual<integer>(4, result.Count, 'GetRange(3, 4) should return 4 elements');
833+
Assert.IsTrue(result.Compare([3, 4, 5, 6]), 'GetRange(3, 4) should return elements from index 3');
834+
835+
result := ai.GetRange(7, 2);
836+
Assert.AreEqual<integer>(2, result.Count, 'GetRange(7, 2) should return 2 elements');
837+
Assert.IsTrue(result.Compare([7, 8]), 'GetRange(7, 2) should return last 2 elements before 9');
838+
839+
result := ai.GetRange(9, 1);
840+
Assert.AreEqual<integer>(1, result.Count, 'GetRange(9, 1) should return 1 element');
841+
Assert.IsTrue(result.Compare([9]), 'GetRange(9, 1) should return last element');
842+
end;
843+
844+
procedure TArrayExTest.GetRangeWithCountTest();
845+
var
846+
ai : TArrayEx<integer>;
847+
result : TArrayEx<integer>;
848+
begin
849+
ai := [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
850+
851+
result := ai.GetRange(0, 3);
852+
Assert.AreEqual<integer>(3, result.Count, 'Should return exactly 3 elements');
853+
Assert.IsTrue(result.Compare([10, 20, 30]), 'Should return first 3 elements');
854+
855+
result := ai.GetRange(5, 5);
856+
Assert.AreEqual<integer>(5, result.Count, 'Should return 5 elements starting from index 5');
857+
Assert.IsTrue(result.Compare([60, 70, 80, 90, 100]), 'Should return elements 60 to 100');
858+
end;
859+
860+
procedure TArrayExTest.GetRangeExceedingCountTest();
861+
var
862+
ai : TArrayEx<integer>;
863+
result : TArrayEx<integer>;
864+
begin
865+
ai := [1, 2, 3, 4, 5];
866+
867+
result := ai.GetRange(0, 10);
868+
Assert.AreEqual<integer>(5, result.Count, 'Should return all available elements when count exceeds array size');
869+
Assert.IsTrue(result.Compare([1, 2, 3, 4, 5]), 'Should return all elements');
870+
871+
result := ai.GetRange(3, 10);
872+
Assert.AreEqual<integer>(2, result.Count, 'Should return remaining elements from index 3');
873+
Assert.IsTrue(result.Compare([4, 5]), 'Should return last 2 elements');
874+
875+
result := ai.GetRange(0, -1);
876+
Assert.AreEqual<integer>(5, result.Count, 'Negative count should return all elements');
877+
Assert.IsTrue(result.Compare([1, 2, 3, 4, 5]), 'Should return all elements with negative count');
878+
end;
879+
880+
procedure TArrayExTest.GetRangeTenItemsTest();
881+
var
882+
ai : TArrayEx<integer>;
883+
result : TArrayEx<integer>;
884+
begin
885+
ai := [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
886+
887+
result := ai.GetRange(0, 10);
888+
Assert.AreEqual<integer>(10, result.Count, 'Should return exactly 10 elements');
889+
Assert.IsTrue(result.Compare([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 'Should return first 10 elements correctly');
890+
891+
for var i := 0 to 9 do begin
892+
Assert.AreEqual<integer>(i, result[i], Format('Element at index %d should be %d', [i, i]));
893+
end;
894+
end;
895+
812896
initialization
813897

814898
TDUnitX.RegisterTestFixture(TArrayExTest);

UnitTest/RipGrepper.Settings.SettingVariantTest.pas

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ TSettingVariantTest = class
4848
[Test]
4949
procedure TestCopyStrArraySetting;
5050
[Test]
51+
procedure TestCopyArraySetting;
52+
[Test]
5153
procedure TestAddToStrArraySetting();
5254
[Test]
5355
procedure TestAddIfNotContainsToStrArraySetting();
@@ -123,15 +125,15 @@ procedure TSettingVariantTest.TestWriteToMemIniStr();
123125
ExpectedValue := '';
124126

125127
Assert.AreEqual(ExpectedValue, ActualValue, Format('Initialized is not stored. Expected %s should be equal to %s',
126-
[ExpectedValue, ActualValue]));
128+
[ExpectedValue, ActualValue]));
127129

128130
v.Value := 'ChangedValue';
129131
v.StoreToPersister();
130132
ActualValue := IniFile.ReadString(Section, Ident, '');
131133
ExpectedValue := v.Value;
132134

133135
Assert.AreEqual(ExpectedValue, ActualValue, Format('Modified should stored. Expected %s should be equal to %s',
134-
[ExpectedValue, ActualValue]));
136+
[ExpectedValue, ActualValue]));
135137

136138
end;
137139

@@ -153,15 +155,15 @@ procedure TSettingVariantTest.TestWriteToMemIniInt();
153155
ExpectedValue := -1;
154156

155157
Assert.AreEqual(ExpectedValue, ActualValue, Format('Initialized is not stored. Expected %d should be equal to %d',
156-
[ExpectedValue, ActualValue]));
158+
[ExpectedValue, ActualValue]));
157159

158160
v.Value := 43;
159161
v.StoreToPersister();
160162
ActualValue := IniFile.ReadInteger(Section, Ident, -1);
161163
ExpectedValue := 43;
162164

163165
Assert.AreEqual(ExpectedValue, ActualValue, Format('Modified should be stored. Expected %d should be equal to %d',
164-
[ExpectedValue, ActualValue]));
166+
[ExpectedValue, ActualValue]));
165167

166168
end;
167169

@@ -182,7 +184,7 @@ procedure TSettingVariantTest.TestWriteToMemIniBool();
182184
ExpectedValue := v.Value;
183185

184186
Assert.AreNotEqual(ExpectedValue, ActualValue, Format('Initialized is not stored. Expected %s should be equal to %s',
185-
[BoolToStr(ExpectedValue), BoolToStr(ActualValue)]));
187+
[BoolToStr(ExpectedValue), BoolToStr(ActualValue)]));
186188

187189
v.Value := False;
188190
v.Value := True;
@@ -192,7 +194,7 @@ procedure TSettingVariantTest.TestWriteToMemIniBool();
192194
ExpectedValue := v.Value;
193195

194196
Assert.AreEqual(ExpectedValue, ActualValue, Format('Expected %s should be equal to %s',
195-
[BoolToStr(ExpectedValue), BoolToStr(ActualValue)]));
197+
[BoolToStr(ExpectedValue), BoolToStr(ActualValue)]));
196198

197199
end;
198200

@@ -216,7 +218,7 @@ procedure TSettingVariantTest.TestWriteToMemIniArray();
216218
ActualValue := IniFile.ReadString(Section, Format('Item_%d', [i]), '');
217219
ExpectedValue := varr[i];
218220
Assert.AreNotEqual(ExpectedValue, ActualValue, Format('Initialized not saved. Expected %s should be equal to %s',
219-
[ExpectedValue, ActualValue]));
221+
[ExpectedValue, ActualValue]));
220222
end;
221223

222224
varr := ['1', '2', '3'];
@@ -227,7 +229,7 @@ procedure TSettingVariantTest.TestWriteToMemIniArray();
227229
ActualValue := IniFile.ReadString(Section, Format('Item_%d', [i]), '');
228230
ExpectedValue := varr[i];
229231
Assert.AreEqual(ExpectedValue, ActualValue, Format('Modified should stored. Expected %s should be equal to %s',
230-
[ExpectedValue, ActualValue]));
232+
[ExpectedValue, ActualValue]));
231233
end;
232234

233235
end;
@@ -317,10 +319,36 @@ procedure TSettingVariantTest.TestCopyStrArraySetting;
317319
v2 := TArraySetting.Create('v2');
318320

319321
v2.Copy(v);
320-
Assert.AreEqual(v.Value, v2.Value, 'Values should be equal after copy');
322+
Assert.IsTrue(v.Value.Compare(v2.Value), 'Values should be equal after copy');
321323
Assert.IsTrue(v.Equals(v2), 'Settings should be equal after copy');
322324
end;
323325

326+
procedure TSettingVariantTest.TestCopyArraySetting;
327+
var
328+
v, v2 : IArraySetting;
329+
begin
330+
var
331+
a := ['alpha', 'beta', 'gamma'];
332+
v := TArraySetting.Create('sourceArray', a);
333+
var
334+
b := ['initial'];
335+
v2 := TArraySetting.Create('targetArray', b);
336+
337+
// Test copy with populated source
338+
v2.Copy(v);
339+
Assert.AreEqual(3, v2.Value.Count, 'Count should be 3 after copy');
340+
Assert.AreEqual('alpha', v2.Value[0], 'First item should be alpha');
341+
Assert.AreEqual('beta', v2.Value[1], 'Second item should be beta');
342+
Assert.AreEqual('gamma', v2.Value[2], 'Third item should be gamma');
343+
Assert.IsTrue(v.Value.Compare(v2.Value), 'Values should be equal after copy');
344+
345+
// Test copy with empty source
346+
var
347+
v3 := TArraySetting.Create('emptyArray');
348+
v2.Copy(v3);
349+
Assert.AreEqual(0, v2.Value.Count, 'Count should be 0 after copying empty array');
350+
end;
351+
324352
procedure TSettingVariantTest.TestAddToStrArraySetting();
325353
var
326354
v : IArraySetting;
@@ -389,7 +417,7 @@ procedure TSettingVariantTest.TestWriteToMemIniArrayReversed();
389417
ActualValue := IniFile.ReadString(Section, Format('Item_%d', [i]), '');
390418
ExpectedValue := varr[i];
391419
Assert.AreNotEqual(ExpectedValue, ActualValue, Format('Initialized not saved. Expected %s should be equal to %s',
392-
[ExpectedValue, ActualValue]));
420+
[ExpectedValue, ActualValue]));
393421
end;
394422

395423
varr := ['1', '2', '3'];
@@ -400,7 +428,7 @@ procedure TSettingVariantTest.TestWriteToMemIniArrayReversed();
400428
ActualValue := IniFile.ReadString(Section, Format('Item_%d', [i]), '');
401429
ExpectedValue := varr[i];
402430
Assert.AreEqual(ExpectedValue, ActualValue, Format('Modified should stored. Expected %s should be equal to %s',
403-
[ExpectedValue, ActualValue]));
431+
[ExpectedValue, ActualValue]));
404432
end;
405433

406434
end;

external/ArrayEx.pas

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,8 +673,8 @@ function TArrayEx<T>.GetRange(const _idx : integer; const _count : integer = -1)
673673
copyCount := Count - _idx;
674674
if copyCount > 0 then begin
675675
SetLength(Result.Items, copyCount);
676-
for var i := _idx to copyCount - 1 do begin
677-
Result.Items[i] := Items[i];
676+
for var i := 0 to copyCount - 1 do begin
677+
Result.Items[i] := Items[_idx + i];
678678
end;
679679
end;
680680
end;

0 commit comments

Comments
 (0)