Hosted by
 |
with Ada.Text_IO;
with String_Lists;
use String_Lists;
procedure Test_Suite is
L : List;
procedure Null_List is
begin
null;
pragma Assert(Count(L) = 0);
pragma Assert(Index(L) = 0);
pragma Assert(Empty(L));
pragma Assert(End_Of_List(L));
end Null_List;
procedure Construct is
begin
pragma Assert(Count(L) = 0);
Push(L, "one");
pragma Assert(Count(L) = 1);
pragma Assert(Index(L) = 0);
Unshift(L, "zero");
pragma Assert(Count(L) = 2);
pragma Assert(Index(L) = 0);
Push(L, "two");
pragma Assert(Count(L) = 3);
pragma Assert(Index(L) = 0);
Unshift(L, "");
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 0);
pragma Assert(not Empty(L));
pragma Assert(End_Of_List(L));
end Construct;
procedure Iterate is
begin
Reset(L);
pragma Assert(End_Of_List(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 0);
pragma Assert(Next(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 1);
pragma Assert(Current(L) = "");
pragma Assert(not End_Of_List(L));
Next(L);
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 2);
pragma Assert(Current(L) = "zero");
pragma Assert(not End_Of_List(L));
pragma Assert(Next(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 3);
pragma Assert(Current(L) = "one");
pragma Assert(not End_Of_List(L));
Next(L);
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 4);
pragma Assert(Current(L) = "two");
pragma Assert(not End_Of_List(L));
pragma Assert(not Next(L));
pragma Assert(End_Of_List(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 0);
end Iterate;
procedure Remove is
begin
Reset(L);
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 0);
pragma Assert(Next(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 1);
pragma Assert(Current(L) = "");
Remove_Current(L);
pragma Assert(Count(L) = 3);
pragma Assert(Index(L) = 1);
pragma Assert(Current(L) = "zero");
Next(L);
pragma Assert(Count(L) = 3);
pragma Assert(Index(L) = 2);
pragma Assert(Current(L) = "one");
Remove_Current(L);
pragma Assert(Count(L) = 2);
pragma Assert(Index(L) = 2);
pragma Assert(Current(L) = "two");
end Remove;
procedure Insert is
begin
Reset(L);
pragma Assert(Count(L) = 2);
pragma Assert(Index(L) = 0);
pragma Assert(Next(L));
pragma Assert(Count(L) = 2);
pragma Assert(Index(L) = 1);
Insert_Before_Current(L, "");
pragma Assert(Count(L) = 3);
pragma Assert(Index(L) = 2);
pragma Assert(Current(L) = "zero");
Insert_After_Current(L, "one");
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 2);
pragma Assert(Current(L) = "zero");
pragma Assert(Next(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 3);
pragma Assert(Current(L) = "one");
pragma Assert(Next(L));
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 4);
pragma Assert(Current(L) = "two");
end Insert;
procedure Update is
begin
Update_Current(L, "three");
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 4);
pragma Assert(Current(L) = "three");
Update_Current(L, "two");
pragma Assert(Count(L) = 4);
pragma Assert(Index(L) = 4);
pragma Assert(Current(L) = "two");
end Update;
begin
Null_List;
Construct;
Iterate;
Iterate; -- again
Remove;
Insert;
Update;
Iterate; -- again
pragma Debug(Ada.Text_IO.Put_Line("all tests succeeded"));
end Test_Suite;
|