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

Email服务器

开发平台:

Delphi

  1. { $Id: TListTestCase.pas,v 1.5 2004/10/17 10:42:50 neuromancer Exp $ }
  2. {: DUnit: An XTreme testing framework for Delphi programs.
  3.    @author  The DUnit Group.
  4.    @version $Revision: 1.5 $
  5. }
  6. (*
  7.  * The contents of this file are subject to the Mozilla Public
  8.  * License Version 1.1 (the "License"); you may not use this file
  9.  * except in compliance with the License. You may obtain a copy of
  10.  * the License at http://www.mozilla.org/MPL/
  11.  *
  12.  * Software distributed under the License is distributed on an "AS
  13.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  14.  * implied. See the License for the specific language governing
  15.  * rights and limitations under the License.
  16.  *
  17.  * The Original Code is DUnit.
  18.  *
  19.  * The Initial Developer of the Original Code are Serge Beaumont,
  20.  * Jeff Moore and Chris Houghten.
  21.  * Portions created The Initial Developers are Copyright (C) 2000.
  22.  * Portions created by The DUnit Group are Copyright (C) 2000-2004.
  23.  * All rights reserved.
  24.  *
  25.  * Contributor(s):
  26.  * Jeff Moore <JeffMoore@users.sourceforge.net>
  27.  * Chris Houghten <choughte@users.sourceforge.net>
  28.  * Serge Beaumont <beaumose@users.sourceforge.net>
  29.  * Kris Golko <neuromancer@users.sourceforge.net>
  30.  * The DUnit group at SourceForge <http://dunit.sourceforge.net>
  31.  *)
  32. unit TListTestCase;
  33. interface
  34. uses
  35.   Classes, SysUtils,
  36.   TestFrameWork;
  37. type
  38.   {Tests the TList class.}
  39.   TTestCaseList = class(TTestCase)
  40.   private
  41.     {Add an instance variable for every fixture (i.e. starting situation)
  42.      you wish to use.}
  43.     FEmpty: TList;
  44.     FFull: TList;
  45.   protected
  46.     procedure SetUp; override;
  47.     procedure TearDown; override;
  48.   published
  49.     {Testing procedures should be published so RTTI can find their
  50.      method address with the MethodAddress method.}
  51.     {$IFDEF CLR}[Test]{$ENDIF}
  52.     procedure testAdd;
  53.     {$IFDEF CLR}[Test]{$ENDIF}
  54.     procedure testIndexTooHigh;
  55.     {$IFDEF CLR}[Test]{$ENDIF}
  56.     procedure testWillGoWrong;
  57.     {$IFDEF CLR}[Test]{$ENDIF}
  58.     procedure testOopsAnError;
  59.   end;
  60. implementation
  61. { TTestCaseList }
  62. //------------------------------------------------------------------------------
  63. procedure TTestCaseList.SetUp;
  64. begin
  65.   FEmpty := TList.Create;
  66.   FFull := TList.Create;
  67.   FFull.Add(TObject.Create);
  68.   FFull.Add(TObject.Create);
  69. end;
  70. //------------------------------------------------------------------------------
  71. procedure TTestCaseList.TearDown;
  72. var
  73.   I: Integer;
  74. begin
  75.   for I := 0 to FEmpty.Count - 1 do
  76.     TObject(FEmpty.Items[I]).Free;
  77.   FEmpty.Free;
  78.   for I := 0 to FFull.Count - 1 do
  79.     TObject(FFull.Items[I]).Free;
  80.   FFull.Free;
  81. end;
  82. //------------------------------------------------------------------------------
  83. {
  84. This test checks if an added item is actually in the list.
  85. }
  86. procedure TTestCaseList.TestAdd;
  87. var
  88.   AddObject: TObject;
  89. begin
  90.   AddObject := TObject.Create;
  91.   FEmpty.Add(AddObject);
  92.   // The following calls check to see if everything went OK.
  93.   // When check fails, it will end up in the TestResult as a failure.
  94.   Check(FEmpty.Count = 1);
  95.   Check(FEmpty.Items[0] = AddObject);
  96. end;
  97. //------------------------------------------------------------------------------
  98. {
  99. This test checks if an error occurs when an out of bounds situation occurs.
  100. This case shows that it is possible to test the exceptions of the test
  101. subject.
  102. }
  103. procedure TTestCaseList.TestIndexTooHigh;
  104. begin
  105.   try
  106.     FFull.Items[2];
  107.     
  108.     Check(false, 'There should have been an EListError.');
  109.   except on E: Exception do
  110.     begin
  111.       Check(E is EListError);
  112.     end;
  113.   end;
  114. end;
  115. //------------------------------------------------------------------------------
  116. {
  117. This test is only to show what will happen if an unhandled exception occurs during testing.
  118. }
  119. procedure TTestCaseList.TestOopsAnError;
  120. begin
  121.   raise Exception.Create('This error message will show up in TestResult');
  122. end;
  123. //------------------------------------------------------------------------------
  124. {
  125. This test is only to show what will happen if a failure occurs.
  126. }
  127. procedure TTestCaseList.TestWillGoWrong;
  128. begin
  129.   Check(false, 'This failure message will show up in the TestResult.');
  130. end;
  131. //------------------------------------------------------------------------------
  132. initialization
  133.   RegisterTest('', TTestCaseList.Suite);
  134. end.