From: Magnus Jacobsson Date: Thu, 6 Oct 2022 09:45:01 +0000 (+0200) Subject: add new test_edge_node_overlap_tee_edge_arrow test X-Git-Tag: 7.0.1~3^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f381022fb03055c8799b1c1b968d16b108610ee7;p=graphviz add new test_edge_node_overlap_tee_edge_arrow test --- diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9364683ad..d70fd39bd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -102,6 +102,7 @@ CREATE_TEST(edge_node_overlap_normal_and_inv_edge_arrows_all_modifiers) CREATE_TEST(edge_node_overlap_point_node_shape) CREATE_TEST(edge_node_overlap_polygon_node_shapes) CREATE_TEST(edge_node_overlap_simple) +CREATE_TEST(edge_node_overlap_tee_edge_arrow) CREATE_TEST(max_edge_node_overlap_simple) CREATE_TEST(max_edge_node_overlap_polygon_node_shapes) CREATE_TEST(min_edge_node_overlap_polygon_node_shapes) diff --git a/tests/test_edge_node_overlap_tee_edge_arrow.cpp b/tests/test_edge_node_overlap_tee_edge_arrow.cpp new file mode 100644 index 000000000..383ca97c7 --- /dev/null +++ b/tests/test_edge_node_overlap_tee_edge_arrow.cpp @@ -0,0 +1,45 @@ +#include + +#include + +#include "test_edge_node_overlap_utilities.h" +#include "test_utilities.h" + +TEST_CASE("Edge node overlap for 'tee' arrow", + "[!shouldfail] An edge connected to a node shall touch that node and " + "not overlap it too much") { + + const std::string_view primitive_arrow_shape = "tee"; + + INFO("Edge arrowhead: " << primitive_arrow_shape); + + std::string filename_base = AUTO_NAME(); + + const graph_options graph_options = { + .node_shape = "polygon", + .node_penwidth = 2, + .dir = "both", + // The 'tee' arrow shape consists of a 'polygon' part which expands with + // penwidth in the forward and reverse direction of the arrow and a + // 'polyline' part which does not expand with penwidth in the forward and + // reverse direction of the arrow. + // + // Edge penwidth > 2 causes the 'polygon' part of the arrow to overlap + // the 'polyline' part at the end of the arrow. + // + // Edge penwidth > 4 causes the 'polygon' part of the arrow to overlap + // the 'polyline' part at the start of the arrow. + // + // However, in the 'test_edge_node_overlap' function, we allow a quite + // large overlap between the edge stem and the edge arrow because it's not + // visible if it's less than the edge penwidth (unless the color is + // semi-transparent). We therefore set an edge penwidth much larger than 4 + // in this test in order to be able to check that edge stem and edge arrow + // don't overlap too much. + .edge_penwidth = 7, + .primitive_arrowhead_shape = primitive_arrow_shape, + .primitive_arrowtail_shape = primitive_arrow_shape, + }; + + test_edge_node_overlap(graph_options, {}, {.filename_base = filename_base}); +}