From 82a42674ba64c6386152a5910fd7345a92b135e8 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Thu, 21 May 2020 21:24:25 +1000 Subject: Tests complete, minor bugs fixed --- test/graph_tests-labels.adb | 201 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 test/graph_tests-labels.adb (limited to 'test/graph_tests-labels.adb') diff --git a/test/graph_tests-labels.adb b/test/graph_tests-labels.adb new file mode 100644 index 0000000..b99eb5d --- /dev/null +++ b/test/graph_tests-labels.adb @@ -0,0 +1,201 @@ + + +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; + + -- cgit