-- with Ada.Text_IO, Ada.Exceptions; -- use Ada.Text_IO, Ada.Exceptions; package body Graph_Tests.Basic is function To_Graph_Check return Test_Result is Illegal_Graph : Graphs.Graph; begin begin Illegal_Graph := Graphs.To_Graph (No_Nodes, Some_Edges); return Fail; exception when Constraint_Error => null; end; begin Illegal_Graph := Graphs.To_Graph (Dup_Nodes, No_Edges); return Fail; exception when Constraint_Error => null; end; return Pass; end To_Graph_Check; function Is_Empty_Check return Test_Result is begin if My_Empty_Graph.Is_Empty and not My_Nonempty_Graph.Is_Empty then return Pass; else return Fail; end if; end Is_Empty_Check; function Clear_Check return Test_Result is My_Cleared_Graph : Graphs.Graph := My_Nonempty_Graph; begin My_Cleared_Graph.Clear; if My_Cleared_Graph.Is_Empty then return Pass; else return Fail; end if; end Clear_Check; function Cursor_Element_Check return Test_Result is use type Graphs.Cursor; My_Cursor : Graphs.Cursor; begin if Graphs.Has_Element (Graphs.No_Element) or Graphs.Element (Graphs.No_Element) /= Graphs.Extended_Node_ID_Type'First then return Fail; end if; My_Cursor := My_Nonempty_Graph.To_Cursor (2); if not Graphs.Has_Element (My_Cursor) or Graphs.Element (My_Cursor) /= 2 then return Fail; end if; My_Cursor := My_Empty_Graph.To_Cursor (1); if My_Cursor /= Graphs.No_Element then return Fail; end if; return Pass; end Cursor_Element_Check; function Equals_Check return Test_Result is use type Graphs.Graph; Other_Nonempty_Graph : Graphs.Graph := Graphs.To_Graph (Some_Nodes, Some_Edges); begin if not (Graphs.Empty_Graph = My_Empty_Graph) or My_Empty_Graph = My_Nonempty_Graph or not (My_Nonempty_Graph = Other_Nonempty_Graph) then return Fail; else return Pass; end if; end Equals_Check; function Assign_Check return Test_Result is use type Graphs.Graph; Target_Graph : Graphs.Graph := Graphs.Empty_Graph; begin if Target_Graph = My_Nonempty_Graph then return Fail; end if; Target_Graph.Assign (My_Nonempty_Graph); if not (Target_Graph = My_Nonempty_Graph) then return Fail; end if; return Pass; end Assign_Check; function Copy_Check return Test_Result is use type Graphs.Graph; begin if My_Nonempty_Graph.Copy = My_Empty_Graph or not (My_Nonempty_Graph.Copy = My_Nonempty_Graph) then return Fail; end if; return Pass; end Copy_Check; function Move_Check return Test_Result is use type Graphs.Graph; Source_Graph : Graphs.Graph := My_Nonempty_Graph; Target_Graph : Graphs.Graph := Graphs.Empty_Graph; begin Target_Graph.Move (Source_Graph); if not (Source_Graph = Graphs.Empty_Graph) or not (Target_Graph = My_Nonempty_Graph) then return Fail; end if; return Pass; end Move_Check; end Graph_Tests.Basic;