Browse Source

+ Test for automated types.

git-svn-id: trunk@7693 -
daniel 18 years ago
parent
commit
013107d245
2 changed files with 81 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 80 0
      tests/test/cg/tautom.pp

+ 1 - 0
.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

+ 80 - 0
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.