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 test_draw_text(self): text = Text("abcdef123456!=_/>") text.scale((10,20)) self.__backend.set_canvas_size(160, 30) self.__backend.create_canvas() self.__backend.push_surface() self.__backend.draw_text(text) self.__backend.export_to_file(TestUtils.TEXT_GENERATED_IMAGE) self.__backend.pop_surface() self.__backend.push_surface() assert TestUtils.images_equal(TestUtils.TEXT_GENERATED_IMAGE, TestUtils.TEXT_EXPECTED_IMAGE) text.style().font().set_name("123") self.__backend.draw_text(text) assert TestUtils.images_equal(TestUtils.TEXT_GENERATED_IMAGE, TestUtils.TEXT_EXPECTED_IMAGE)
def test_draw_text(self): text = Text("abcdef123456!=_/>") text.scale((10, 20)) self.__backend.set_canvas_size(160, 30) self.__backend.create_canvas() self.__backend.push_surface() self.__backend.draw_text(text) self.__backend.export_to_file(TestUtils.TEXT_GENERATED_IMAGE) self.__backend.pop_surface() self.__backend.push_surface() assert TestUtils.images_equal(TestUtils.TEXT_GENERATED_IMAGE, TestUtils.TEXT_EXPECTED_IMAGE) text.style().font().set_name("123") self.__backend.draw_text(text) assert TestUtils.images_equal(TestUtils.TEXT_GENERATED_IMAGE, TestUtils.TEXT_EXPECTED_IMAGE)
def test_create_canvas(self): self.__backend.create_canvas() self.__backend.export_to_file(TestUtils.EMPTY_CANVAS_GENERATED_IMAGE) assert TestUtils.images_equal(TestUtils.EMPTY_CANVAS_GENERATED_IMAGE, TestUtils.EMPTY_CANVAS_EXPECTED_IMAGE) with patch('os.makedirs', side_effect=OSError(errno.EPERM)): assert_raises(OSError, self.__backend.export_to_file, TestUtils.EMPTY_CANVAS_GENERATED_IMAGE)
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_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_blur_surface(self): test_img_surface = cairo.ImageSurface.create_from_png(TestUtils.BLUR_INPUT) self.__backend.set_image_size(test_img_surface.get_width(), test_img_surface.get_height()) self.__backend.set_margin(0, 0, 0, 0) self.__backend.push_surface() self.__backend.ctx().set_source_surface(test_img_surface) self.__backend.ctx().paint() self.__backend.blur_surface() self.__backend.export_to_file(TestUtils.BLUR_GENERATED_IMAGE) assert TestUtils.images_equal(TestUtils.BLUR_GENERATED_IMAGE, TestUtils.BLUR_EXPECTED_IMAGE), TestUtils.BLUR_GENERATED_IMAGE + " != " + TestUtils.BLUR_EXPECTED_IMAGE
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 test_blur_surface(self): test_img_surface = cairo.ImageSurface.create_from_png( TestUtils.BLUR_INPUT) self.__backend.set_image_size(test_img_surface.get_width(), test_img_surface.get_height()) self.__backend.set_margin(0, 0, 0, 0) self.__backend.push_surface() self.__backend.ctx().set_source_surface(test_img_surface) self.__backend.ctx().paint() self.__backend.blur_surface() self.__backend.export_to_file(TestUtils.BLUR_GENERATED_IMAGE) assert TestUtils.images_equal( TestUtils.BLUR_GENERATED_IMAGE, TestUtils.BLUR_EXPECTED_IMAGE ), TestUtils.BLUR_GENERATED_IMAGE + " != " + TestUtils.BLUR_EXPECTED_IMAGE
def test_draw_polygon_shadow(self): point_list = [(10, 10), (40, 10), (30, 20), (40, 40), (20, 30), (10, 10)] node_list = [Node(*p) for p in point_list] polygon1 = Polygon(node_list) polygon2 = Polygon(node_list[:-1]) self.__backend.set_canvas_size(50, 100) self.__backend.create_canvas() self.__backend.push_surface() self.__backend.draw_polygon_shadow(polygon1) self.__backend.translate(0, 50) self.__backend.draw_polygon_shadow(polygon2) self.__backend.export_to_file(TestUtils.POLYGON_SHADOW_GENERATED_IMAGE) self.__backend.pop_surface() assert TestUtils.images_equal(TestUtils.POLYGON_SHADOW_GENERATED_IMAGE, TestUtils.POLYGON_SHADOW_EXPECTED_IMAGE)
def test_input(self): files = [ f for f in os.listdir(TestAllInput.INPUT_PATH) if os.path.isfile(os.path.join(TestAllInput.INPUT_PATH, f)) and os.path.splitext(f)[1] == '.shaape' ] results = [] for f in files: f_in = TestAllInput.INPUT_PATH + f f_out = TestAllInput.GENERATED_IMAGES_PATH + f + '.png' f_expected = TestAllInput.EXPECTED_IMAGES_PATH + f + '.png' shaape = Shaape(f_in, f_out) shaape.run() if False == TestUtils.images_equal(f_out, f_expected): results.append([f_out, f_expected]) if results: for result in results: print("cp " + result[0] + " " + result[1]) assert False, "Not all test input images equal their expected images, see image list."