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

Email服务器

开发平台:

Delphi

  1. unit XPTestedUnitUtilsTests;
  2. interface
  3. uses
  4.   TestFrameWork,
  5.   XPTestedUnitUtils;
  6. type
  7.   TXPTestedUnitUtilsTests = class(TTestCase)
  8.   private
  9.     FSectionNode: IXPSectionNode;
  10.   protected
  11.     procedure SetUp; override;
  12.     procedure TearDown; override;
  13.   published
  14.     // Test methods
  15.     procedure TestEmptySectionNode;
  16.     procedure TestOneClassNode;
  17.     procedure TestEnabledDefaults;
  18.   end;
  19. implementation
  20. uses
  21.   SysUtils;
  22. const
  23.   VisibilityStrs: array [TXPClassVisibility] of string
  24.     = ('cvNone', 'cvPrivate', 'cvProtected', 'cvPublic', 'cvPublished');
  25. { TXPTestedUnitUtilsTests }
  26. procedure TXPTestedUnitUtilsTests.SetUp;
  27. begin
  28.   inherited;
  29.   FSectionNode := XPTestedUnitUtils.CreateXPSectionNode(nil, usInterface);
  30. end;
  31. procedure TXPTestedUnitUtilsTests.TearDown;
  32. begin
  33.   inherited;
  34.   FSectionNode := nil;
  35. end;
  36. procedure TXPTestedUnitUtilsTests.TestEmptySectionNode;
  37. var
  38.   ClassNode: IXPParserNode;
  39.   idx: integer;
  40. begin
  41.   CheckEquals(0, FSectionNode.Count, 'Empty Count');
  42.   FSectionNode.Children.Start;
  43.   Check(not FSectionNode.Children.Next(ClassNode), 'Empty Iterator');
  44.   Check(not FSectionNode.DeleteObserver(ClassNode), 'Empty Delete');
  45. //  Check(not FSectionNode.Find(ClassNode, idx), 'Empty Find');
  46.   idx := 0;
  47.   Check(not FSectionNode.GetChild(idx, ClassNode), 'Empty Get[0]');
  48.   idx := -1;
  49.   Check(not FSectionNode.GetChild(idx, ClassNode), 'Empty Get[-1]');
  50.   idx := 1;
  51.   Check(not FSectionNode.GetChild(idx, ClassNode), 'Empty Get[1]');
  52.   FSectionNode.Clear;
  53.   CheckEquals(0, FSectionNode.Count, 'Count after Clear');
  54.   FSectionNode.Children.Start;
  55.   Check(not FSectionNode.Children.Next(ClassNode), 'Iterator:Next after Clear');
  56. end;
  57. procedure TXPTestedUnitUtilsTests.TestEnabledDefaults;
  58. var
  59.   ClassNode: IXPClassNode;
  60.   idx: TXPClassVisibility;
  61. begin
  62.   ClassNode := CreateXPClassNode(FSectionNode, 'TMyClass');
  63.   Check(ClassNode.Enabled, 'default ClassNode.Enabled');
  64.   for idx := cvPrivate to cvPublished do
  65.     CheckEquals(true, ClassNode.Visibilities[idx].Enabled,
  66.       Format('default ClassNode.VisibilityEnabled[%s]', [VisibilityStrs[idx]]));
  67. end;
  68. procedure TXPTestedUnitUtilsTests.TestOneClassNode;
  69. var
  70.   ClassNode: IXPParserNode;
  71.   ClassNodeDup: IXPParserNode;
  72.   idx: integer;
  73. begin
  74.   ClassNode := CreateXPClassNode(nil, 'TMyClass');
  75.   Check(not FSectionNode.InsertChild(-1, ClassNode),
  76.     'Insert range error lower bound');
  77.   Check(not FSectionNode.InsertChild(1, ClassNode),
  78.     'Insert range error upper bound');
  79.   Check(FSectionNode.InsertChild(0, ClassNode),
  80.     'Insert child into empty tree');
  81.   ClassNodeDup := ClassNode;
  82.   CheckEquals(1, FSectionNode.Count, 'Count after Insert');
  83.   CheckEquals(1, FSectionNode.ChildCount, 'ChildCount after Insert');
  84.   Check(FSectionNode.DeleteChild(ClassNode), 'Delete(0)');
  85.   CheckEquals(0, FSectionNode.Count, 'Count after Delete');
  86.   CheckEquals(0, FSectionNode.ChildCount, 'ChildCount after Delete');
  87.   Check(FSectionNode.AddChild(ClassNodeDup), 'Add first node');
  88.   CheckEquals(1, FSectionNode.Count, 'Count after Add');
  89.   Check(not FSectionNode.AddChild(ClassNodeDup), 'Add duplicate');
  90.   CheckEquals(1, FSectionNode.Count, 'Count after duplicate Add');
  91.   Check(not FSectionNode.InsertChild(0, ClassNodeDup), 'Insert duplicate');
  92.   CheckEquals(1, FSectionNode.Count, 'Count after duplicate Insert');
  93.   FSectionNode.Children.Start;
  94.   Check(FSectionNode.Children.Next(ClassNode), 'Iterator:first Next');
  95.   Check(not FSectionNode.Children.Next(ClassNode), 'Iterator:second Next');
  96.   idx := 0;
  97.   Check(FSectionNode.GetChild(idx, ClassNode), 'Get[0]');
  98.   idx := -1;
  99.   Check(not FSectionNode.GetChild(idx, ClassNode),
  100.     'Get[-1] range error lower bound');
  101.   idx := 1;
  102.   Check(not FSectionNode.GetChild(idx, ClassNode),
  103.     'Get[1] range error upper bound');
  104.   Check(FSectionNode.DeleteChild(ClassNodeDup), 'Delete(0)');
  105.   CheckEquals(0, FSectionNode.Count, 'Count after Delete');
  106.   Check(not FSectionNode.DeleteChild(ClassNodeDup), 'Delete(0) repeat');
  107.   CheckEquals(0, FSectionNode.Count, 'Count after Delete repeat');
  108.   Check(FSectionNode.AddChild(ClassNodeDup), 'Add first node');
  109.   CheckEquals(1, FSectionNode.Count, 'Count after Add');
  110.   FSectionNode.Clear;
  111.   CheckEquals(0, FSectionNode.Count, 'Count after Clear');
  112.   FSectionNode.Children.Start;
  113.   Check(not FSectionNode.Children.Next(ClassNode),
  114.     'Iterator:Next after Clear');
  115.   ClassNode := CreateXPClassNode(FSectionNode, 'TMyClass');
  116.   CheckEquals(1, FSectionNode.Count, 'Count after factory construction');
  117.   CheckEquals(1, FSectionNode.ChildCount, 'ChildCount after factory construction');
  118. end;
  119. initialization
  120.   TestFramework.RegisterTest('XPTestedUnitUtilsTests Suite',
  121.     TXPTestedUnitUtilsTests.Suite);
  122. end.