diff options
author | Jed Barber <jjbarber@y7mail.com> | 2020-05-21 21:24:25 +1000 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2020-05-21 21:24:25 +1000 |
commit | 82a42674ba64c6386152a5910fd7345a92b135e8 (patch) | |
tree | be453540ca12e0679f9ea741f99c592696ce3b96 /test/graph_tests-context.adb | |
parent | d07979218ea80c58e64148d9638ed3e6195ff6ed (diff) |
Tests complete, minor bugs fixed
Diffstat (limited to 'test/graph_tests-context.adb')
-rw-r--r-- | test/graph_tests-context.adb | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/test/graph_tests-context.adb b/test/graph_tests-context.adb new file mode 100644 index 0000000..be0c6af --- /dev/null +++ b/test/graph_tests-context.adb @@ -0,0 +1,179 @@ + + +with Ada.Text_IO; +use Ada.Text_IO; + + +with Ada.Containers; + + +package body Graph_Tests.Context is + + + function Neighbors_Check + return Test_Result + is + function Perm is new Is_Permutation (Node_ID, Positive, Graphs.Node_Array); + begin + if not Perm (My_Neigh_Graph.Neighbors (2), (1 => 3)) or + not Perm (My_Neigh_Graph.Neighbors (3), (2, 4)) or + not Perm (My_Complex_Graph.Neighbors (7), (5, 7)) or + not Perm (My_Nonempty_Graph.Neighbors (5), No_Nodes) + then + return Fail; + end if; + return Pass; + end Neighbors_Check; + + + function Parents_Check + return Test_Result + is + function Perm is new Is_Permutation (Node_ID, Positive, Graphs.Node_Array); + begin + if not Perm (My_Complex_Graph.Parents (9), (6, 7)) or + not Perm (My_Complex_Graph.Parents (7), (5, 7)) or + not Perm (My_Complex_Graph.Parents (1), No_Nodes) + then + return Fail; + end if; + return Pass; + end Parents_Check; + + + function Children_Check + return Test_Result + is + function Perm is new Is_Permutation (Node_ID, Positive, Graphs.Node_Array); + begin + if not Perm (My_Complex_Graph.Children (1), (5, 2)) or + not Perm (My_Complex_Graph.Children (2), (3, 4)) or + not Perm (My_Complex_Graph.Children (7), (5, 7, 9, 10)) or + not Perm (My_Complex_Graph.Children (10), No_Nodes) + then + return Fail; + end if; + return Pass; + end Children_Check; + + + function Outbound_Check + return Test_Result + is + function Perm is new Is_Permutation (Graphs.Edge_Type, Positive, Graphs.Edge_Array); + begin + if not Perm (My_Complex_Graph.Outbound (1), ((1, 1, 2), (5, 1, 5))) or + not Perm (My_Complex_Graph.Outbound (7), + ((10, 7, 9), (11, 7, 10), (12, 7, 7), (13, 7, 5))) or + not Perm (My_Complex_Graph.Outbound (10), No_Edges) + then + return Fail; + end if; + return Pass; + end Outbound_Check; + + + function Inbound_Check + return Test_Result + is + function Perm is new Is_Permutation (Graphs.Edge_Type, Positive, Graphs.Edge_Array); + begin + if not Perm (My_Complex_Graph.Inbound (1), No_Edges) or + not Perm (My_Complex_Graph.Inbound (7), ((7, 5, 7), (12, 7, 7))) or + not Perm (My_Complex_Graph.Inbound (9), ((9, 6, 9), (10, 7, 9))) + then + return Fail; + end if; + return Pass; + end Inbound_Check; + + + function Between_Check + return Test_Result + is + function Perm is new Is_Permutation (Graphs.Edge_Type, Positive, Graphs.Edge_Array); + begin + if not Perm (My_Complex_Graph.Between (1, 10), No_Edges) or + not Perm (My_Complex_Graph.Between (2, 4), ((3, 2, 4), (4, 2, 4))) + then + return Fail; + end if; + return Pass; + end Between_Check; + + + function Outdegree_Check + return Test_Result + is + use type Ada.Containers.Count_Type; + begin + if My_Complex_Graph.Outdegree (1) /= 2 or + My_Complex_Graph.Outdegree (10) /= 0 or + My_Complex_Graph.Outdegree (2) /= 3 + then + return Fail; + end if; + return Pass; + end Outdegree_Check; + + + function Indegree_Check + return Test_Result + is + use type Ada.Containers.Count_Type; + begin + if My_Complex_Graph.Indegree (1) /= 0 or + My_Complex_Graph.Indegree (7) /= 2 or + My_Complex_Graph.Indegree (2) /= 1 + then + return Fail; + end if; + return Pass; + end Indegree_Check; + + + function Degree_Check + return Test_Result + is + use type Ada.Containers.Count_Type; + begin + if My_Complex_Graph.Degree (1) /= 2 or + My_Complex_Graph.Degree (10) /= 1 or + My_Complex_Graph.Degree (2) /= 4 + then + return Fail; + end if; + return Pass; + end Degree_Check; + + + function Has_Edge_Check + return Test_Result is + begin + if not My_Complex_Graph.Has_Edge (1, 2) or + not My_Complex_Graph.Has_Edge (2, 4) or + My_Complex_Graph.Has_Edge (1, 10) + then + return Fail; + end if; + return Pass; + end Has_Edge_Check; + + + function Has_Neighbor_Check + return Test_Result is + begin + if not My_Neigh_Graph.Has_Neighbor (2, 3) or + not My_Neigh_Graph.Has_Neighbor (3, 2) or + My_Neigh_Graph.Has_Neighbor (2, 4) or + not My_Complex_Graph.Has_Neighbor (7, 7) + then + return Fail; + end if; + return Pass; + end Has_Neighbor_Check; + + +end Graph_Tests.Context; + + |