summaryrefslogtreecommitdiff
path: root/test/graph_tests-labels.adb
diff options
context:
space:
mode:
Diffstat (limited to 'test/graph_tests-labels.adb')
-rw-r--r--test/graph_tests-labels.adb201
1 files changed, 201 insertions, 0 deletions
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;
+
+