mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-21 12:29:46 +02:00
+ more implements tests
git-svn-id: trunk@10417 -
This commit is contained in:
parent
1b4071d930
commit
288fb08f09
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -7270,6 +7270,8 @@ tests/test/timplements1.pp svneol=native#text/plain
|
|||||||
tests/test/timplements2.pp svneol=native#text/plain
|
tests/test/timplements2.pp svneol=native#text/plain
|
||||||
tests/test/timplements3.pp svneol=native#text/plain
|
tests/test/timplements3.pp svneol=native#text/plain
|
||||||
tests/test/timplements4.pp svneol=native#text/plain
|
tests/test/timplements4.pp svneol=native#text/plain
|
||||||
|
tests/test/timplements4a.pp svneol=native#text/plain
|
||||||
|
tests/test/timplements4b.pp svneol=native#text/plain
|
||||||
tests/test/timplprog.pp svneol=native#text/plain
|
tests/test/timplprog.pp svneol=native#text/plain
|
||||||
tests/test/tindex.pp svneol=native#text/plain
|
tests/test/tindex.pp svneol=native#text/plain
|
||||||
tests/test/tinivar.pp svneol=native#text/plain
|
tests/test/tinivar.pp svneol=native#text/plain
|
||||||
|
41
tests/test/timplements4a.pp
Normal file
41
tests/test/timplements4a.pp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ %OPT=-gh }
|
||||||
|
{$ifdef fpc}
|
||||||
|
{$mode objfpc}
|
||||||
|
{$endif fpc}
|
||||||
|
uses
|
||||||
|
classes;
|
||||||
|
|
||||||
|
type
|
||||||
|
to1 = class(TObject,IInterface)
|
||||||
|
fi : TInterfacedObject;
|
||||||
|
property i : TInterfacedObject read fi implements IInterface;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
o1 : to1;
|
||||||
|
i1,i2 : IInterface;
|
||||||
|
begin
|
||||||
|
o1:=to1.create;
|
||||||
|
o1.fi:=TInterfacedObject.Create;
|
||||||
|
writeln('o1 and o1.fi created');
|
||||||
|
i1:=o1;
|
||||||
|
i1.QueryInterface(IInterface,i2);
|
||||||
|
writeln('i2 queried the first time');
|
||||||
|
if i2=nil then
|
||||||
|
halt(1);
|
||||||
|
writeln('setting o1.fi to nil');
|
||||||
|
o1.fi:=nil;
|
||||||
|
writeln('o1.fi niled');
|
||||||
|
try
|
||||||
|
i1.QueryInterface(IInterface,i2);
|
||||||
|
writeln('i2 queried the second time');
|
||||||
|
if i2=nil then
|
||||||
|
halt(1);
|
||||||
|
except
|
||||||
|
o1.free;
|
||||||
|
writeln('ok');
|
||||||
|
halt(0);
|
||||||
|
end;
|
||||||
|
halt(1)
|
||||||
|
end.
|
||||||
|
|
39
tests/test/timplements4b.pp
Normal file
39
tests/test/timplements4b.pp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{ %OPT=-gh }
|
||||||
|
{$ifdef fpc}
|
||||||
|
{$mode objfpc}
|
||||||
|
{$endif fpc}
|
||||||
|
uses
|
||||||
|
classes;
|
||||||
|
|
||||||
|
type
|
||||||
|
to1 = class(TObject,IInterface)
|
||||||
|
fi : TInterfacedObject;
|
||||||
|
property i : TInterfacedObject read fi implements IInterface;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
o1 : to1;
|
||||||
|
i1,i2 : IInterface;
|
||||||
|
begin
|
||||||
|
o1:=to1.create;
|
||||||
|
o1.fi:=TInterfacedObject.Create;
|
||||||
|
writeln('o1 and o1.fi created');
|
||||||
|
i1:=o1;
|
||||||
|
i1.QueryInterface(IInterface,i2);
|
||||||
|
writeln('i2 queried the first time');
|
||||||
|
if i2=nil then
|
||||||
|
halt(1);
|
||||||
|
writeln('setting o1.fi to nil');
|
||||||
|
o1.fi:=nil;
|
||||||
|
o1.free;
|
||||||
|
try
|
||||||
|
i1.QueryInterface(IInterface,i2);
|
||||||
|
if i2=nil then
|
||||||
|
halt(1);
|
||||||
|
except
|
||||||
|
writeln('ok');
|
||||||
|
halt(0);
|
||||||
|
end;
|
||||||
|
halt(1)
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user