XPDUnitTestModuleWizard.pas
上传用户:yjb1804
上传日期:2021-01-30
资源大小:3105k
文件大小:8k
源码类别:

Email服务器

开发平台:

Delphi

  1. unit XPDUnitTestModuleWizard;
  2. {
  3.  $Source: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitTestModuleWizard.pas,v $
  4.  $Revision: 1.2 $
  5.  $Date: 2004/05/03 15:07:16 $
  6.  Last amended by $Author: pvspain $
  7.  $State: Exp $
  8.  XPDUnitTestModuleWizard:
  9.  Copyright (c) 2002,2003 by The Excellent Programming Company Pty Ltd
  10.  (Australia) (ABN 27 005 394 918). All rights reserved.
  11.  Contact Paul Spain via email: paul@xpro.com.au
  12.  This unit is free software; you can redistribute it and/or
  13.  modify it under the terms of the GNU Lesser General Public
  14.  License as published by the Free Software Foundation; either
  15.  version 2.1 of the License, or (at your option) any later version.
  16.  This unit is distributed in the hope that it will be useful,
  17.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19.  Lesser General Public License for more details.
  20.  You should have received a copy of the GNU Lesser General Public
  21.  License along with this unit; if not, the license can be viewed at:
  22.  http://www.gnu.org/copyleft/lesser.html
  23.  or write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  24.  Boston, MA  02111-1307  USA
  25. }
  26. interface
  27. uses
  28.   ToolsAPI;
  29. // procedure Register;
  30. function TestModuleWizard: IOTAFormWizard;
  31. implementation
  32. uses
  33.   XPDUnitTestModule,
  34.   XPDUnitCommon,
  35.   XPDUnitSetup,
  36.   XPTextTemplates,      // IXPDUnitTextTemplates
  37.   IniFiles,
  38.   SysUtils,             // FmtStr()
  39.   Windows,              // HICON, LoadIcon(), ...
  40.   XP_OTAUtils,          // TXP_OTAFile, CreateModule()
  41.   XP_OTACreators,       // TXP_OTAUnitCreator
  42.   XP_OTAWizards,        // TXP_OTARepositoryWizard
  43.   XPTestedUnitUtils;    // IXPParserTree
  44. // IMPORTANT: Include resources for this unit
  45. {$R *.res}
  46. const CVSID: string = '$Header: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitTestModuleWizard.pas,v 1.2 2004/05/03 15:07:16 pvspain Exp $';
  47. const DisplayName = 'DUnit TestModule';
  48. const AuthorName = 'Paul Spain';
  49. const WizardComment = 'Unit test cases';
  50. resourcestring rsTestModulePage = 'New';
  51. type
  52. //////////////////////////////////////////////////////////////////////////////
  53. ///     Wizard declaration
  54. //////////////////////////////////////////////////////////////////////////////
  55.   // NOTE: We must implement IOTAFormWizard or IOTAProjectWizard  to get
  56.   // added to the ObjectRepository, even though they are empty
  57.   // interfaces...
  58.   TTestModuleWizard = class(TXP_OTARepositoryWizard, IOTAFormWizard)
  59.   protected
  60.     // IOTAWizard implementation
  61.     function GetName: string; override;
  62.     procedure Execute; override;
  63.     // IOTARepositoryWizard implementation
  64.     function GetAuthor: string; override;
  65.     function GetComment: string; override;
  66.     function GetPage: string; override;
  67.     function GetGlyph: TXPIconHandle; override;
  68.   end;
  69. //////////////////////////////////////////////////////////////////////////////
  70. ///     TTestModuleCreator declaration
  71. //////////////////////////////////////////////////////////////////////////////
  72.   TTestModuleCreator = class(TXP_OTAUnitCreator)
  73.   private
  74.     FSource: IXP_OTAFile;
  75.   protected
  76.     // Create and return the new unit's file
  77.     function NewImplSource(const ModuleIdent, FormIdent,
  78.      AncestorIdent: string): IOTAFile; override;
  79.     constructor Create(const ATestClasses: IXPParserTree;
  80.       const AParameters: IXPDUnitParameters;
  81.       const ABehaviours: IXPDUnitBehaviours);
  82.   end;
  83. //////////////////////////////////////////////////////////////////////////////
  84. ///     TTestModuleSource declaration
  85. //////////////////////////////////////////////////////////////////////////////
  86.   TTestModuleSource = class(TXP_OTAFile)
  87.   private
  88.     FTextTemplates: IXPDUnitTextTemplates;
  89.   protected
  90.     // Return the complete text of the test module.
  91.     function GetSource: string; override;
  92.   public
  93.     constructor Create(const ATestClasses: IXPParserTree;
  94.       const AParameters: IXPDUnitParameters;
  95.       const ABehaviours: IXPDUnitBehaviours); reintroduce;
  96.   end;
  97. //////////////////////////////////////////////////////////////////////////////
  98. ///     Wizard entry points
  99. //////////////////////////////////////////////////////////////////////////////
  100. {
  101. procedure Register;
  102.   begin
  103.   ToolsAPI.RegisterPackageWizard(CreateXPDUnitTestModuleWizard)
  104.   end;
  105. }
  106. function TestModuleWizard: IOTAFormWizard;
  107. begin
  108.   Result := TTestModuleWizard.Create;
  109. end;
  110. //////////////////////////////////////////////////////////////////////////////
  111. ///   Wizard implementation
  112. //////////////////////////////////////////////////////////////////////////////
  113. procedure TTestModuleWizard.Execute;
  114. var
  115.   DUnitProject: IOTAProject;
  116.   Parameters: IXPDUnitParameters;
  117.   TestClasses: IXPParserTree;
  118.   Behaviours: IXPDUnitBehaviours;
  119. const
  120.   IsUnit = true;
  121. begin
  122.   if XPDUnitTestModule.ShowXPDUnitTestModuleForm(TestClasses,
  123.     Parameters) then
  124.   begin
  125.     Behaviours := XPDUnitSetup.CreateXPDUnitBehaviours;
  126.     XP_OTAUtils.CreateModule(
  127.       TTestModuleCreator.Create(TestClasses, Parameters, Behaviours));
  128.     if Behaviours.AddCurrentToProject
  129.       and XP_OTAUtils.GetCurrentProject(DUnitProject) then
  130.       // Add unit under test (current unit) to project
  131.       DUnitProject.AddFile(SysUtils.Format('%s%s.pas',
  132.         [Parameters.Values[dpTestedUnitPath],
  133.         Parameters.Values[dpTestedUnitName]]), IsUnit);
  134.   end;
  135. end;
  136. function TTestModuleWizard.GetAuthor: string;
  137. begin
  138.   Result := AuthorName;
  139. end;
  140. function TTestModuleWizard.GetComment: string;
  141. begin
  142.   Result := WizardComment;
  143. end;
  144. function TTestModuleWizard.GetGlyph: TXPIconHandle;
  145. begin
  146.   Result := Windows.LoadIcon(SysInit.HInstance, TestModuleIconResource);
  147. end;
  148. function TTestModuleWizard.GetName: string;
  149. begin
  150.   Result := DisplayName;
  151. end;
  152. function TTestModuleWizard.GetPage: string;
  153. begin
  154.   Result := rsTestModulePage;
  155. end;
  156. //////////////////////////////////////////////////////////////////////////////
  157. ///     TTestModuleCreator implementation
  158. //////////////////////////////////////////////////////////////////////////////
  159. constructor TTestModuleCreator.Create(const ATestClasses: IXPParserTree;
  160.   const AParameters: IXPDUnitParameters; const ABehaviours: IXPDUnitBehaviours);
  161. begin
  162.   System.Assert((AParameters <> nil) and (ABehaviours <> nil));
  163.   inherited Create(SysUtils.Format('%s%s.pas',
  164.     [AParameters.Values[dpUnitPath], AParameters.Values[dpUnitName]]));
  165.   FSource := TTestModuleSource.Create(ATestClasses, AParameters, ABehaviours);
  166. end;
  167. function TTestModuleCreator.NewImplSource(const ModuleIdent, FormIdent,
  168.   AncestorIdent: string): IOTAFile;
  169. begin
  170.   FSource.FileName := ModuleIdent;
  171.   Result := FSource;
  172. end;
  173. //////////////////////////////////////////////////////////////////////////////
  174. ///     TTestModuleSource implementation
  175. //////////////////////////////////////////////////////////////////////////////
  176. constructor TTestModuleSource.Create(const ATestClasses: IXPParserTree;
  177.   const AParameters: IXPDUnitParameters; const ABehaviours: IXPDUnitBehaviours);
  178. begin
  179.   System.Assert((ATestClasses <> nil) and (AParameters <> nil)
  180.     and (ABehaviours <> nil));
  181.   inherited Create(SysUtils.Format('%s%s.pas',
  182.     [AParameters.Values[dpUnitPath], AParameters.Values[dpUnitName]]));
  183.   FTextTemplates := XPTextTemplates.CreateXPDUnitTextTemplates(ATestClasses,
  184.     AParameters, ABehaviours);
  185. end;
  186. function TTestModuleSource.GetSource: string;
  187. begin
  188.   Result := FTextTemplates.GetTestModuleText;
  189. end;
  190. end.