]> granicus.if.org Git - graphviz/commitdiff
add new test_edge_node_overlap_all_primitive_edge_arrows test
authorMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Thu, 15 Sep 2022 11:23:48 +0000 (13:23 +0200)
committerMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Thu, 22 Sep 2022 08:21:14 +0000 (10:21 +0200)
tests/CMakeLists.txt
tests/test_edge_node_overlap_all_primitive_edge_arrows.cpp [new file with mode: 0644]

index a9252ba1b6eab51769a9a6b1886f4d1c914cc42e..5b237e180e269e6751cad157292bcdf7f8206d47 100644 (file)
@@ -90,6 +90,7 @@ CREATE_TEST(GVLayout_construction)
 CREATE_TEST(GVLayout_render)
 CREATE_TEST(edge_node_overlap_all_edge_arrows)
 CREATE_TEST(edge_node_overlap_all_node_shapes)
+CREATE_TEST(edge_node_overlap_all_primitive_edge_arrows)
 CREATE_TEST(edge_node_overlap_normal_and_inv_edge_arrows)
 CREATE_TEST(edge_node_overlap_normal_and_inv_edge_arrows_all_modifiers)
 CREATE_TEST(edge_node_overlap_polygon_node_shapes)
diff --git a/tests/test_edge_node_overlap_all_primitive_edge_arrows.cpp b/tests/test_edge_node_overlap_all_primitive_edge_arrows.cpp
new file mode 100644 (file)
index 0000000..03ea2ff
--- /dev/null
@@ -0,0 +1,35 @@
+#include <string>
+
+#include <catch2/catch.hpp>
+
+#include "test_edge_node_overlap_utilities.h"
+#include "test_utilities.h"
+
+// FIXME: this test fails for all primitive arrow types except `normal` and
+// `inv` which currently are the only ones fixed for penwidth
+
+TEST_CASE("Edge node overlap for all primitive arrow shapes",
+          "[!shouldfail] An edge connected to a node shall touch that node and "
+          "not overlap it too much, regardless of the primitive arrow shape") {
+
+  std::string filename_base =
+      "test_edge_node_overlap_all_primitive_edge_arrows";
+
+  const auto primitive_arrow_shape =
+      GENERATE(from_range(all_primitive_arrow_shapes));
+  INFO(fmt::format("Edge primitive arrow shape: {}", primitive_arrow_shape));
+
+  INFO(fmt::format("Edge arrow shape: {}", primitive_arrow_shape));
+  filename_base += fmt::format("_arrow_shape{}", primitive_arrow_shape);
+
+  const graph_options graph_options = {
+      .node_shape = "polygon",
+      .node_penwidth = 2,
+      .dir = "both",
+      .edge_penwidth = 2,
+      .primitive_arrowhead_shape = primitive_arrow_shape,
+      .primitive_arrowtail_shape = primitive_arrow_shape,
+  };
+
+  test_edge_node_overlap(graph_options, {}, {.filename_base = filename_base});
+}