@@ 42-125 (lines=84) @@ | ||
39 | * |
|
40 | * "Graph definition taken from GraphViz documentation" |
|
41 | */ |
|
42 | class IG20bTest extends BaseGraphTest { |
|
43 | ||
44 | public function setUp() : void { |
|
45 | // not strict by default. |
|
46 | parent::setUpExtended(); |
|
47 | $graph = $this->Graph; |
|
48 | $dic = $this->dic; |
|
49 | $graph->setDirected(true); |
|
50 | $graph->setAttributes(array( |
|
51 | new Attribute($dic, 'compound', true), |
|
52 | )); |
|
53 | ||
54 | $nullTitle = array(new Attribute($dic, 'title', NULL)); |
|
55 | $nodes = array(); |
|
56 | ||
57 | $graph->addChild($cluster0 = new Cluster($dic, 0, $nullTitle)); |
|
58 | foreach (array('a', 'b', 'c', 'd') as $name) { |
|
59 | $cluster0->addChild($nodes[$name] = new Node($dic, $name)); |
|
60 | } |
|
61 | ||
62 | $graph->addChild($cluster1 = new Cluster($dic, 1, $nullTitle)); |
|
63 | foreach (array('e', 'f', 'g') as $name) { |
|
64 | $cluster1->addChild($nodes[$name] = new Node($dic, $name)); |
|
65 | } |
|
66 | ||
67 | $graph->addChild(new Edge($dic, $nodes['a'], $nodes['b'])); |
|
68 | $graph->addChild(new Edge($dic, $nodes['a'], $nodes['c'])); |
|
69 | $graph->addChild(new Edge($dic, $nodes['b'], $nodes['d'])); |
|
70 | ||
71 | // Note how we use getBuildName() instead of getName() for lhead/ltail, |
|
72 | // because this are the strings GraphViz expects. |
|
73 | $graph->addChild(new Edge($dic, $nodes['b'], $nodes['f'], array( |
|
74 | new Attribute($dic, 'lhead', $cluster1->getBuildName()), |
|
75 | ))); |
|
76 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['d'])); |
|
77 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['g'], array( |
|
78 | new Attribute($dic, 'ltail', $cluster0->getBuildName()), |
|
79 | new Attribute($dic, 'lhead', $cluster1->getBuildName()), |
|
80 | ))); |
|
81 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['e'], array( |
|
82 | new Attribute($dic, 'ltail', $cluster0->getBuildName()), |
|
83 | ))); |
|
84 | $graph->addChild(new Edge($dic, $nodes['e'], $nodes['g'])); |
|
85 | $graph->addChild(new Edge($dic, $nodes['e'], $nodes['f'])); |
|
86 | $graph->addChild(new Edge($dic, $nodes['d'], $nodes['e'])); |
|
87 | $graph->addChild(new Edge($dic, $nodes['d'], $nodes['h'] = new Node($dic, 'h', array('implicit' => true)))); |
|
88 | } |
|
89 | ||
90 | /** |
|
91 | * Tests g->build() |
|
92 | */ |
|
93 | public function testBuild() { |
|
94 | $expected = <<<'EOT' |
|
95 | digraph G { |
|
96 | compound=true; |
|
97 | ||
98 | subgraph cluster_0 { |
|
99 | a; |
|
100 | b; |
|
101 | c; |
|
102 | d; |
|
103 | } /* /subgraph cluster_0 */ |
|
104 | subgraph cluster_1 { |
|
105 | e; |
|
106 | f; |
|
107 | g; |
|
108 | } /* /subgraph cluster_1 */ |
|
109 | a -> b; |
|
110 | a -> c; |
|
111 | b -> d; |
|
112 | b -> f [ lhead=cluster_1 ]; |
|
113 | c -> d; |
|
114 | c -> g [ ltail=cluster_0, lhead=cluster_1 ]; |
|
115 | c -> e [ ltail=cluster_0 ]; |
|
116 | e -> g; |
|
117 | e -> f; |
|
118 | d -> e; |
|
119 | d -> h; |
|
120 | } /* /digraph G */ |
|
121 | ||
122 | EOT; |
|
123 | $this->check($expected, "Image_graphViz test 20b passed."); |
|
124 | } |
|
125 | } |
|
126 |
@@ 42-125 (lines=84) @@ | ||
39 | * |
|
40 | * "Graph definition taken from GraphViz documentation" |
|
41 | */ |
|
42 | class IG20Test extends BaseGraphTest { |
|
43 | ||
44 | public function setUp() : void { |
|
45 | // not strict by default. |
|
46 | parent::setUpExtended(); |
|
47 | $graph = $this->Graph; |
|
48 | $dic = $this->dic; |
|
49 | $graph->setDirected(true); |
|
50 | $graph->setAttributes(array( |
|
51 | new Attribute($dic, 'compound', true), |
|
52 | )); |
|
53 | ||
54 | $nullTitle = array(new Attribute($dic, 'title', NULL)); |
|
55 | $nodes = array(); |
|
56 | ||
57 | $graph->addChild($cluster0 = new Cluster($dic, 'cluster0', $nullTitle)); |
|
58 | foreach (array('a', 'b', 'c', 'd') as $name) { |
|
59 | $cluster0->addChild($nodes[$name] = new Node($dic, $name)); |
|
60 | } |
|
61 | ||
62 | $graph->addChild($cluster1 = new Cluster($dic, 'cluster1', $nullTitle)); |
|
63 | foreach (array('e', 'f', 'g') as $name) { |
|
64 | $cluster1->addChild($nodes[$name] = new Node($dic, $name)); |
|
65 | } |
|
66 | ||
67 | $graph->addChild(new Edge($dic, $nodes['a'], $nodes['b'])); |
|
68 | $graph->addChild(new Edge($dic, $nodes['a'], $nodes['c'])); |
|
69 | $graph->addChild(new Edge($dic, $nodes['b'], $nodes['d'])); |
|
70 | ||
71 | // Note how we use getBuildName() instead of getName() for lhead/ltail, |
|
72 | // because this are the strings GraphViz expects. |
|
73 | $graph->addChild(new Edge($dic, $nodes['b'], $nodes['f'], array( |
|
74 | new Attribute($dic, 'lhead', $cluster1->getBuildName()), |
|
75 | ))); |
|
76 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['d'])); |
|
77 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['g'], array( |
|
78 | new Attribute($dic, 'ltail', $cluster0->getBuildName()), |
|
79 | new Attribute($dic, 'lhead', $cluster1->getBuildName()), |
|
80 | ))); |
|
81 | $graph->addChild(new Edge($dic, $nodes['c'], $nodes['e'], array( |
|
82 | new Attribute($dic, 'ltail', $cluster0->getBuildName()), |
|
83 | ))); |
|
84 | $graph->addChild(new Edge($dic, $nodes['e'], $nodes['g'])); |
|
85 | $graph->addChild(new Edge($dic, $nodes['e'], $nodes['f'])); |
|
86 | $graph->addChild(new Edge($dic, $nodes['d'], $nodes['e'])); |
|
87 | $graph->addChild(new Edge($dic, $nodes['d'], $nodes['h'] = new Node($dic, 'h', array('implicit' => true)))); |
|
88 | } |
|
89 | ||
90 | /** |
|
91 | * Tests g->build() |
|
92 | */ |
|
93 | public function testBuild() { |
|
94 | $expected = <<<'EOT' |
|
95 | digraph G { |
|
96 | compound=true; |
|
97 | ||
98 | subgraph cluster0 { |
|
99 | a; |
|
100 | b; |
|
101 | c; |
|
102 | d; |
|
103 | } /* /subgraph cluster0 */ |
|
104 | subgraph cluster1 { |
|
105 | e; |
|
106 | f; |
|
107 | g; |
|
108 | } /* /subgraph cluster1 */ |
|
109 | a -> b; |
|
110 | a -> c; |
|
111 | b -> d; |
|
112 | b -> f [ lhead=cluster1 ]; |
|
113 | c -> d; |
|
114 | c -> g [ ltail=cluster0, lhead=cluster1 ]; |
|
115 | c -> e [ ltail=cluster0 ]; |
|
116 | e -> g; |
|
117 | e -> f; |
|
118 | d -> e; |
|
119 | d -> h; |
|
120 | } /* /digraph G */ |
|
121 | ||
122 | EOT; |
|
123 | $this->check($expected, "Image_graphViz test 20 passed."); |
|
124 | } |
|
125 | } |
|
126 |