Browse Source

* fixed test to reflect current ideas how generics should be used

git-svn-id: trunk@5163 -
florian 19 years ago
parent
commit
107721f760
1 changed files with 17 additions and 16 deletions
  1. 17 16
      tests/test/tgeneric6.pp

+ 17 - 16
tests/test/tgeneric6.pp

@@ -1,30 +1,30 @@
 {$mode objfpc}
 {$mode objfpc}
 
 
 type
 type
-   generic PListItem<_T>=^specialize TListItem<_T>;
-   generic TListItem<_T>=record
-     data : _T;
-     next : specialize PListItem<_T>;
-   end;
-
    generic TList<_T>=class(TObject)
    generic TList<_T>=class(TObject)
-     first : specialize PListItem<_T>;
+     type
+       PListItem = ^TListItem;
+       TListItem = record
+         data : _T;
+         next : PListItem;
+       end;
+     var
+       first : PListItem;
      procedure Add(item: _T);
      procedure Add(item: _T);
    end;
    end;
 
 
-procedure TList.Add(data: _T);
+procedure TList.Add(item: _T);
 var
 var
-  newitem : specialize PListItem<_T>;
+  newitem : PListItem;
 begin
 begin
   new(newitem);
   new(newitem);
-  newitem.data:=data;
-  newitem.next:=first;
+  newitem^.data:=item;
+  newitem^.next:=first;
 end;
 end;
 
 
 type
 type
   TMyIntList = specialize TList<integer>;
   TMyIntList = specialize TList<integer>;
   TMyStringList = specialize TList<string>;
   TMyStringList = specialize TList<string>;
-
 var
 var
   ilist : TMyIntList;
   ilist : TMyIntList;
   slist : TMyStringList;
   slist : TMyStringList;
@@ -35,16 +35,17 @@ begin
   ilist.Add(someInt);
   ilist.Add(someInt);
   ilist.Add(someInt+1);
   ilist.Add(someInt+1);
   writeln(ilist.first^.data);
   writeln(ilist.first^.data);
-  if ilist.data<>10 then
+  if ilist.first^.data<>10 then
     halt(1);
     halt(1);
   writeln(ilist.first^.next^.data);
   writeln(ilist.first^.next^.data);
-  if ilist.data<>11 then
+  if ilist.first^.data<>11 then
     halt(1);
     halt(1);
 
 
   slist := TMyStringList.Create;
   slist := TMyStringList.Create;
   slist.Add('Test1');
   slist.Add('Test1');
   slist.Add('Test2');
   slist.Add('Test2');
-  writeln(slist.data);
-  if slist.data<>'Test1' then
+  writeln(slist.first^.data);
+  if slist.first^.data<>'Test1' then
     halt(1);
     halt(1);
+  writeln('ok');
 end.
 end.