blob: 8cd11dcd97d95ff7fe29714a5c3ffc4ed3d06a23 [file] [log] [blame]
% Regression tests for graph
+ Load general modules
= Load contribution layer
from scapy.contrib.automotive.scanner.graph import *
import pickle
import io
+ Graph tests
= Basic test
g = Graph()
g.add_edge(("1", "1"))
g.add_edge(("1", "2"))
g.add_edge(("2", "3"))
g.add_edge(("3", "4"))
g.add_edge(("4", "4"))
assert "1" in g.nodes
assert "2" in g.nodes
assert "3" in g.nodes
assert "4" in g.nodes
assert len(g.nodes) == 4
assert g.dijkstra(g, "1", "4") == ["1", "2", "3", "4"]
= Shortest path test
g = Graph()
g.add_edge(("1", "1"))
g.add_edge(("1", "2"))
g.add_edge(("2", "3"))
g.add_edge(("3", "4"))
g.add_edge(("4", "4"))
assert g.dijkstra(g, "1", "4") == ["1", "2", "3", "4"]
g.add_edge(("1", "4"))
assert g.dijkstra(g, "1", "4") == ["1", "4"]
g.add_edge(("3", "5"))
g.add_edge(("5", "6"))
print(g.dijkstra(g, "1", "6"))
assert g.dijkstra(g, "1", "6") == ["1", "2", "3", "5", "6"] or \
g.dijkstra(g, "1", "6") == ['1', '4', '3', '5', '6']
g.add_edge(("2", "5"))
print(g.dijkstra(g, "1", "6"))
assert g.dijkstra(g, "1", "6") == ["1", "2", "5", "6"]
= graph add transition function
g.add_edge(("4", "6"), transition_function=(str, str))
assert g.dijkstra(g, "1", "6") == ["1", "4", "6"]
= graph pickle
f = io.BytesIO()
pickle.dump(g, f)
unp = pickle.loads(f.getvalue())
assert unp.dijkstra(g, "1", "6") == ["1", "4", "6"]
f1, f2 = unp.get_transition_tuple_for_edge(("4", "6"))
assert f1==f2
assert "1" == f1(1)