diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm2/core/graph.py | 7 | ||||
| -rw-r--r-- | test/core/graph.py | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/miasm2/core/graph.py b/miasm2/core/graph.py index 49fc0817..f38f71d6 100644 --- a/miasm2/core/graph.py +++ b/miasm2/core/graph.py @@ -1,5 +1,6 @@ from collections import defaultdict, namedtuple + class DiGraph(object): """Implementation of directed graph""" @@ -25,6 +26,12 @@ class DiGraph(object): def edges(self): return self._edges + def __eq__(self, graph): + if not isinstance(graph, self.__class__): + return False + return all((self._nodes == graph.nodes(), + sorted(self._edges) == sorted(graph.edges()))) + def add_node(self, node): if node in self._nodes: return diff --git a/test/core/graph.py b/test/core/graph.py index 86175c91..269b721b 100644 --- a/test/core/graph.py +++ b/test/core/graph.py @@ -192,3 +192,13 @@ assert(sccs == {frozenset({6}), frozenset({7, 8}), frozenset({3}), frozenset({1, 2, 4, 5, 9})}) + +# Equality +graph = DiGraph() +graph.add_edge(1, 2) +graph.add_edge(2, 3) +graph2 = DiGraph() +graph2.add_edge(2, 3) +graph2.add_edge(1, 2) +assert graph == graph2 + |