fpc/tests/test/cg/tautom.pp
daniel 013107d245 + Test for automated types.
git-svn-id: trunk@7693 -
2007-06-16 20:16:05 +00:00

81 lines
1.3 KiB
ObjectPascal

{%OPT=-glh}
program tautom;
type wstr_varnt_record=record
s:widestring;
v:variant;
end;
wstr_varnt_object=object
s:wstr_varnt_record;
end;
wstr_array1=array[0..99] of wstr_varnt_record;
wstr_array2=array[0..99] of wstr_varnt_object;
procedure do_test;
var a,b:wstr_array1;
c,d:wstr_array2;
i:0..99;
begin
for i:=low(a) to high(a) do
begin
a[i].s:='Ninja';
a[i].v:='Samurai';
end;
b:=a;
for i:=low(a) to high(a) do
begin
if a[i].s<>'Ninja' then
halt(255);
if b[i].s<>'Ninja' then
halt(255);
if a[i].v<>'Samurai' then
halt(255);
if b[i].v<>'Samurai' then
halt(255);
end;
for i:=0 to 99 do
begin
c[i].s.s:=a[i].s;
c[i].s.v:=a[i].v;
end;
d:=c;
for i:=low(d) to high(d) do
begin
if c[i].s.s<>'Ninja' then
halt(255);
if d[i].s.s<>'Ninja' then
halt(255);
if c[i].s.v<>'Samurai' then
halt(255);
if d[i].s.v<>'Samurai' then
halt(255);
end;
end;
var before,after:sizeuint;
begin
with getfpcheapstatus do
before:=currheapused;
writeln('Used heap before ',before);
do_test;
with getfpcheapstatus do
after:=currheapused;
writeln('Used heap after ',after);
if before<>after then
exitcode:=255;
end.