]> granicus.if.org Git - graphviz/commitdiff
add new test_edge_node_overlap_tee_edge_arrow test
authorMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Thu, 6 Oct 2022 09:45:01 +0000 (11:45 +0200)
committerMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Fri, 4 Nov 2022 17:45:17 +0000 (18:45 +0100)
tests/CMakeLists.txt
tests/test_edge_node_overlap_tee_edge_arrow.cpp [new file with mode: 0644]

index 9364683addbc7fb3abd93e0308507b566ec8c6e3..d70fd39bd9f4d6e73d2d2021255ee5453684865c 100644 (file)
@@ -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 (file)
index 0000000..383ca97
--- /dev/null
@@ -0,0 +1,45 @@
+#include <string>
+
+#include <catch2/catch.hpp>
+
+#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});
+}