summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/packages/webtbs/tw11142.pp
blob: 4d080566e1ed1ff66d28a637cea346cb21b14e1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{$mode objfpc}
uses
  SysUtils,Contnrs;

var
  colls : Integer;

// Test for Hashing
procedure Test;
 var HL:TFPHashList;
     i,n:integer;
     dat:array[0..5]of pinteger;

begin
 HL:=TFpHashList.Create;
 HL.Capacity:=389;

 // Create pointer for data
 for i:=0 to 5 do
  begin
   dat[i]:=new(pinteger);
   dat[i]^:=i;
  end;

 // add A..F with pointer
 for i:=0 to 5 do
    Writeln('HL.Add: '+chr(i+65)+' = Index: '
                    +IntToStr(HL.Add(chr(i+65),dat[i])));

 // get collisions
 for i:=0 to 5 do
   begin
    Writeln('--------------');
    Writeln('Collision for Index: '+IntToStr(i));
    n:=HL.FindIndexOf(chr(i+65));
    while n>=0 do
     begin
      Writeln('Index: '+IntToStr(n)+
                      ' | NameOfIndex: '+HL.NameOfIndex(n)+
                      ' | HashOfIndex: '+IntToStr(HL.HashOfIndex(n))+
                      ' | NextCollision: '+IntToStr(HL.GetNextCollision(n)));
      n:=HL.GetNextCollision(n);
      if n<>-1 then
        inc(colls);
     end; //while
   end; //for

 HL.Free;
 for i:=0 to 5 do dispose(dat[i]);
end;

begin
  Test;
  if colls>0 then
    halt(1);
end.