mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 12:49:20 +02:00
* more generic tests
git-svn-id: trunk@11405 -
This commit is contained in:
parent
6c586e4eca
commit
4e278bccb1
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -8300,6 +8300,8 @@ tests/webtbs/tw10210.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw10224.pp svneol=native#text/plain
|
tests/webtbs/tw10224.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw1023.pp svneol=native#text/plain
|
tests/webtbs/tw1023.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw10233.pp svneol=native#text/plain
|
tests/webtbs/tw10233.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw10247.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw10247b.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw10320.pp svneol=native#text/plain
|
tests/webtbs/tw10320.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw10350.pp svneol=native#text/plain
|
tests/webtbs/tw10350.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw10371.pp svneol=native#text/plain
|
tests/webtbs/tw10371.pp svneol=native#text/plain
|
||||||
@ -8384,6 +8386,10 @@ tests/webtbs/tw11349.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw11354.pp svneol=native#text/plain
|
tests/webtbs/tw11354.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw11372.pp svneol=native#text/plain
|
tests/webtbs/tw11372.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw11392.pp svneol=native#text/plain
|
tests/webtbs/tw11392.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw11431.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw11435b.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw11435c.pp svneol=native#text/plain
|
||||||
|
tests/webtbs/tw11436.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw1152.pp svneol=native#text/plain
|
tests/webtbs/tw1152.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw11543.pp svneol=native#text/plain
|
tests/webtbs/tw11543.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw1157.pp svneol=native#text/plain
|
tests/webtbs/tw1157.pp svneol=native#text/plain
|
||||||
|
67
tests/webtbs/tw10247.pp
Normal file
67
tests/webtbs/tw10247.pp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{$mode objfpc}{$h+}
|
||||||
|
uses classes, sysutils;
|
||||||
|
type
|
||||||
|
generic TNode<T> = class
|
||||||
|
type public
|
||||||
|
PT = ^T;
|
||||||
|
var private
|
||||||
|
Data: T;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
generic TContainer<T> = class
|
||||||
|
type public
|
||||||
|
TTNode = specialize TNode<T>;
|
||||||
|
var
|
||||||
|
private
|
||||||
|
Data: TTNode;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
function GetAddr: TTNode.PT;
|
||||||
|
procedure SetV(v: TTNode.T);
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TNode.Create;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TNode.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TContainer.Create;
|
||||||
|
begin
|
||||||
|
Data:=TTNode.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TContainer.Destroy;
|
||||||
|
begin
|
||||||
|
Data.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TContainer.GetAddr: TTNode.PT;
|
||||||
|
begin
|
||||||
|
result := @Data.Data;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TContainer.SetV(v: TTNode.T);
|
||||||
|
begin
|
||||||
|
Data.Data:=v;
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TStringContainer=specialize TContainer<String>;
|
||||||
|
var
|
||||||
|
c : TStringContainer;
|
||||||
|
begin
|
||||||
|
c:=TStringContainer.Create;
|
||||||
|
c.Set('abc');
|
||||||
|
Writeln(HexStr(c.Get));
|
||||||
|
end.
|
42
tests/webtbs/tw10247b.pp
Normal file
42
tests/webtbs/tw10247b.pp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{$mode objfpc}{$h+}
|
||||||
|
type
|
||||||
|
generic TNode<T> = class
|
||||||
|
type public
|
||||||
|
PT = T;
|
||||||
|
var private
|
||||||
|
Data: T;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TTNodeLongint = specialize TNode<Longint>;
|
||||||
|
|
||||||
|
TTNodeString = specialize TNode<String>;
|
||||||
|
|
||||||
|
constructor TNode.Create;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TNode.Destroy;
|
||||||
|
begin
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetIntNode: TTNodeLongint.T;
|
||||||
|
begin
|
||||||
|
result := 10;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetStringNode: TTNodeString.PT;
|
||||||
|
begin
|
||||||
|
result := 'abc';
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
writeln(GetIntNode);
|
||||||
|
writeln(GetStringNode);
|
||||||
|
end.
|
||||||
|
|
19
tests/webtbs/tw11431.pp
Normal file
19
tests/webtbs/tw11431.pp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{$mode objfpc}
|
||||||
|
unit tw11431;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses sysutils;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
generic IGenericCollection<_T> = interface
|
||||||
|
end;
|
||||||
|
|
||||||
|
generic CGenericCollection<_T> = class( IGenericCollection)
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
20
tests/webtbs/tw11435b.pp
Normal file
20
tests/webtbs/tw11435b.pp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
unit tw11435b;
|
||||||
|
{$MODE ObjFPC}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
type
|
||||||
|
generic gCBla<_T> = class
|
||||||
|
function add( item: _T) : integer;
|
||||||
|
end;
|
||||||
|
|
||||||
|
CBla = specialize gCBla<Pointer>;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
function gCBla.add( item: _T) : integer;
|
||||||
|
begin
|
||||||
|
result := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
33
tests/webtbs/tw11435c.pp
Normal file
33
tests/webtbs/tw11435c.pp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
unit tw11435c;
|
||||||
|
|
||||||
|
{$MODE ObjFPC}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
type
|
||||||
|
generic TList<_T>=class(TObject)
|
||||||
|
type public
|
||||||
|
TCompareFunc = function(const Item1, Item2: _T): Integer;
|
||||||
|
var public
|
||||||
|
data : _T;
|
||||||
|
procedure Add(item: _T);
|
||||||
|
procedure Sort(compare: TCompareFunc);
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TA = specialize TList<byte>;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
procedure TList.Add(item: _T);
|
||||||
|
begin
|
||||||
|
data:=item;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TList.Sort(compare: TCompareFunc);
|
||||||
|
begin
|
||||||
|
if compare(data, 20) <= 0 then
|
||||||
|
halt(1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
15
tests/webtbs/tw11436.pp
Normal file
15
tests/webtbs/tw11436.pp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
unit tw11436;
|
||||||
|
{$MODE ObjFPC}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
type
|
||||||
|
generic gIBla<_T> = interface
|
||||||
|
function add( item: _T) : integer;
|
||||||
|
end;
|
||||||
|
|
||||||
|
IBla = specialize gIBla<byte>;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user