def test_paths(self): g = nx.Graph() g.add_edge(Node(0, 0), Node(1, 0)) g.add_edge(Node(3, 0), Node(2, 0)) g.add_edge(Node(2, 0), Node(1, 0)) g.add_edge(Node(2, 0), Node(2, 2)) g.add_edge(Node(3, 0), Node(3, 2)) opengraph = OpenGraph(g) assert len(opengraph.paths()) == 2
def test_min_max(self): graph = nx.Graph() graph.add_node(Node(0,-1)) graph.add_node(Node(1,1)) graph.add_node(Node(-2,4)) graph.add_node(Node(3,-5)) opengraph = OpenGraph(graph) assert opengraph.min() == (-2, -5) assert opengraph.max() == (3, 4)
def test_draw_open_graph(self): self.__backend.set_canvas_size(80, 80) self.__backend.create_canvas() graph = nx.Graph() open_graph = OpenGraph(graph) self.__backend.push_surface() self.__backend.draw_open_graph(open_graph) self.__backend.export_to_file( TestUtils.OPEN_GRAPH_EMPTY_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal( TestUtils.OPEN_GRAPH_EMPTY_GENERATED_IMAGE, TestUtils.OPEN_GRAPH_EMPTY_EXPECTED_IMAGE) graph.add_edge(Node(10, 10), Node(20, 10)) graph.add_edge(Node(20, 10), Node(20, 20)) graph.add_edge(Node(20, 20), Node(10, 20)) graph.add_edge(Node(10, 20), Node(10, 10)) open_graph = OpenGraph(graph) self.__backend.push_surface() self.__backend.draw_open_graph(open_graph) self.__backend.export_to_file( TestUtils.OPEN_GRAPH_CLOSED_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal( TestUtils.OPEN_GRAPH_CLOSED_GENERATED_IMAGE, TestUtils.OPEN_GRAPH_CLOSED_EXPECTED_IMAGE) graph = nx.Graph() edge_list = [((10, 10), (40, 10)), ((40, 10), (60, 10)), ((40, 10), (50, 40)), ((50, 40), (20, 30)), ((50, 40), (50, 60))] for edge in edge_list: graph.add_edge(Node(*edge[0]), Node(*edge[1])) graph.add_edge(Node(50, 60, 'curve'), Node(20, 80, 'curve')) graph.add_edge(Node(20, 80, 'curve'), Node(40, 90, 'curve')) open_graph = OpenGraph(graph) self.__backend.push_surface() self.__backend.draw_open_graph(open_graph) self.__backend.export_to_file(TestUtils.OPEN_GRAPH_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal(TestUtils.OPEN_GRAPH_GENERATED_IMAGE, TestUtils.OPEN_GRAPH_EXPECTED_IMAGE)
def test_run(self): parser = StyleParser() arrow_style = Style('_arrow_', 'fill', ['red'], 1) fill_style = Style('.*', 'fill', ['blue'], 0) line_style = Style('_line_', 'fill', ['green'], 2) frame_style = Style('.*', 'frame', [[0.1, 0.2, 0.3]], 0) custom_fill_style = Style('(abc)|(def)', 'fill', [[0.3, 0.2, 0.3]], 3) custom_line_style = Style('line', 'fill', [[0.4, 0.3, 0.3]], 3) custom_frame_style = Style('(abc)|(def)', 'frame', [[0.5, 0.2, 0.3]], 3) polygon1 = Polygon([Node(0, 0)]) opengraph1 = OpenGraph() opengraph2 = OpenGraph() opengraph2.add_name('line') arrow = Arrow() background = Background() polygon2 = Polygon([Node(0, 0)]) polygon2.add_name('abc') polygon3 = Polygon([Node(0, 0)]) polygon3.add_name('def') objects = [arrow_style, fill_style, line_style, frame_style, custom_fill_style, custom_line_style, custom_frame_style, polygon1, polygon2, polygon3, opengraph1, opengraph2, arrow, background] parser.run([], objects) assert arrow.style().color() == arrow_style.color(), str(arrow.style().color()) + " != " + str(arrow_style.color()) assert polygon1.style().color() == fill_style.color(), str(polygon1.style().color()) + " != " + str(fill_style.color()) assert polygon1.frame().style().color() == frame_style.color() assert opengraph1.style().color() == line_style.color() assert opengraph2.style().color() == custom_line_style.color() assert polygon2.style().color() == custom_fill_style.color() assert polygon3.style().color() == custom_fill_style.color() assert polygon2.frame().style().color() == custom_frame_style.color() assert polygon3.frame().style().color() == custom_frame_style.color()
def test_draw_open_graph_shadow(self): self.__backend.set_canvas_size(50, 150) self.__backend.create_canvas() graph = nx.Graph() open_graph = OpenGraph(graph) self.__backend.push_surface() self.__backend.draw_open_graph_shadow(open_graph) self.__backend.export_to_file( TestUtils.OPEN_GRAPH_SHADOW_EMPTY_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal( TestUtils.OPEN_GRAPH_SHADOW_EMPTY_GENERATED_IMAGE, TestUtils.OPEN_GRAPH_SHADOW_EMPTY_EXPECTED_IMAGE) edge_list = [((10, 10), (40, 10)), ((40, 10), (60, 10)), ((40, 10), (50, 40)), ((50, 40), (20, 30)), ((50, 40), (50, 60))] edge_list2 = [((10, 10), (40, 10)), ((40, 10), (50, 40)), ((50, 40), (20, 30)), ((20, 30), (10, 10))] for edge in edge_list: graph.add_edge(Node(*edge[0]), Node(*edge[1])) graph2 = nx.Graph() for edge in edge_list2: graph2.add_edge(Node(*edge[0], style='curve'), Node(*edge[1], style='curve')) open_graph = OpenGraph(graph) open_graph2 = OpenGraph(graph2) self.__backend.push_surface() self.__backend.draw_open_graph_shadow(open_graph) self.__backend.translate(0, 60) self.__backend.draw_open_graph_shadow(open_graph2) self.__backend.export_to_file( TestUtils.OPEN_GRAPH_SHADOW_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal( TestUtils.OPEN_GRAPH_SHADOW_GENERATED_IMAGE, TestUtils.OPEN_GRAPH_SHADOW_EXPECTED_IMAGE)
def generate_test_opengraph(seed=0, points=12, radius_range=(10, 50)): random.seed(seed) point_list = [] graph = nx.Graph() for i in range(0, points / 2): angle1 = math.radians(i * 360 / points - 180) angle2 = math.radians(-1 * (i * 360 / points - 180)) radius = random.randint(*radius_range) point1 = (math.sin(angle1) * radius, math.cos(angle1) * radius) point2 = (math.sin(angle2) * radius, math.cos(angle2) * radius) graph.add_edge(Node(*point1), Node(0, 0)) graph.add_edge(Node(*point2), Node(0, 0)) opengraph = OpenGraph(graph) return opengraph
def test_run(self): parser = StyleParser() arrow_style = Style('_arrow_', 'fill', ['red'], 1) fill_style = Style('.*', 'fill', ['blue'], 0) line_style = Style('_line_', 'fill', ['green'], 2) frame_style = Style('.*', 'frame', [[0.1, 0.2, 0.3]], 0) custom_fill_style = Style('(abc)|(def)', 'fill', [[0.3, 0.2, 0.3]], 3) custom_line_style = Style('line', 'fill', [[0.4, 0.3, 0.3]], 3) custom_frame_style = Style('(abc)|(def)', 'frame', [[0.5, 0.2, 0.3]], 3) polygon1 = Polygon([Node(0, 0)]) opengraph1 = OpenGraph() opengraph2 = OpenGraph() opengraph2.add_name('line') arrow = Arrow() background = Background() polygon2 = Polygon([Node(0, 0)]) polygon2.add_name('abc') polygon3 = Polygon([Node(0, 0)]) polygon3.add_name('def') objects = [ arrow_style, fill_style, line_style, frame_style, custom_fill_style, custom_line_style, custom_frame_style, polygon1, polygon2, polygon3, opengraph1, opengraph2, arrow, background ] parser.run([], objects) assert arrow.style().color() == arrow_style.color(), str( arrow.style().color()) + " != " + str(arrow_style.color()) assert polygon1.style().color() == fill_style.color(), str( polygon1.style().color()) + " != " + str(fill_style.color()) assert polygon1.frame().style().color() == frame_style.color() assert opengraph1.style().color() == line_style.color() assert opengraph2.style().color() == custom_line_style.color() assert polygon2.style().color() == custom_fill_style.color() assert polygon3.style().color() == custom_fill_style.color() assert polygon2.frame().style().color() == custom_frame_style.color() assert polygon3.frame().style().color() == custom_frame_style.color()
def test_graph(self): opengraph = OpenGraph() assert opengraph.graph().nodes() == []
def test_init(self): opengraph = OpenGraph() assert opengraph != None assert opengraph.style().target_type() == 'fill' assert opengraph.paths() == []