Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
--TEST--
2
Unit test for graph with constrained rank clusters
3
--FILE--
4
<?php
5
 
6
/**
7
 * Test 9: "Graph with constrained ranks"
8
 *
9
 * Graph definition taken from GraphViz documentation
10
 *
11
 * @category Image
12
 * @package  Image_GraphViz
13
 * @author   Philippe Jausions <jausions@php.net>
14
 */
15
require_once 'Image/GraphViz.php';
16
 
17
$graph = new Image_GraphViz(true, array('ranksep' => .75),
18
                            'asde91', false);
19
 
20
/* the time-line graph */
21
$graph->addEdge(array('past' => 1978));
22
$graph->addEdge(array(1978 => 1980));
23
$graph->addEdge(array(1980 => 1982));
24
$graph->addEdge(array(1982 => 1983));
25
$graph->addEdge(array(1983 => 1985));
26
$graph->addEdge(array(1985 => 1986));
27
$graph->addEdge(array(1986 => 1987));
28
$graph->addEdge(array(1987 => 1988));
29
$graph->addEdge(array(1988 => 1989));
30
$graph->addEdge(array(1989 => 1990));
31
$graph->addEdge(array(1990 => 'future'));
32
 
33
/* program types graph */
34
$graph->addSubgraph('type', '', array('rank' => 'same'));
35
 
36
$graph->addNode('Software IS', null, 'type');
37
$graph->addNode('Configuration Mgt', null, 'type');
38
$graph->addNode('Architecture & Libraries', null, 'type');
39
$graph->addNode('Process', null, 'type');
40
 
41
/* time graphs */
42
$graph->addSubgraph('past', '', array('rank' => 'same'));
43
$graph->addSubgraph(1978, '', array('rank' => 'same'));
44
$graph->addSubgraph(1980, '', array('rank' => 'same'));
45
$graph->addSubgraph(1982, '', array('rank' => 'same'));
46
$graph->addSubgraph(1983, '', array('rank' => 'same'));
47
$graph->addSubgraph(1985, '', array('rank' => 'same'));
48
$graph->addSubgraph(1986, '', array('rank' => 'same'));
49
$graph->addSubgraph(1987, '', array('rank' => 'same'));
50
$graph->addSubgraph(1988, '', array('rank' => 'same'));
51
$graph->addSubgraph(1989, '', array('rank' => 'same'));
52
$graph->addSubgraph(1990, '', array('rank' => 'same'));
53
$graph->addSubgraph('future', '', array('rank' => 'same'));
54
 
55
/* programs */
56
$graph->addNode('Bourne sh', null, 'past');
57
$graph->addNode('make', null, 'past');
58
$graph->addNode('SCCS', null, 'past');
59
$graph->addNode('yacc', null, 'past');
60
$graph->addNode('cron', null, 'past');
61
 
62
$graph->addNode('Reiser cpp', null, 1978);
63
$graph->addNode('Cshell', null, 1978);
64
 
65
$graph->addNode('emacs', null, 1980);
66
$graph->addNode('build', null, 1980);
67
$graph->addNode('vi', null, 1980);
68
 
69
$graph->addNode('<curses>', null, 1982);
70
$graph->addNode('RCS', null, 1982);
71
$graph->addNode('IMX', null, 1982);
72
$graph->addNode('SYNED', null, 1982);
73
 
74
$graph->addNode('ksh', null, 1983);
75
$graph->addNode('IFS', null, 1983);
76
$graph->addNode('TTU', null, 1983);
77
 
78
$graph->addNode('nmake', null, 1985);
79
$graph->addNode('Peggy', null, 1985);
80
 
81
$graph->addNode('ncpp', null, 1986);
82
$graph->addNode('ksh-i', null, 1986);
83
$graph->addNode('<curses-i>', null, 1986);
84
$graph->addNode('PG2', null, 1986);
85
$graph->addNode('C*', null, 1986);
86
 
87
$graph->addNode('Ansi cpp', null, 1987);
88
$graph->addNode('nmake 2.0', null, 1987);
89
$graph->addNode('3D File System', null, 1987);
90
$graph->addNode('fdelta', null, 1987);
91
$graph->addNode('DAG', null, 1987);
92
$graph->addNode('CSAS', null, 1987);
93
 
94
$graph->addNode('CIA', null, 1988);
95
$graph->addNode('SBCS', null, 1988);
96
$graph->addNode('ksh-88', null, 1988);
97
$graph->addNode('PEGASUS/PML', null, 1988);
98
$graph->addNode('PAX', null, 1988);
99
$graph->addNode('backtalk', null, 1988);
100
 
101
$graph->addNode('CIA++', null, 1989);
102
$graph->addNode('APP', null, 1989);
103
$graph->addNode('SHIP', null, 1989);
104
$graph->addNode('DataShare', null, 1989);
105
$graph->addNode('ryacc', null, 1989);
106
$graph->addNode('Mosaic', null, 1989);
107
 
108
$graph->addNode('libft', null, 1990);
109
$graph->addNode('CoShell', null, 1990);
110
$graph->addNode('DIA', null, 1990);
111
$graph->addNode('IFS-i', null, 1990);
112
$graph->addNode('kyacc', null, 1990);
113
$graph->addNode('sfio', null, 1990);
114
$graph->addNode('yeast', null, 1990);
115
$graph->addNode('ML-X', null, 1990);
116
$graph->addNode('DOT', null, 1990);
117
 
118
$graph->addNode('Adv. Software Technology', null, 'future');
119
 
120
/* hierachy */
121
$graph->addEdge(array('SCCS' => 'RCS'));
122
$graph->addEdge(array('SCCS' => '3D File System'));
123
$graph->addEdge(array('SCCS' => 'nmake'));
124
$graph->addEdge(array('make' => 'nmake'));
125
$graph->addEdge(array('make' => 'build'));
126
$graph->addEdge(array('Bourne sh' => 'Cshell'));
127
$graph->addEdge(array('Bourne sh' => 'ksh'));
128
$graph->addEdge(array('yacc' => 'ryacc'));
129
$graph->addEdge(array('cron' => 'yeast'));
130
 
131
$graph->addEdge(array('Reiser cpp' => 'ncpp'));
132
$graph->addEdge(array('Cshell' => 'ksh'));
133
 
134
$graph->addEdge(array('build' => 'nmake 2.0'));
135
$graph->addEdge(array('vi' => 'ksh'));
136
$graph->addEdge(array('vi' => '<curses>'));
137
$graph->addEdge(array('emacs' => 'ksh'));
138
 
139
$graph->addEdge(array('RCS' => 'SBCS'));
140
$graph->addEdge(array('RCS' => 'fdelta'));
141
$graph->addEdge(array('<curses>' => '<curses-i>'));
142
$graph->addEdge(array('SYNED' => 'Peggy'));
143
$graph->addEdge(array('IMX' => 'TTU'));
144
 
145
$graph->addEdge(array('ksh' => 'nmake'));
146
$graph->addEdge(array('ksh' => 'ksh-i'));
147
$graph->addEdge(array('ksh' => 'ksh-88'));
148
$graph->addEdge(array('IFS' => '<curses-i>'));
149
$graph->addEdge(array('IFS' => 'sfio'));
150
$graph->addEdge(array('IFS' => 'IFS-i'));
151
$graph->addEdge(array('TTU' => 'PG2'));
152
 
153
$graph->addEdge(array('nmake' => 'ksh'));
154
$graph->addEdge(array('nmake' => 'ncpp'));
155
$graph->addEdge(array('nmake' => '3D File System'));
156
$graph->addEdge(array('nmake' => 'nmake 2.0'));
157
$graph->addEdge(array('Peggy' => 'PEGASUS/PML'));
158
$graph->addEdge(array('Peggy' => 'ryacc'));
159
 
160
$graph->addEdge(array('C*' => 'CSAS'));
161
$graph->addEdge(array('ncpp' => 'Ansi cpp'));
162
$graph->addEdge(array('<curses-i>' => 'fdelta'));
163
$graph->addEdge(array('ksh-i' => 'ksh-88'));
164
$graph->addEdge(array('PG2' => 'backtalk'));
165
 
166
$graph->addEdge(array('DAG' => 'Sotware IS'));
167
$graph->addEdge(array('DAG' => 'DOT'));
168
$graph->addEdge(array('DAG' => 'DIA'));
169
$graph->addEdge(array('CSAS' => 'CIA'));
170
$graph->addEdge(array('Ansi cpp' => 'Configuration Mgt'));
171
$graph->addEdge(array('fdelta' => 'SBCS'));
172
$graph->addEdge(array('fdelta' => 'PAX'));
173
$graph->addEdge(array('3D File System' => 'Configuration Mgt'));
174
$graph->addEdge(array('nmake 2.0' => 'Configuration Mgt'));
175
$graph->addEdge(array('nmake 2.0' => 'CoShell'));
176
 
