anchor.diff:  
    TabTestCase = class(TTestCase)
      protected
  +    {$IFDEF WINZIPTESTS}
  +      FSpawnComplete  : TSimpleEvent;
  +      procedure SpawnErrorEvent(Sender : TObject; Error : Word);
  +      procedure SpawnCompletedEvent(Sender : TObject);
  +      procedure SpawnTimeOutEvent(Sender : TObject);
  +      procedure ExecuteAndWait(ExeName,Param : String;TimeOut : Integer = 0); // Exception if failure
  +    {$ENDIF}
       function GetTestFileDir : string;
       function GetTestTempDir : string;
       function GetWindowsDir : string;
       procedure CheckStreamMatch(aStream1,aStream2 : TStream;Msg : String);
       procedure CheckFileExists(aFileName : String);
       procedure Setup; override;
  +    procedure Teardown; override;
       procedure FilesInDirectory(const aDir : String;FileList : TStringList);
       procedure CheckDirMatch(aDir1,aDir2 : string;IgnoreMissingFiles: Boolean = true);
       // Call this routine with GREAT Caution!!!!
  
positive.code:    begin
      CreateDir(TestTempDir);
     end;
  end;
  
  { TabCompTestCase }
  
negative.code:      end;
     end; { If File Found with FindFirst }
  end;
  {$IFDEF WINZIPTESTS}
  procedure TabTestCase.ExecuteAndWait(ExeName, Param: String;TimeOut : Integer);
  var
    Spawn : TStSpawnApplication;
    WR    : TWaitResult;
  begin
     // Make sure Application trying to execute is found
     CheckFileExists(ExeName);
     Spawn := TStSpawnApplication.Create(nil);
     try
       Spawn.FileName := ExeName;
       Spawn.RunParameters := Param;
       Spawn.NotifyWhenDone := True;
       Spawn.TimeOut := TimeOut;
       Spawn.OnSpawnError := SpawnErrorEvent;
       Spawn.OnCompleted := SpawnCompletedEvent;
       Spawn.OnTimeOut := SpawnTimeOutEvent;
       Spawn.Execute;
       WR := FSpawnComplete.WaitFor(1000);
       While WR <> wrSignaled do
         begin
            Application.ProcessMessages;
            Check(NOT (WR = wrAbandoned), 'Event has been Abandoonded');
            Check(NOT (WR = wrError),'Event has Errored out');
            WR := FSpawnComplete.WaitFor(1000);
         end;
     finally
        Spawn.Free;
     end;
  end;
  {$ENDIF}
  
  procedure TabTestCase.FilesInDirectory(const aDir: String;
    FileList: TStringList);
  