From 013107d2450e143243daf3b66dc305613ca3329d Mon Sep 17 00:00:00 2001 From: daniel Date: Sat, 16 Jun 2007 20:16:05 +0000 Subject: [PATCH] + Test for automated types. git-svn-id: trunk@7693 - --- .gitattributes | 1 + tests/test/cg/tautom.pp | 80 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 tests/test/cg/tautom.pp diff --git a/.gitattributes b/.gitattributes index 691e7c9c39..d1e1962ea9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6453,6 +6453,7 @@ tests/test/cg/taddset2.pp svneol=native#text/plain tests/test/cg/tadint64.pp svneol=native#text/plain tests/test/cg/tassign1.pp svneol=native#text/plain tests/test/cg/tassign2.pp svneol=native#text/plain +tests/test/cg/tautom.pp svneol=native#text/x-pascal tests/test/cg/tcalcla1.pp svneol=native#text/plain tests/test/cg/tcalcon1.pp svneol=native#text/plain tests/test/cg/tcalcst1.pp svneol=native#text/plain diff --git a/tests/test/cg/tautom.pp b/tests/test/cg/tautom.pp new file mode 100644 index 0000000000..50d64927d7 --- /dev/null +++ b/tests/test/cg/tautom.pp @@ -0,0 +1,80 @@ +{%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.