177
$graph->addEdge(array('CIA' => 'CIA++'));
178
$graph->addEdge(array('CIA' => 'DIA'));
179
$graph->addEdge(array('SBCS' => 'Configuration Mgt'));
180
$graph->addEdge(array('PAX' => 'SHIP'));
181
$graph->addEdge(array('ksh-88' => 'Configuration Mgt'));
182
$graph->addEdge(array('ksh-88' => 'Architecture & Libraries'));
183
$graph->addEdge(array('ksh-88' => 'sfio'));
184
$graph->addEdge(array('PEGASUS/PML' => 'ML-X'));
185
$graph->addEdge(array('PEGASUS/PML' => 'Architecture & Libraries'));
186
$graph->addEdge(array('backtalk' => 'DataShare'));
187
 
188
$graph->addEdge(array('CIA++' => 'Software IS'));
189
$graph->addEdge(array('APP' => 'DIA'));
190
$graph->addEdge(array('APP' => 'Software IS'));
191
$graph->addEdge(array('SHIP' => 'Configuration Mgt'));
192
$graph->addEdge(array('DataShare' => 'Architecture & Libraries'));
193
$graph->addEdge(array('ryacc' => 'kyacc'));
194
$graph->addEdge(array('Mosaic' => 'Process'));
195
 
196
$graph->addEdge(array('DOT' => 'Software IS'));
197
$graph->addEdge(array('DIA' => 'Software IS'));
198
$graph->addEdge(array('libft' => 'Software IS'));
199
$graph->addEdge(array('CoShell' => 'Configuration Mgt'));
200
$graph->addEdge(array('CoShell' => 'Architecture & Libraries'));
201
$graph->addEdge(array('sfio' => 'Architecture & Libraries'));
202
$graph->addEdge(array('IFS-i' => 'Architecture & Libraries'));
203
$graph->addEdge(array('ML-X' => 'Architecture & Libraries'));
204
$graph->addEdge(array('kyacc' => 'Architecture & Libraries'));
205
$graph->addEdge(array('yeast' => 'Process'));
206
 
207
$graph->addEdge(array('Architecture & Libraries' => 'Adv. Software Technology'));
208
$graph->addEdge(array('Software IS' => 'Adv. Software Technology'));
209
$graph->addEdge(array('Configuration Mgt' => 'Adv. Software Technology'));
210
$graph->addEdge(array('Process' => 'Adv. Software Technology'));
211
 
212
echo $graph->parse();
213
 
