/
lasersquad
/
DynamicArrays
Обзор
Документация
Войти
/
lasersquad
/
DynamicArrays
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
dynamicarrays/prj/Delphi/DynamicArraysOTests/DynamicArraysUIntTest.pas
404 строки
9 KB
lasersquad0
new files
20 май 2026, 22:15
20 май 2026, 22:15
b70be5f
Код
Авторство
О чём код?
unit DynamicArraysUIntTest; interface uses DUnitX.TestFramework, {TestBase,} DynamicArrays, DynamicArraysBaseTest; type [TestFixture] TDynamicArraysUIntTest<TT: constructor, THArray; InnerT: record> = class(TDynamicArraysBaseTest<TT, InnerT>) public [TearDownFixture] procedure TearDownFixture; // this method is called when all tests of this fixture are executed. so we have to free objects from FObjects [Setup] procedure Setup; [TearDown] procedure TearDown; [Test] procedure TestEmpty1; override; [Test] procedure TestEmpty2; override; [Test] procedure TestCountOne; override; [Test] procedure TestUpdate; override; [Test] procedure TestUpdateMany; override; [Test] procedure TestZero; override; [Test] procedure TestSwap; override; [Test] procedure TestAddFillValues1; override; [Test] procedure TestAddFillValues2; override; [Test] procedure TestIndexOF1; override; [Test] [TestCase('TestIndexofUA','4, 1, 2, 0')] // last figure is used for assers when TT=Boolean [TestCase('TestIndexofUB','1, 0, 3, 0')] [TestCase('TestIndexofUF','0, 13, 130, 0')] [TestCase('TestIndexofUG','1, 2, 200, 0')] procedure TestIndexOf2(AValue1, AValue2, AValue3, AValue4: Integer); override; [Test] procedure TestCapacity1; override; [Test] procedure TestCapacity2; override; [Test] [TestCase('TestUA','5,1')] [TestCase('TestUB','4,3')] [TestCase('TestUE','444, 333')] procedure TestAddTwoDiff(AValue1, AValue2 : Integer); override; [Test] [TestCase('TestUA','011, 011')] [TestCase('TestUB',' 3999,3999')] [TestCase('TestUC',' 0, 0')] [TestCase('TestUG','00000000, 0000000')] procedure TestAddTwoEqual(AValue1, AValue2 : Integer); override; [Test] procedure TestGrow; override; [Test] procedure TestInsert1; override; [Test] procedure TestInsert2; override; [Test] procedure TestDeleteValue1; override; [Test] procedure TestDeleteValue2; override; [Test] procedure TestAddClearAdd1; override; [Test] procedure TestAddClearAdd2; override; [Test] procedure TestSort1; overload; override; // <unsorted items> , <sorted items to verify> [TestCase('TestUA', '1;2;3;4;5, 1;2;3;4;5')] [TestCase('TestUB', '5;4;3;2;1, 1;2;3;4;5')] [TestCase('TestUC', '44;53;1;12;100;999;9, 1;9;12;44;53;100;999')] [TestCase('TestUD', '44;44;44;44;44;44;9, ;9;44;44;44;44;44;44')] [TestCase('TestUE', '9;1;9;1;9;1;9;1, 1;1;1;1;;9;9;9;9;;')] [TestCase('TestUF', '15, 15')] [TestCase('TestUG', '0, 0')] [TestCase('TestUH', '0;0, 0;0')] [TestCase('TestUK', '16;15, 15;16')] procedure TestSort2(AValue1, AValue2: string); overload; override; [Test] procedure TestAddMany; override; [Test] procedure TestInsertMany; override; { procedure TestBubbleSortPerformance; override; procedure TestSelectionSortPerformance; override; procedure TestQuickSortPerformance; override; procedure TestInsertSortPerformance; override; procedure TestShakerSortPerformance; override; } [Test] [Ignore('Ignore this test to save testing time')] procedure TestAllSortAlgsPerformance; override; // the same data array is sorted by 5 different sorting algs, time is measured // <unsorted items> , <value to find> , <value index to verify> [TestCase('TestUA1', '1;2;3;4;5, 1 , 0')] [TestCase('TestUA2', '1;2;3;4;5, 2 , 1')] [TestCase('TestUA3', '1;2;3;4;5, 0 , -1')] [TestCase('TestUA4', '5;4;3;2;1, 3 , 2')] [TestCase('TestUA5', '5;4;3;2;1, 6 , -6')] [TestCase('TestUA6', '5;4;3;2;1, 5 , 4')] [TestCase('TestUA7', '5;4;3;2;1, 4 , 3')] [TestCase('TestUA8', '5;4;3;2;6;1, 6 , 5')] [TestCase('TestUC1', '44;53;1;12;100;109;9, 100, 5 ')] [TestCase('TestUC2', '44;53;1;12;100;109;9, 109, 6 ')] [TestCase('TestUC3', '44;53;1;12;100;109;9, 1000, -8 ')] [TestCase('TestUD1', '44;44;44;44;44;44;9, 9 , 0 ')] [TestCase('TestUD2', '44;44;44;44;44;44;9, 44 , 1 ')] [TestCase('TestUD3', '44;44;44;44;44;44;9, 0 , -1 ')] [TestCase('TestUE1', '9;1;9;1;9;1;9;1, 1, 0')] [TestCase('TestUE2', '9;1;9;1;9;1;9;1, 9, 4')] [TestCase('TestUE3', '9;1;9;1;9;1;9;1, 10, -9')] [TestCase('TestUH', '15, 15, 0')] [TestCase('TestUK1', '0, 0, 0')] [TestCase('TestUL1', '0;0, 0, 0')] [TestCase('TestUM', '16;15, 16, 1')] //[Ignore('temporary IMGORE')] [Category('QuickFindTests')] procedure TestQuickFind(AValue1, AValue2, AValue3: string); override; end; const ARRAYSIZE_FOR_SORTING = 50_000; implementation uses System.TypInfo, System.Generics.Defaults, SysUtils, Winapi.Windows, DynamicArraysUtils; procedure TDynamicArraysUIntTest<TT, InnerT>.TearDownFixture; begin // FreeTObjects; end; procedure TDynamicArraysUIntTest<TT, InnerT>.Setup; begin array1 := TTestingArrayType.Create; array2 := TTestingArrayType.Create; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TearDown; begin FreeAndNil(array1); FreeAndNil(array2); end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddClearAdd1; begin inherited; end; // special implementation for UInt because base implementation works with negative figures. procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddClearAdd2; var I: Integer; v, v2: InnerT; begin for I := 9 downto 5 do begin v := I; array1.Insert(array1.Count, @v); array2.Insert(array2.Count, @v); end; Assert.AreEqual(8, array1.Capacity); Assert.AreEqual(8, array2.Capacity); Assert.AreEqual(5, array1.Count); Assert.AreEqual(5, array2.Count); array1.Clear; array2.Clear; Assert.AreEqual(8, array1.Capacity); Assert.AreEqual(8, array2.Capacity); Assert.AreEqual(0, array1.Count); Assert.AreEqual(0, array2.Count); for I := 19 downto 15 do begin v := I; array1.Insert(array1.Count, @v); array2.Insert(array2.Count, @v); end; Assert.AreEqual(8, array1.Capacity); Assert.AreEqual(8, array2.Capacity); Assert.AreEqual(5, array1.Count); Assert.AreEqual(5, array2.Count); for I := 0 to 4 do begin array2.Get(I, @v); v2 := 19 - I; Assert.AreEqual<InnerT>(v2, v); end; for I := 0 to 4 do begin array2.Get(I, @v2); array1.Get(I, @v); Assert.AreEqual<InnerT>(v2, v); end; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddFillValues1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddFillValues2; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddMany; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddTwoDiff(AValue1, AValue2: Integer); begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAddTwoEqual(AValue1, AValue2: Integer); begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestAllSortAlgsPerformance; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestCapacity1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestCapacity2; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestCountOne; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestDeleteValue1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestDeleteValue2; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestEmpty1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestEmpty2; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestGrow; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestIndexOF1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestIndexOf2(AValue1, AValue2, AValue3, AValue4: Integer); begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestInsert1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestInsert2; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestInsertMany; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestQuickFind(AValue1, AValue2, AValue3: string); begin inherited; end; { procedure TDynamicArraysUIntTest<TT, InnerT>.TestBubbleSortPerformance; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestQuickSortPerformance; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestSelectionSortPerformance; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestShakerSortPerformance; begin inherited; end; } procedure TDynamicArraysUIntTest<TT, InnerT>.TestSort1; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestSort2(AValue1, AValue2: string); begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestSwap; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestUpdate; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestUpdateMany; begin inherited; end; procedure TDynamicArraysUIntTest<TT, InnerT>.TestZero; begin inherited; end; initialization // only UNSIGNED types here TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THarrayWord, Word>); TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THArrayUInt64, UInt64>); TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THarrayLongWord, LongWord>); TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THarrayPointer, NativeUInt>); // TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THarrayObject, TObject>); //TDUnitX.RegisterTestFixture(TDynamicArraysUIntTest<THarrayBoolean, Boolean>); end.