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

Email服务器

开发平台:

Delphi

  1. unit XPDUnitCommon;
  2. {
  3.  $Source: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitCommon.pas,v $
  4.  $Revision: 1.2 $
  5.  $Date: 2004/05/03 15:07:16 $
  6.  Last amended by $Author: pvspain $
  7.  $State: Exp $
  8.  XPDUnitCommon:
  9.  Copyright (c) 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. const
  28.   DUnitWizardRegistryKey = 'SoftwareEPCDUnitWizard3.0';
  29.   
  30.   // platform-neutral values
  31. {$IFDEF LINUX}
  32.   XPEndLine = #10;
  33. {$ELSE}
  34.   XPEndLine = #13#10;
  35. {$ENDIF}
  36.   // Resource identifiers
  37.   ProjectIconResource = 'DUNIT_PROJECT_ICON';
  38.   ProjectTextResource = 'DUNIT_PROJECTSOURCE_TEXT';
  39.   ProjectMenuResource = 'DUNIT_PROJECT_MENU';
  40.   TestModuleIconResource = 'DUNIT_TESTMODULE_ICON';
  41.   TestModuleMenuResource = 'DUNIT_TESTMODULE_MENU';
  42.   TestModuleTextResource = 'DUNIT_TESTMODULE_TEXT';
  43.   TestClassMenuResource = 'DUNIT_TESTCLASS_MENU';
  44.   TestClassDeclTextResource = 'DUNIT_TESTCLASSDECL_TEXT';
  45.   TestMethodDeclTextResource = 'DUNIT_TESTMETHODDECL_TEXT';
  46.   TestSuiteRegTextResource = 'DUNIT_TESTSUITEREG_TEXT';
  47.   UsesTestedUnitTextResource = 'DUNIT_USESTESTEDUNIT_TEXT';
  48.   // Code template resource file lengths
  49.   // NOTE: These values **must** be adjusted after any editing of the
  50.   // resource source files, eg TestModule.txt for TestModuleTextLength
  51.   ProjectTextLength = 558;
  52.   TestModuleTextLength = 160;
  53.   TestClassDeclTextLength = 210;
  54.   TestMethodDeclTextLength = 28;
  55.   TestSuiteRegTextLength = 73;
  56.   UsesTestedUnitTextLength = 20;
  57.   
  58.   // Parameter prefix character
  59.   XPDUnitParameterPrefix = '#';
  60.   // Macro prefix character
  61.   XPDUnitMacroPrefix = '$';
  62.   //
  63.   // Special parameters in test module code template
  64.   //
  65.   // Test method block substitution identifier
  66.   TestMethodDeclParameter = XPDUnitParameterPrefix + 'TESTMETHODDECLBLOCK';
  67.   // Test class block substitution identifier
  68.   TestClassDeclParameter = XPDUnitParameterPrefix + 'TESTCLASSDECLBLOCK';
  69.   // test suite registration block substitution identifier
  70.   TestSuiteRegParameter = XPDUnitParameterPrefix + 'TESTSUITEREGBLOCK';
  71.   // uses tested unit substitution identifier
  72.   UsesTestedUnitParameter = XPDUnitParameterPrefix + 'USESTESTEDUNIT';
  73.   // Inifile values
  74.   sBehaviours = 'Behaviour';
  75.   iAddCurrentToProject = 'AddCurrentToProject';
  76.   dAddCurrentToProject = true;
  77.   iAddCurrentToTestModule = 'AddCurrentToTestModule';
  78.   dAddCurrentToTestModule = true;
  79.   iTestCurrentGlobalClasses = 'TestCurrentGlobalClasses';
  80.   dTestCurrentGlobalClasses = true;
  81.   iTestCurrentLocalClasses = 'TestCurrentLocalClasses';
  82.   dTestCurrentLocalClasses = false;
  83.   iAddProjectToGroup = 'AddProjectToGroup';
  84.   dAddProjectToGroup = true;
  85.   iModuleAddPublishedMethods = 'ModuleAddPublishedMethods';
  86.   dModuleAddPublishedMethods = true;
  87.   iModuleAddPublicMethods = 'ModuleAddPublicMethods';
  88.   dModuleAddPublicMethods = true;
  89.   iModuleAddProtectedMethods = 'ModuleAddProtectedMethods';
  90.   dModuleAddProtectedMethods = false;
  91.   iClassAddPublishedMethods = 'ClassAddPublishedMethods';
  92.   dClassAddPublishedMethods = true;
  93.   iClassAddPublicMethods = 'ClassAddPublicMethods';
  94.   dClassAddPublicMethods = true;
  95.   iClassAddProtectedMethods = 'ClassAddProtectedMethods';
  96.   dClassAddProtectedMethods = true;
  97.   iClassAddPrivateMethods = 'ClassAddPrivateMethods';
  98.   dClassAddPrivateMethods = true;
  99. type
  100.   TXPDUnitParameter = (dpTestedUnitName, dpTestedUnitPath, dpUnitName,
  101.     dpUnitPath, dpClassName, dpMethodName, dpProjectName, dpProjectPath);
  102.   TXPDUnitVarParameter = dpUnitName..dpProjectPath;
  103.   IXPDUnitParameters = interface
  104.     ['{714203DA-44F5-47CC-BE92-1FD0FA0A773F}']
  105.     function Identifiers(const Parameter: TXPDUnitParameter): string;
  106.     function Descriptions(const Parameter: TXPDUnitParameter): string;
  107.     function Templates(const Parameter: TXPDUnitParameter): string;
  108.     procedure ClearValues;
  109.     function EvaluateValues(const TestedClassName: string = '';
  110.       const TestedMethodName: string = ''): boolean;
  111.     function GetValue(const Parameter: TXPDUnitParameter): string;
  112.     procedure SetValue(const Parameter: TXPDUnitParameter;
  113.       const Value: string);
  114.     function TestClassName(const TestedClassName: string): string;
  115.     function TestMethodName(const TestedMethodName: string): string;
  116.     property Values[const Parameter: TXPDUnitParameter]: string
  117.       read GetValue write SetValue; default;
  118.   end;
  119.   IXPDUnitBehaviours = interface
  120.     ['{DC9BEF7E-2934-4D4F-B145-27681D66AF42}']
  121.     function AddProjectToGroup: boolean;
  122.     function AddCurrentToTestModule: boolean;
  123.     function AddCurrentToProject: boolean;
  124.     function ModuleAddCurrentPublishedMethods: boolean;
  125.     function ModuleAddCurrentPublicMethods: boolean;
  126.     function ModuleAddCurrentProtectedMethods: boolean;
  127.     function ClassAddCurrentPublishedMethods: boolean;
  128.     function ClassAddCurrentPublicMethods: boolean;
  129.     function ClassAddCurrentProtectedMethods: boolean;
  130.     function ClassAddCurrentPrivateMethods: boolean;
  131.   end;
  132.   TXPDUnitNodeImage = (niSection, niClass, niVisibility, niMethod);
  133.   // siNone is a kludge. A TTreeNode.StateIndex of 0 causes the state image
  134.   // not to be drawn, This maps directly into a CommonControls struct so it is
  135.   // a Microsoft requirement (0 = not visible)? or bug? Note that we must also
  136.   // have an unused image at index 0 in the associated TImageList
  137.   TXPDUnitStateImage = (siNone, siDisabled, siParentDisabled, siEnabled);
  138. // Config file shared by setup form (read/write) and IXPDUnitParameters (read).
  139. function XPDUnitSetupFile: string;
  140. implementation
  141. uses
  142.   SysUtils,       // ExtractFilePath
  143.   Forms;          // Application
  144. const CVSID: string = '$Header: /cvsroot/dunit/dunit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/XPDUnitCommon.pas,v 1.2 2004/05/03 15:07:16 pvspain Exp $';
  145. function XPDUnitSetupFile: string;
  146. begin
  147.   // This will live in Delphi's Bin subdirectory
  148.   // TODO: Problems with this location under Windows XP with non-Administrator
  149.   // accounts?
  150.   Result := SysUtils.ExtractFilePath(Application.ExeName) + 'dunitwizard.ini';
  151. end;
  152. end.