214
?>
215
--EXPECT--
216
digraph asde91 {
217
    ranksep=0.75;
218
    subgraph type {
219
        graph [ rank=same ];
220
        "Software IS";
221
        "Configuration Mgt";
222
        "Architecture & Libraries";
223
        Process;
224
    }
225
    subgraph past {
226
        graph [ rank=same ];
227
        "Bourne sh";
228
        make;
229
        SCCS;
230
        yacc;
231
        cron;
232
    }
233
    subgraph 1978 {
234
        graph [ rank=same ];
235
        "Reiser cpp";
236
        Cshell;
237
    }
238
    subgraph 1980 {
239
        graph [ rank=same ];
240
        emacs;
241
        build;
242
        vi;
243
    }
244
    subgraph 1982 {
245
        graph [ rank=same ];
246
        "<curses>";
247
        RCS;
248
        IMX;
249
        SYNED;
250
    }
251
    subgraph 1983 {
252
        graph [ rank=same ];
253
        ksh;
254
        IFS;
255
        TTU;
256
    }
257
    subgraph 1985 {
258
        graph [ rank=same ];
259
        nmake;
260
        Peggy;
261
    }
262
    subgraph 1986 {
263
        graph [ rank=same ];
264
        ncpp;
265
        "ksh-i";
266
        "<curses-i>";
267
        PG2;
268
        "C*";
269
    }
270
    subgraph 1987 {
271
        graph [ rank=same ];
272
        "Ansi cpp";
273
        "nmake 2.0";
274
        "3D File System";
275
        fdelta;
276
        DAG;
277
        CSAS;
278
    }
279
    subgraph 1988 {
280
        graph [ rank=same ];
281
        CIA;
282
        SBCS;
283
        "ksh-88";
284
        "PEGASUS/PML";
285
        PAX;
286
        backtalk;
287
    }
288
    subgraph 1989 {
289
        graph [ rank=same ];
290
        "CIA++";
291
        APP;
292
        SHIP;
293
        DataShare;
294
        ryacc;
295
        Mosaic;
296
    }
297
    subgraph 1990 {
298
        graph [ rank=same ];
299
        libft;
300
        CoShell;
301
        DIA;
302
        "IFS-i";
303
        kyacc;
304
        sfio;
305
        yeast;
306
        "ML-X";
307
        DOT;
308
    }
309
    subgraph future {
310
        graph [ rank=same ];
311
        "Adv. Software Technology";
312
    }
313
    past -> 1978;
314
    1978 -> 1980;
315
    1980 -> 1982;
316
    1982 -> 1983;
317
    1983 -> 1985;
318
    1985 -> 1986;
319
    1986 -> 1987;
320
    1987 -> 1988;
321
    1988 -> 1989;
322
    1989 -> 1990;
323
    1990 -> future;
324
    SCCS -> RCS;
325
    SCCS -> "3D File System";
326
    SCCS -> nmake;
327
    make -> nmake;
328
    make -> build;
329
    "Bourne sh" -> Cshell;
330
    "Bourne sh" -> ksh;
331
    yacc -> ryacc;
332
    cron -> yeast;
333
    "Reiser cpp" -> ncpp;
334
    Cshell -> ksh;
335
    build -> "nmake 2.0";
336
    vi -> ksh;
337
    vi -> "<curses>";
338
    emacs -> ksh;
339
    RCS -> SBCS;
340
    RCS -> fdelta;
341
    "<curses>" -> "<curses-i>";
342
    SYNED -> Peggy;
343
    IMX -> TTU;
344
    ksh -> nmake;
345
    ksh -> "ksh-i";
346
    ksh -> "ksh-88";
347
    IFS -> "<curses-i>";
348
    IFS -> sfio;
349
    IFS -> "IFS-i";
350
    TTU -> PG2;
351
    nmake -> ksh;
352
    nmake -> ncpp;
353
    nmake -> "3D File System";
354
    nmake -> "nmake 2.0";
355
    Peggy -> "PEGASUS/PML";
356
    Peggy -> ryacc;
357
    "C*" -> CSAS;
358
    ncpp -> "Ansi cpp";
359
    "<curses-i>" -> fdelta;
360
    "ksh-i" -> "ksh-88";
361
    PG2 -> backtalk;
362
    DAG -> "Sotware IS";
363
    DAG -> DOT;
364
    DAG -> DIA;
365
    CSAS -> CIA;
366
    "Ansi cpp" -> "Configuration Mgt";
367
    fdelta -> SBCS;
368
    fdelta -> PAX;
369
    "3D File System" -> "Configuration Mgt";
370
    "nmake 2.0" -> "Configuration Mgt";
371
    "nmake 2.0" -> CoShell;
372
    CIA -> "CIA++";
373
    CIA -> DIA;
374
    SBCS -> "Configuration Mgt";
375
    PAX -> SHIP;
376
    "ksh-88" -> "Configuration Mgt";
377
    "ksh-88" -> "Architecture & Libraries";
378
    "ksh-88" -> sfio;
379
    "PEGASUS/PML" -> "ML-X";
380
    "PEGASUS/PML" -> "Architecture & Libraries";
381
    backtalk -> DataShare;
382
    "CIA++" -> "Software IS";
383
    APP -> DIA;
384
    APP -> "Software IS";
385
    SHIP -> "Configuration Mgt";
386
    DataShare -> "Architecture & Libraries";
387
    ryacc -> kyacc;
388
    Mosaic -> Process;
389
    DOT -> "Software IS";
390
    DIA -> "Software IS";
391
    libft -> "Software IS";
392
    CoShell -> "Configuration Mgt";
393
    CoShell -> "Architecture & Libraries";
394
    sfio -> "Architecture & Libraries";
395
    "IFS-i" -> "Architecture & Libraries";
396
    "ML-X" -> "Architecture & Libraries";
397
    kyacc -> "Architecture & Libraries";
398
    yeast -> Process;
399
    "Architecture & Libraries" -> "Adv. Software Technology";
400
    "Software IS" -> "Adv. Software Technology";
401
    "Configuration Mgt" -> "Adv. Software Technology";
402
    Process -> "Adv. Software Technology";
403
}