📄 testdeque.pas
字号:
tmpDeque.Insert(tmpDeque.ItBegin,FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(tmpDeque.Size,50);
CheckEquals(FDeque.Size,49);
CheckEquals(FDeque.IndexOf(Pointer(3)),1);
CheckEquals(tmpDeque.IndexOf(Pointer(1)),50-1);
Check(FDeque.Items[2]=Pointer(4));
FDeque.Items[3]:=Pointer(17);
Check(FDeque.Items[3]=Pointer(17));
CheckEquals(FDeque.size(),tmpDeque.Size()-1);
Check(not FDeque.IsEquals(tmpDeque));
FDeque.Clear();
FDeque.PushBack(tmpDeque.ItBegin,tmpDeque.ItEnd);
Check(FDeque.IsEquals(tmpDeque));
FDeque.Clear();
for i:=0 to 50-1 do
FDeque.PushBack(Pointer(i));
FDeque.Items[4]:=Pointer(17);
CheckEquals(FDeque.EraseValue(Pointer(17)),2);
CheckEquals(FDeque.Size,48);
Check(FDeque.Back=Pointer(49));
FDeque.PopBack();
Check(FDeque.Back=Pointer(48));
//
FDeque.PushFront(Pointer(21));
Check(FDeque.Front=Pointer(21));
FDeque.PushFront(Pointer(13));
Check(FDeque.Front=Pointer(13));
Check(FDeque.Items[1]=Pointer(21));
FDeque.PopFront();
Check(FDeque.Front=Pointer(21));
FDeque.Assign(10,Pointer(5));
CheckEquals(FDeque.size,10);
Check(FDeque.Items[3]=Pointer(5));
it0:=FDeque.ItBegin;
for i:=0 to 10-1 do
begin
Check(it0.Value=Pointer(5));
it0.Next;
end;
tmpDeque.Assign(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(tmpDeque.size,10);
Check(tmpDeque.Items[3]=Pointer(5));
CheckEquals(FDeque.size,10);
FDeque.Reserve(1000);
CheckEquals(FDeque.size,10);
FDeque.Resize(7);
CheckEquals(FDeque.size,7);
FDeque.Erase(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(FDeque.size,0);
for i:=0 to 15-1 do
FDeque.Insert(FDeque.ItEnd,Pointer(i));
CheckEquals(FDeque.size,15);
CheckEquals(FDeque.ItBegin.Distance(FDeque.ItEnd),15);
CheckEquals(FDeque.ItEnd.Clone().Distance(FDeque.ItEnd),0);
CheckEquals(FDeque.ItEnd.Clone(-1).Distance(FDeque.ItEnd),1);
It0:=FDeque.ItBegin.Clone(5);
CheckEquals(it0.Distance(FDeque.ItEnd),10);
it1:=FDeque.ItEnd.Clone(-5);
CheckEquals(it1.Distance(FDeque.ItEnd),5);
CheckEquals(it0.Distance(it1),5);
FDeque.Erase(It0,it1);
CheckEquals(FDeque.size,10);
Check(FDeque.Items[6]=Pointer(11));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Erase(It0);
CheckEquals(FDeque.size,9);
Check(FDeque.Items[6]=Pointer(12));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,Pointer(31));
CheckEquals(FDeque.size,10);
Check(FDeque.Items[5]=Pointer(31));
Check(FDeque.Items[6]=Pointer(11));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,Pointer(32));
CheckEquals(FDeque.size,11);
Check(FDeque.Items[5]=Pointer(32));
Check(FDeque.Items[6]=Pointer(31));
//}
end;
procedure TTest_Deque.testRecordDeque;
var
FDeque : IPointVector;
tmpDeque : IPointVector;
i : integer;
It0,It1:IPointIterator;
begin
FDeque :=TPointDeque.Create();
Check(FDeque.IsEmpty());
FDeque.Insert(FDeque.ItBegin,Point(5,5));
CheckEquals(FDeque.Size,1);
Check(FDeque.Back.x=5);
Check(FDeque.ItBegin.Value.x=(5));
FDeque.Clear();
Check(FDeque.IsEmpty);
tmpDeque:=IPointVector(FDeque.Clone());
tmpDeque.PushBack(Point(13,11));
Check(FDeque.IsEmpty);
Check(tmpDeque.ItBegin.Value.x=(13));
Check(tmpDeque.ItBegin.Value.y=(11));
FDeque.PushBack(Point(31,31));
tmpDeque:=TPointDeque.Create(FDeque.ItBegin,FDeque.ItEnd);
Check(tmpDeque.Back.x=(31));
FDeque.Clear();
for i:=2 to 50 do
FDeque.PushBack(Point(i,i));
CheckEquals(FDeque.Size,49);
CheckEquals(FDeque.IndexOf(Point(3,3)),1);
tmpDeque.Clear();
tmpDeque.PushBack(Point(1,1));
tmpDeque.Insert(tmpDeque.ItBegin,FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(tmpDeque.IndexOf(Point(1,1)),50-1);
Check(FDeque.Items[2].x=(4));
FDeque.Items[3]:=Point(17,17);
Check(FDeque.Items[3].y=(17));
Check(not FDeque.IsEquals(tmpDeque));
FDeque.Clear();
FDeque.PushBack(tmpDeque.ItBegin,tmpDeque.ItEnd);
Check(FDeque.IsEquals(tmpDeque));
FDeque.Clear();
for i:=0 to 50-1 do
FDeque.PushBack(Point(i,i));
FDeque.Items[4]:=Point(17,17);
CheckEquals(FDeque.EraseValue(Point(17,17)),2);
CheckEquals(FDeque.Size,48);
Check(FDeque.Back.x=Point(49,49).x);
FDeque.PopBack();
Check(FDeque.Back.y=Point(48,48).y);
//
FDeque.PushFront(Point(21,21));
Check(FDeque.Front.y=(21));
FDeque.PushFront(Point(13,13));
Check(FDeque.Front.y=(13));
Check(FDeque.Items[1].x=(21));
FDeque.PopFront();
Check(FDeque.Front.y=(21));
FDeque.Assign(10,Point(5,5));
CheckEquals(FDeque.size,10);
Check(FDeque.Items[3].y=(5));
tmpDeque.Assign(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(tmpDeque.size,10);
Check(tmpDeque.Items[3].x=(5));
CheckEquals(FDeque.size,10);
FDeque.Reserve(1000);
CheckEquals(FDeque.size,10);
FDeque.Resize(7);
CheckEquals(FDeque.size,7);
FDeque.Erase(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(FDeque.size,0);
for i:=0 to 15-1 do
FDeque.Insert(FDeque.ItEnd,Point(i,i));
It0:=FDeque.ItBegin.Clone(5);
it1:=FDeque.ItEnd.Clone(-5);
FDeque.Erase(It0,it1);
CheckEquals(FDeque.size,10);
Check(FDeque.Items[6].y=(11));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Erase(It0);
CheckEquals(FDeque.size,9);
Check(FDeque.Items[6].x=(12));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,Point(31,31));
CheckEquals(FDeque.size,10);
Check(FDeque.Items[5].y=(31));
Check(FDeque.Items[6].x=(11));
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,Point(32,32));
CheckEquals(FDeque.size,11);
Check(FDeque.Items[5].x=(32));
Check(FDeque.Items[6].y=(31));
//
FDeque.Clear();
FDeque.PushFront(3,Point(12,12));
CheckEquals(FDeque.size,3);
Check(FDeque.Items[2].y=(12));
FDeque.PushFront(5,Point(11,11));
CheckEquals(FDeque.size,8);
Check(FDeque.Items[0].x=(11));
Check(FDeque.Items[4].x=(11));
Check(FDeque.Items[5].y=(12));
Check(FDeque.Items[7].x=(12));
//}
end;
procedure TTest_Deque.testStrDeque;
var
FDeque : IStrDeque;
tmpDeque : IStrDeque;
i : integer;
It0,It1 : IStrIterator;
begin
FDeque :=TStrDeque.Create();
Check(FDeque.IsEmpty());
FDeque.Insert(FDeque.ItBegin,'5');
CheckEquals(FDeque.Size,1);
Check(FDeque.Back='5');
Check(FDeque.ItBegin.Value='5');
FDeque.Clear();
Check(FDeque.IsEmpty);
tmpDeque:=IStrDeque(FDeque.Clone());
tmpDeque.PushBack('13');
Check(FDeque.IsEmpty);
Check(tmpDeque.ItBegin.Value='13');
FDeque.PushBack('31');
tmpDeque:=TStrDeque.Create(FDeque.ItBegin,FDeque.ItEnd);
Check(tmpDeque.Back='31');
FDeque.Clear();
for i:=2 to 50 do
FDeque.PushBack(inttostr(i));
tmpDeque.Clear();
tmpDeque.PushBack('1');
tmpDeque.Insert(tmpDeque.ItBegin,FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(FDeque.Size,49);
CheckEquals(FDeque.IndexOf('3'),1);
CheckEquals(tmpDeque.IndexOf('1'),50-1);
Check(FDeque.Items[2]='4');
FDeque.Items[3]:='17';
Check(FDeque.Items[3]='17');
Check(not FDeque.IsEquals(tmpDeque));
FDeque.Clear();
FDeque.PushBack(tmpDeque.ItBegin,tmpDeque.ItEnd);
Check(FDeque.IsEquals(tmpDeque));
FDeque.Clear();
for i:=0 to 50-1 do
FDeque.PushBack(inttostr(i));
FDeque.Items[4]:='17';
CheckEquals(FDeque.EraseValue('17'),2);
CheckEquals(FDeque.Size,48);
Check(FDeque.Back='49');
FDeque.PopBack();
Check(FDeque.Back='48');
//
FDeque.PushFront('21');
Check(FDeque.Front='21');
FDeque.PushFront('13');
Check(FDeque.Front='13');
Check(FDeque.Items[1]='21');
FDeque.PopFront();
Check(FDeque.Front='21');
FDeque.Assign(10,'5');
CheckEquals(FDeque.size,10);
Check(FDeque.Items[3]='5');
tmpDeque.Assign(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(tmpDeque.size,10);
Check(tmpDeque.Items[3]='5');
CheckEquals(FDeque.size,10);
FDeque.Reserve(1000);
CheckEquals(FDeque.size,10);
FDeque.Resize(7);
CheckEquals(FDeque.size,7);
FDeque.Erase(FDeque.ItBegin,FDeque.ItEnd);
CheckEquals(FDeque.size,0);
for i:=0 to 15-1 do
FDeque.Insert(FDeque.ItEnd,inttostr(i));
It0:=FDeque.ItBegin.Clone(5);
it1:=FDeque.ItEnd.Clone(-5);
FDeque.Erase(It0,it1);
CheckEquals(FDeque.size,10);
Check(FDeque.Items[6]='11');
It0:=FDeque.ItBegin.Clone(5);
FDeque.Erase(It0);
CheckEquals(FDeque.size,9);
Check(FDeque.Items[6]='12');
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,'31');
CheckEquals(FDeque.size,10);
Check(FDeque.Items[5]='31');
Check(FDeque.Items[6]='11');
It0:=FDeque.ItBegin.Clone(5);
FDeque.Insert(It0,'32');
CheckEquals(FDeque.size,11);
Check(FDeque.Items[5]='32');
Check(FDeque.Items[6]='31');
//
FDeque.Clear();
FDeque.PushFront(3,'12');
CheckEquals(FDeque.size,3);
Check(FDeque.Items[2]='12');
FDeque.PushFront(5,'11');
CheckEquals(FDeque.size,8);
Check(FDeque.Items[0]='11');
Check(FDeque.Items[4]='11');
Check(FDeque.Items[5]='12');
Check(FDeque.Items[7]='12');
end;
initialization
RegisterTest(TTest_Deque.Suite);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -