⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpriorityqueue.pas

📁 Delphi Generic Algorytms library - Maps, Lists, Hashmaps, Datastructures.
💻 PAS
字号:
unit TestPriorityQueue;

interface
uses
  Classes, SysUtils,
  TestFramework,
  TestExtensions,
  DGL_Pointer,DGL_String,DGL_Interface,
  _DGL_Object,_DGL_Point;

type

  TTest_PriorityQueue = class(TTestCase)
  private
  function SelfCompareFunction(const Value0,Value1:string):Boolean;
  public
    procedure Setup; override;
    procedure TearDown; override;
  published
    procedure testPriorityQueue();
    procedure testPriorityQueue2();
  end;
  
implementation

{ TTest_PriorityQueue }

function TTest_PriorityQueue.SelfCompareFunction(const Value0,
  Value1: string): Boolean;
begin
  result:=AnsiUpperCase(Value0)>AnsiUpperCase(Value1);
end;

procedure TTest_PriorityQueue.Setup;
begin
  inherited;

end;

procedure TTest_PriorityQueue.TearDown;
begin
  inherited;

end;

procedure TTest_PriorityQueue.testPriorityQueue;
var
  PriorityQueue : IStrPriorityQueue;
  sk : IStrPriorityQueue;
  i : integer;
begin
  PriorityQueue:=TStrPriorityQueue.Create();
  Check( PriorityQueue.IsEmpty);
  PriorityQueue:=TStrPriorityQueue.Create();
  PriorityQueue.Push('2');
  PriorityQueue.Push('6');
  PriorityQueue.Push('4');
  PriorityQueue.Push('0');
  PriorityQueue.Push('2');
  CheckEquals( PriorityQueue.Size,5);
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'4');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'2');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'2');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'0');
  CheckEquals( PriorityQueue.Size,1);
  PriorityQueue.Clear();
  CheckEquals( PriorityQueue.Size,0);

  PriorityQueue.Push('1');
  CheckEquals(PriorityQueue.Top,'1');
  PriorityQueue.Push('4');
  PriorityQueue.Push('3');
  CheckEquals(PriorityQueue.Top,'4');
  CheckEquals(PriorityQueue.Size,3);

  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.Top,'3');
  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.Top,'1');
  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.size,0);

  PriorityQueue.Push('3');
  PriorityQueue.Clear();
  CheckEquals(PriorityQueue.size,0);

  PriorityQueue.Clear() ;
  for i:=0 to 100-1 do
    PriorityQueue.Push(inttostr(i));
  Check(not PriorityQueue.IsEmpty);
  Sk:=PriorityQueue.Clone;
  CheckEquals(Sk.Size,100);
  Check(PriorityQueue.IsEquals(sk));

end;

procedure TTest_PriorityQueue.testPriorityQueue2;
var
  PriorityQueue : IStrPriorityQueue;
begin
  PriorityQueue:=TStrPriorityQueue.Create(self.SelfCompareFunction);
  Check( PriorityQueue.IsEmpty);
  PriorityQueue:=TStrPriorityQueue.Create(self.SelfCompareFunction);
  PriorityQueue.Push('c');
  PriorityQueue.Push('g');
  PriorityQueue.Push('E');
  PriorityQueue.Push('a');
  PriorityQueue.Push('B');
  CheckEquals( PriorityQueue.Size,5);
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'B');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'c');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'E');
  PriorityQueue.Pop();
  CheckEquals( PriorityQueue.Top,'g');
  CheckEquals( PriorityQueue.Size,1);
  PriorityQueue.Clear();
  CheckEquals( PriorityQueue.Size,0);

  PriorityQueue.Push('1');
  CheckEquals(PriorityQueue.Top,'1');
  PriorityQueue.Push('4');
  PriorityQueue.Push('3');
  CheckEquals(PriorityQueue.Top,'1');
  CheckEquals(PriorityQueue.Size,3);

  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.Top,'3');
  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.Top,'4');
  PriorityQueue.Pop();
  CheckEquals(PriorityQueue.size,0);

  PriorityQueue.Push('3');
  PriorityQueue.Clear();
  CheckEquals(PriorityQueue.size,0);
end;

initialization
  RegisterTest(TTest_PriorityQueue.Suite);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -