summaryrefslogtreecommitdiff
path: root/test/graph_tests-search.adb
diff options
context:
space:
mode:
Diffstat (limited to 'test/graph_tests-search.adb')
-rw-r--r--test/graph_tests-search.adb83
1 files changed, 62 insertions, 21 deletions
diff --git a/test/graph_tests-search.adb b/test/graph_tests-search.adb
index d72ce67..9933c7d 100644
--- a/test/graph_tests-search.adb
+++ b/test/graph_tests-search.adb
@@ -64,23 +64,21 @@ package body Graph_Tests.Search is
is
Copy_Graph : Graphs.Graph := My_Nonempty_Graph;
begin
- if Copy_Graph.Contains (Graphs.No_Node) or
- Copy_Graph.Contains (Graphs.No_Node, Node_Label (+"ABC")) or
- Copy_Graph.Contains (Node_ID (20)) or
+ if Copy_Graph.Contains (Node_ID (20)) or
not Copy_Graph.Contains (Node_ID (2)) or
Copy_Graph.Contains (Edge_ID (20)) or
not Copy_Graph.Contains (Edge_ID (7)) or
- Copy_Graph.Contains ((99, 99, 99)) or
- not Copy_Graph.Contains ((7, 2, 5)) or
- Copy_Graph.Contains (2, Node_Label (+"ABC")) or
- Copy_Graph.Contains ((7, 2, 5), Edge_Label (+"DEF"))
+ Copy_Graph.Contains (Graphs.Edge_Type'(99, 99, 99)) or
+ not Copy_Graph.Contains (Graphs.Edge_Type'(7, 2, 5)) or
+ Copy_Graph.Contains (Graphs.Labeled_Node_Type'(2, Node_Label (+"ABC"))) or
+ Copy_Graph.Contains (Graphs.Labeled_Edge_Type'((7, 2, 5), Edge_Label (+"DEF")))
then
return Fail;
end if;
Copy_Graph.Append_Label (2, Node_Label (+"ABC"));
Copy_Graph.Append_Label ((7, 2, 5), Edge_Label (+"DEF"));
- if not Copy_Graph.Contains (2, Node_Label (+"ABC")) or
- not Copy_Graph.Contains ((7, 2, 5), Edge_Label (+"DEF"))
+ if not Copy_Graph.Contains (Graphs.Labeled_Node_Type'(2, Node_Label (+"ABC"))) or
+ not Copy_Graph.Contains (Graphs.Labeled_Edge_Type'((7, 2, 5), Edge_Label (+"DEF")))
then
return Fail;
end if;
@@ -116,25 +114,29 @@ package body Graph_Tests.Search is
Branch_1 : Graphs.Cursor := Copy_Graph.To_Cursor (5);
Branch_2 : Graphs.Cursor := Copy_Graph.To_Cursor (2);
begin
- if Graphs.Contains_In_Subgraph (Branch_1, Graphs.No_Node) or
- Graphs.Contains_In_Subgraph (Branch_1, Graphs.No_Node, Node_Label (+"ABC")) or
- Graphs.Contains_In_Subgraph (Branch_1, Node_ID (2)) or
+ if Graphs.Contains_In_Subgraph (Branch_1, Node_ID (2)) or
not Graphs.Contains_In_Subgraph (Branch_1, Node_ID (10)) or
- Graphs.Contains_In_Subgraph (Branch_1, (2, 2, 3)) or
- not Graphs.Contains_In_Subgraph (Branch_1, (13, 7, 5)) or
+ Graphs.Contains_In_Subgraph (Branch_1, Graphs.Edge_Type'(2, 2, 3)) or
+ not Graphs.Contains_In_Subgraph (Branch_1, Graphs.Edge_Type'(13, 7, 5)) or
Graphs.Contains_In_Subgraph (Branch_2, Node_ID (99)) or
- Graphs.Contains_In_Subgraph (Branch_2, (1, 99, 99)) or
- Graphs.Contains_In_Subgraph (Branch_1, Node_ID (5), Node_Label (+"ABC")) or
- Graphs.Contains_In_Subgraph (Branch_1, (13, 7, 5), Edge_Label (+"DEF"))
+ Graphs.Contains_In_Subgraph (Branch_2, Graphs.Edge_Type'(1, 99, 99)) or
+ Graphs.Contains_In_Subgraph
+ (Branch_1, Graphs.Labeled_Node_Type'(Node_ID (5), Node_Label (+"ABC"))) or
+ Graphs.Contains_In_Subgraph
+ (Branch_1, Graphs.Labeled_Edge_Type'((13, 7, 5), Edge_Label (+"DEF")))
then
return Fail;
end if;
Copy_Graph.Append_Label (5, Node_Label (+"ABC"));
Copy_Graph.Append_Label ((13, 7, 5), Edge_Label (+"DEF"));
- if Graphs.Contains_In_Subgraph (Branch_2, Node_ID (5), Node_Label (+"ABC")) or
- not Graphs.Contains_In_Subgraph (Branch_1, Node_ID (5), Node_Label (+"ABC")) or
- Graphs.Contains_In_Subgraph (Branch_2, (13, 7, 5), Edge_Label (+"DEF")) or
- not Graphs.Contains_In_Subgraph (Branch_1, (13, 7, 5), Edge_Label (+"DEF"))
+ if Graphs.Contains_In_Subgraph
+ (Branch_2, Graphs.Labeled_Node_Type'(Node_ID (5), Node_Label (+"ABC"))) or
+ not Graphs.Contains_In_Subgraph
+ (Branch_1, Graphs.Labeled_Node_Type'(Node_ID (5), Node_Label (+"ABC"))) or
+ Graphs.Contains_In_Subgraph
+ (Branch_2, Graphs.Labeled_Edge_Type'((13, 7, 5), Edge_Label (+"DEF"))) or
+ not Graphs.Contains_In_Subgraph
+ (Branch_1, Graphs.Labeled_Edge_Type'((13, 7, 5), Edge_Label (+"DEF")))
then
return Fail;
end if;
@@ -169,6 +171,45 @@ package body Graph_Tests.Search is
end Contains_Label_Subgraph_Check;
+ function Contains_Path_Check
+ return Test_Result
+ is
+ Node_Path_In : Graphs.Node_Path := (1, 2, 3);
+ Node_Path_Out : Graphs.Node_Path := (87, 88, 89, 100);
+ Edge_Path_In : Graphs.Edge_Path := ((5, 1, 5), (6, 5, 6), (8, 6, 8));
+ Edge_Path_Out : Graphs.Edge_Path := ((1, 1, 4), (5, 4, 7));
+ begin
+ if not My_Complex_Graph.Contains_Path (Node_Path_In) or
+ My_Complex_Graph.Contains_Path (Node_Path_Out) or
+ not My_Complex_Graph.Contains_Path (Edge_Path_In) or
+ My_Complex_Graph.Contains_Path (Edge_Path_Out)
+ then
+ return Fail;
+ end if;
+ return Pass;
+ end Contains_Path_Check;
+
+
+ function Contains_Path_Subgraph_Check
+ return Test_Result
+ is
+ Node_Path_In : Graphs.Node_Path := (5, 7, 7, 5);
+ Node_Path_Out : Graphs.Node_Path := (1, 2, 3);
+ Edge_Path_In : Graphs.Edge_Path := ((6, 5, 6), (8, 6, 8));
+ Edge_Path_Out : Graphs.Edge_Path := ((1, 1, 2), (2, 2, 3));
+ Position : Graphs.Cursor := My_Complex_Graph.To_Cursor (5);
+ begin
+ if not Graphs.Contains_Path_In_Subgraph (Position, Node_Path_In) or
+ Graphs.Contains_Path_In_Subgraph (Position, Node_Path_Out) or
+ not Graphs.Contains_Path_In_Subgraph (Position, Edge_Path_In) or
+ Graphs.Contains_Path_In_Subgraph (Position, Edge_Path_Out)
+ then
+ return Fail;
+ end if;
+ return Pass;
+ end Contains_Path_Subgraph_Check;
+
+
function Iterate_Check
return Test_Result
is