1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
/// \file
/// \brief test ordering of \p agmemread and \p gvContext
///
/// See https://gitlab.com/graphviz/graphviz/-/issues/2434.
#ifdef NDEBUG
#error "this program is not intended to be compiled with assertions disabled"
#endif
#include <assert.h>
#include <graphviz/cgraph.h>
#include <graphviz/gvc.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
static const char dotString[] = "\
digraph {\n\
compound=true;\n\
node [shape=Mrecord]\n\
rankdir=\"LR\"\n\
\n\
subgraph \"clusterOpen\"\n\
{\n\
label = \"Open\"\n\
\"Assigned\" [label=\"Assigned|exit / OnDeassigned\"];\n\
}\n\
\"Deferred\" [label=\"Deferred|entry / Function\"];\n\
\"Closed\" [label=\"Closed\"];\n\
\n\
\"OpenNode\" -> \"Assigned\" [style=\"solid\", label=\"Assign / OnAssigned\"];\n\
\"Assigned\" -> \"Assigned\" [style=\"solid\", label=\"Assign\"];\n\
\"Assigned\" -> \"Closed\" [style=\"solid\", label=\"Close\"];\n\
\"Assigned\" -> \"Deferred\" [style=\"solid\", label=\"Defer\"];\n\
\"Deferred\" -> \"Assigned\" [style=\"solid\", label=\"Assign / OnAssigned\"];\n\
init [label=\"\", shape=point];\n\
init -> \"Open\"[style = \"solid\"]\n\
}\n\
";
int main(int argc, char **argv) {
assert(argc == 2);
assert(strcmp(argv[1], "before") == 0 || strcmp(argv[1], "after") == 0);
GVC_t *gvc = NULL;
if (strcmp(argv[1], "before") == 0) {
gvc = gvContext();
assert(gvc != NULL);
}
Agraph_t *graph = agmemread(dotString);
assert(graph != NULL);
if (strcmp(argv[1], "after") == 0) {
assert(gvc == NULL);
gvc = gvContext();
assert(gvc != NULL);
}
{
int rc = gvLayout(gvc, graph, "dot");
assert(rc == 0);
}
{
int rc = gvRender(gvc, graph, "svg", stdout);
assert(rc == 0);
}
{
int rc = gvFreeLayout(gvc, graph);
assert(rc == 0);
}
{
int rc = agclose(graph);
assert(rc == 0);
}
return 0;
}
|