unit uutlAlgorithmTests; {$mode objfpc}{$H+} interface uses Classes, SysUtils, TestFramework, uutlComparer; type //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TutlAlgorithmTest = class(TTestCase) published procedure BinarySearch; procedure QuickSort; end; implementation uses uutlTypes, uutlGenerics, uutlAlgorithm; type TIntArray = specialize TutlArray; TQuickSort = specialize TutlQuickSort; TBinarySearch = specialize TutlBinarySearch; TIntComparer = specialize TutlComparer; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TutlAlgorithmTest///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TutlAlgorithmTest.BinarySearch; var arr: TIntArray; index: Integer; ret: Boolean; begin SetLength(arr, 10); 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); AssertTrue (ret); AssertEquals(1, index); ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 7, index); AssertFalse (ret); AssertEquals(4, index); ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 13, index); AssertTrue (ret); AssertEquals(6, index); ret := TBinarySearch.Search(arr[0], Length(arr), TIntComparer.Create, 19, index); AssertFalse (ret); AssertEquals(7, 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 SetLength(arr, 20); 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); 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.