• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% Regression tests for graph
2
3+ Load general modules
4
5= Load contribution layer
6
7from scapy.contrib.automotive.scanner.graph import *
8import pickle
9import io
10
11+ Graph tests
12
13= Basic test
14
15g = Graph()
16g.add_edge(("1", "1"))
17g.add_edge(("1", "2"))
18g.add_edge(("2", "3"))
19g.add_edge(("3", "4"))
20g.add_edge(("4", "4"))
21
22assert "1" in g.nodes
23assert "2" in g.nodes
24assert "3" in g.nodes
25assert "4" in g.nodes
26assert len(g.nodes) == 4
27assert g.dijkstra(g, "1", "4") == ["1", "2", "3", "4"]
28
29= Shortest path test
30
31g = Graph()
32g.add_edge(("1", "1"))
33g.add_edge(("1", "2"))
34g.add_edge(("2", "3"))
35g.add_edge(("3", "4"))
36g.add_edge(("4", "4"))
37
38assert g.dijkstra(g, "1", "4") == ["1", "2", "3", "4"]
39
40g.add_edge(("1", "4"))
41
42assert g.dijkstra(g, "1", "4") == ["1", "4"]
43
44g.add_edge(("3", "5"))
45g.add_edge(("5", "6"))
46
47print(g.dijkstra(g, "1", "6"))
48
49assert g.dijkstra(g, "1", "6") == ["1", "2", "3", "5", "6"] or \
50       g.dijkstra(g, "1", "6") == ['1', '4', '3', '5', '6']
51
52g.add_edge(("2", "5"))
53
54print(g.dijkstra(g, "1", "6"))
55
56assert g.dijkstra(g, "1", "6") == ["1", "2", "5", "6"]
57
58= graph add transition function
59
60g.add_edge(("4", "6"), transition_function=(str, str))
61
62assert g.dijkstra(g, "1", "6") == ["1", "4", "6"]
63
64= graph pickle
65
66f = io.BytesIO()
67
68pickle.dump(g, f)
69unp = pickle.loads(f.getvalue())
70
71assert unp.dijkstra(g, "1", "6") == ["1", "4", "6"]
72
73f1, f2 = unp.get_transition_tuple_for_edge(("4", "6"))
74assert f1==f2
75assert "1" == f1(1)
76