浏览代码

pastojs: added test for unit cycle

git-svn-id: trunk@37729 -
Mattias Gaertner 7 年之前
父节点
当前提交
082c17fd93
共有 1 个文件被更改,包括 33 次插入1 次删除
  1. 33 1
      packages/pastojs/tests/tcmodules.pas

+ 33 - 1
packages/pastojs/tests/tcmodules.pas

@@ -175,7 +175,7 @@ type
 
   TTestModule = class(TCustomTestModule)
   Published
-    // Resolvers
+    // program/units
     Procedure TestEmptyProgram;
     Procedure TestEmptyProgramUseStrict;
     Procedure TestEmptyUnit;
@@ -185,6 +185,7 @@ type
     Procedure TestDottedUnitExpr;
     Procedure Test_ModeFPCFail;
     Procedure Test_ModeSwitchCBlocksFail;
+    Procedure TestUnit_Intf1Impl2Intf1;
 
     // vars/const
     Procedure TestVarInt;
@@ -679,6 +680,10 @@ var
 begin
   //writeln('TTestModule.FindUnit START Unit="',aUnitName,'"');
   Result:=nil;
+  if (Module.ClassType=TPasModule)
+      and (CompareText(Module.Name,aUnitName)=0) then
+    exit(Module);
+
   for i:=0 to ResolverCount-1 do
     begin
     CurEngine:=Resolvers[i];
@@ -1695,6 +1700,33 @@ begin
   ConvertProgram;
 end;
 
+procedure TTestModule.TestUnit_Intf1Impl2Intf1;
+begin
+  AddModuleWithIntfImplSrc('unit1.pp',
+    LinesToStr([
+    'type number = longint;']),
+    LinesToStr([
+    'uses test1;',
+    'procedure DoIt;',
+    'begin',
+    '  i:=3;',
+    'end;']));
+
+  StartUnit(true);
+  Add([
+  'interface',
+  'uses unit1;',
+  'var i: number;',
+  'implementation']);
+  ConvertUnit;
+  CheckSource('TestUnit_Intf1Impl2Intf1',
+    LinesToStr([
+    'this.i = 0;',
+    '']),
+    LinesToStr([
+    '']) );
+end;
+
 procedure TTestModule.TestVarInt;
 begin
   StartProgram(false);