Esempio n. 1
0
 def test_edges(self):
     json_graph = {"label": "my graph", "graph": {"A": ["B"], "B": []}}
     graph = Graph(input_graph=json.dumps(json_graph))
     self.assertEqual(json_graph['label'], graph.get_label())
     self.assertEqual(False, graph.is_directed())
     self.assertEqual(json_graph['graph'], graph.get_graph())
     self.assertEqual([Edge('A', 'B')], graph.edges())
Esempio n. 2
0
 def test_read_graph_from_file(self):
     json_graph = {"label": "my graph", "graph": {"A": ["B"], "B": []}}
     with open(path.join(self.test_dir, 'test.txt'), 'w') as out_file:
         out_file.write(json.dumps(json_graph))
     graph = Graph(input_file=str(path.join(self.test_dir, 'test.txt')))
     self.assertEqual(json_graph["label"], graph.get_label())
     self.assertEqual(False, graph.is_directed())
     self.assertEqual(json_graph["graph"], graph.get_graph())
Esempio n. 3
0
    def test_save_to_json(self):
        answer = "{\"label\": \"my graph\", \"directed\": false," \
                 " \"graph\": {\"A\": [\"B\"], \"B\": []}}"
        json_graph = {"label": "my graph", "graph": {"A": ["B"], "B": []}}
        graph = Graph(input_graph=json.dumps(json_graph))
        save_to_json(graph, self.test_dir)

        outfile = path.join(self.test_dir, graph.get_label() + ".json")
        with open(outfile) as dot_file:
            dot_lines = "".join(dot_file.readlines())
        self.assertEqual(dot_lines, answer)
Esempio n. 4
0
def save_to_dot(graph: Graph, out_dir: str):
    """

    :param graph: the graph to render in dot
    :param out_dir: the absolute path of the gv file to write
    :return:
    """
    if not graph.is_directed():
        dot = GraphViz(comment=graph.get_label())
        for node in graph:
            dot.node(node, node)
            for edge in graph[node]:
                dot.edge(node, edge)

        dot.render(path.join(out_dir, f"{graph.get_label()}.gv"), view=False)
Esempio n. 5
0
    def test_save_to_graphviz(self):
        answer = """// my graph
graph {
	A [label=A]
	A -- B
	B [label=B]
}
"""
        json_graph = {"label": "my graph", "graph": {"A": ["B"], "B": []}}
        graph = Graph(input_graph=json.dumps(json_graph))
        save_to_dot(graph, self.test_dir)

        outfile = path.join(self.test_dir, graph.get_label() + ".gv")
        with open(outfile) as dot_file:
            dot_lines = "".join(dot_file.readlines())
        self.assertEqual(dot_lines, answer)
Esempio n. 6
0
def save_to_json(graph: Graph, out_dir):
    """

    :param graph: the graph to write to json
    :param out_dir: the absolute path to the dir to write the file
    :return:
    """
    g_dict = {
        "label": graph.get_label(),
        "directed": graph.is_directed(),
        "graph": graph.get_graph()
    }

    with open(path.join(out_dir, f"{graph.get_label()}.json"),
              'w',
              encoding="utf8") as out:
        out.write(json.dumps(g_dict))
Esempio n. 7
0
 def test_name(self):
     graph = Graph("graph")
     self.assertEqual('graph', graph.get_label())