Newer
Older
unit uutlAlgorithmTests;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, TestFramework,
uutlComparer;
type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TutlAlgorithmTest = class(TTestCase)
published
procedure BinarySearch;
procedure QuickSort;
end;
implementation
uses
type
TIntArray = specialize TutlArray<Integer>;
TQuickSort = specialize TutlQuickSort<Integer>;
TBinarySearch = specialize TutlBinarySearch<Integer>;
TIntComparer = specialize TutlComparer<Integer>;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TutlAlgorithmTest/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TutlAlgorithmTest.BinarySearch;
var
arr: TIntArray;
index: Integer;
ret: Boolean;
begin
arr[0] := 1;
arr[1] := 4;
arr[2] := 5;
arr[3] := 6;
arr[4] := 10;
arr[5] := 11;
arr[6] := 13;
arr[7] := 20;
arr[8] := 21;
arr[9] := 22;
ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 4, index);
ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 7, index);
ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 13, index);
ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 19, index);
ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 25, index);
AssertFalse (ret);
AssertEquals(10, index);
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TutlAlgorithmTest.QuickSort;
var
arr: TIntArray;
begin
arr[ 0] := 134;
arr[ 1] := 314;
arr[ 2] := 721;
arr[ 3] := 672;
arr[ 4] := 831;
arr[ 5] := 163;
arr[ 6] := 126;
arr[ 7] := 732;
arr[ 8] := 175;
arr[ 9] := 274;
arr[10] := 462;
arr[11] := 627;
arr[12] := 633;
arr[13] := 672;
arr[14] := 752;
arr[15] := 367;
arr[16] := 263;
arr[17] := 456;
arr[18] := 678;
arr[19] := 832;
TQuickSort.Sort(arr[0], Length(arr), TIntComparer.Create);
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
AssertEquals(126, arr[ 0]);
AssertEquals(134, arr[ 1]);
AssertEquals(163, arr[ 2]);
AssertEquals(175, arr[ 3]);
AssertEquals(263, arr[ 4]);
AssertEquals(274, arr[ 5]);
AssertEquals(314, arr[ 6]);
AssertEquals(367, arr[ 7]);
AssertEquals(456, arr[ 8]);
AssertEquals(462, arr[ 9]);
AssertEquals(627, arr[10]);
AssertEquals(633, arr[11]);
AssertEquals(672, arr[12]);
AssertEquals(672, arr[13]);
AssertEquals(678, arr[14]);
AssertEquals(721, arr[15]);
AssertEquals(732, arr[16]);
AssertEquals(752, arr[17]);
AssertEquals(831, arr[18]);
AssertEquals(832, arr[19]);
end;
initialization
RegisterTest(TutlAlgorithmTest.Suite);
end.