package body Graph_Tests.Labels is function Getter_Setter_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin if Copy_Graph.Has_Label (2) then return Fail; end if; Copy_Graph.Append_Label (2, Node_Label (+"OMG")); if not Copy_Graph.Has_Label (2) or Copy_Graph.Label (2) /= Node_Label (+"OMG") then return Fail; end if; if Copy_Graph.Has_Label ((7, 2, 5)) then return Fail; end if; Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"EDGY")); if not Copy_Graph.Has_Label ((7, 2, 5)) or Copy_Graph.Label ((7, 2, 5)) /= Edge_Label (+"EDGY") then return Fail; end if; return Pass; end Getter_Setter_Check; function Replace_Label_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin begin Copy_Graph.Replace_Label (2, Node_Label (+"OMG")); return Fail; exception when Constraint_Error => null; end; Copy_Graph.Append_Label (2, Node_Label (+"OMG")); Copy_Graph.Replace_Label (2, Node_Label (+"NOOO")); if Copy_Graph.Label (2) /= Node_Label (+"NOOO") then return Fail; end if; begin Copy_Graph.Replace_Label ((7, 2, 5), Edge_Label (+"EDGY")); return Fail; exception when Constraint_Error => null; end; Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"EDGY")); Copy_Graph.Replace_Label ((7, 2, 5), Edge_Label (+"YEES")); if Copy_Graph.Label ((7, 2, 5)) /= Edge_Label (+"YEES") then return Fail; end if; return Pass; end Replace_Label_Check; function Delete_Label_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin Copy_Graph.Append_Label (2, Node_Label (+"A")); Copy_Graph.Delete_Label (2); if Copy_Graph.Has_Label (2) then return Fail; end if; Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"B")); Copy_Graph.Delete_Label ((7, 2, 5)); if Copy_Graph.Has_Label ((7, 2, 5)) then return Fail; end if; return Pass; end Delete_Label_Check; function Const_Ref_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin Copy_Graph.Append_Label (2, Node_Label (+"A")); Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"B")); begin declare Ref : Graphs.Node_Label_Constant_Reference := Copy_Graph.Constant_Label_Reference (11); begin return Fail; end; exception when Constraint_Error => null; end; begin declare Ref : Graphs.Edge_Label_Constant_Reference := Copy_Graph.Constant_Label_Reference ((5, 11, 2)); begin return Fail; end; exception when Constraint_Error => null; end; if Copy_Graph.Constant_Label_Reference (2) /= Node_Label (+"A") or Copy_Graph.Constant_Label_Reference ((7, 2, 5)) /= Edge_Label (+"B") then return Fail; end if; return Pass; end Const_Ref_Check; function Ref_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin Copy_Graph.Append_Label (2, Node_Label (+"A")); Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"B")); begin declare Ref : Graphs.Node_Label_Reference := Copy_Graph.Label_Reference (11); begin return Fail; end; exception when Constraint_Error => null; end; begin declare Ref : Graphs.Edge_Label_Reference := Copy_Graph.Label_Reference ((5, 11, 2)); begin return Fail; end; exception when Constraint_Error => null; end; if Copy_Graph.Label_Reference (2) /= Node_Label (+"A") or Copy_Graph.Label_Reference ((7, 2, 5)) /= Edge_Label (+"B") then return Fail; end if; Copy_Graph.Label_Reference (2) := Node_Label (+"C"); Copy_Graph.Label_Reference ((7, 2, 5)) := Edge_Label (+"D"); if Copy_Graph.Label_Reference (2) /= Node_Label (+"C") or Copy_Graph.Label_Reference ((7, 2, 5)) /= Edge_Label (+"D") then return Fail; end if; return Pass; end Ref_Check; function Has_Labeled_Edge_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin Copy_Graph.Append_Label ((5, 11, 2), Edge_Label (+"BLAH")); if not Copy_Graph.Has_Labeled_Edge (11, 2) or Copy_Graph.Has_Labeled_Edge (2, 5) or Copy_Graph.Has_Labeled_Edge (2, 11) then return Fail; end if; return Pass; end Has_Labeled_Edge_Check; function Clear_Labels_Check return Test_Result is Copy_Graph : Graphs.Graph := My_Nonempty_Graph; begin Copy_Graph.Append_Label (2, Node_Label (+"A")); Copy_Graph.Append_Label (11, Node_Label (+"B")); Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"C")); Copy_Graph.Append_Label ((5, 11, 2), Edge_Label (+"D")); Copy_Graph.Clear_Labels; if Copy_Graph.Has_Label (2) or Copy_Graph.Has_Label (11) or Copy_Graph.Has_Label ((7, 2, 5)) or Copy_Graph.Has_Label ((5, 11, 2)) then return Fail; end if; return Pass; end Clear_Labels_Check; end Graph_Tests.Labels;