summaryrefslogtreecommitdiff
path: root/tests/webtbs/tw3589.pp
blob: 21603496f41bf82e7fd183a557f867419ee0f3f2 (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
{ Source provided for Free Pascal Bug Report 3589 }
{ Submitted by "Michalis Kamburelis" on  2005-01-23 }
{ e-mail: michalis@camelot.homedns.org }
{$ifdef FPC} {$mode objfpc} {$endif}
{$assertions on}

uses Classes;

type
  TBoxedInt = class(TCollectionItem)
  public
    Value: Integer;
  end;
  
var 
  C: TCollection;
begin
 C := TCollection.Create(TBoxedInt);
 try
  TBoxedInt(C.Add).Value := 1;
  TBoxedInt(C.Add).Value := 2;
  TBoxedInt(C.Add).Value := 3;
  TBoxedInt(C.Insert(0)).Value := 4; { 4 1 2 3 }
  TBoxedInt(C.Insert(3)).Value := 5; { 4 1 2 5 3 }
  TBoxedInt(C.Insert(5)).Value := 6; { 4 1 2 5 3 6 }
{  Writeln(
    TBoxedInt(C.Items[0]).Value, ' ',
    TBoxedInt(C.Items[1]).Value, ' ',
    TBoxedInt(C.Items[2]).Value, ' ',
    TBoxedInt(C.Items[3]).Value, ' ',
    TBoxedInt(C.Items[4]).Value, ' ',
    TBoxedInt(C.Items[5]).Value);}
  Assert( 
    (TBoxedInt(C.Items[0]).Value = 4) and
    (TBoxedInt(C.Items[1]).Value = 1) and
    (TBoxedInt(C.Items[2]).Value = 2) and
    (TBoxedInt(C.Items[3]).Value = 5) and
    (TBoxedInt(C.Items[4]).Value = 3) and
    (TBoxedInt(C.Items[5]).Value = 6));
 finally C.Free end;
end.