Current File : //opt/RZphp73/includes/test/Image_GraphViz/tests/test9.phpt |
--TEST--
Unit test for graph with constrained rank clusters
--FILE--
<?php
/**
* Test 9: "Graph with constrained ranks"
*
* Graph definition taken from GraphViz documentation
*
* @category Image
* @package Image_GraphViz
* @author Philippe Jausions <jausions@php.net>
*/
require_once 'Image/GraphViz.php';
$graph = new Image_GraphViz(true, array('ranksep' => .75),
'asde91', false);
/* the time-line graph */
$graph->addEdge(array('past' => 1978));
$graph->addEdge(array(1978 => 1980));
$graph->addEdge(array(1980 => 1982));
$graph->addEdge(array(1982 => 1983));
$graph->addEdge(array(1983 => 1985));
$graph->addEdge(array(1985 => 1986));
$graph->addEdge(array(1986 => 1987));
$graph->addEdge(array(1987 => 1988));
$graph->addEdge(array(1988 => 1989));
$graph->addEdge(array(1989 => 1990));
$graph->addEdge(array(1990 => 'future'));
/* program types graph */
$graph->addSubgraph('type', '', array('rank' => 'same'));
$graph->addNode('Software IS', null, 'type');
$graph->addNode('Configuration Mgt', null, 'type');
$graph->addNode('Architecture & Libraries', null, 'type');
$graph->addNode('Process', null, 'type');
/* time graphs */
$graph->addSubgraph('past', '', array('rank' => 'same'));
$graph->addSubgraph(1978, '', array('rank' => 'same'));
$graph->addSubgraph(1980, '', array('rank' => 'same'));
$graph->addSubgraph(1982, '', array('rank' => 'same'));
$graph->addSubgraph(1983, '', array('rank' => 'same'));
$graph->addSubgraph(1985, '', array('rank' => 'same'));
$graph->addSubgraph(1986, '', array('rank' => 'same'));
$graph->addSubgraph(1987, '', array('rank' => 'same'));
$graph->addSubgraph(1988, '', array('rank' => 'same'));
$graph->addSubgraph(1989, '', array('rank' => 'same'));
$graph->addSubgraph(1990, '', array('rank' => 'same'));
$graph->addSubgraph('future', '', array('rank' => 'same'));
/* programs */
$graph->addNode('Bourne sh', null, 'past');
$graph->addNode('make', null, 'past');
$graph->addNode('SCCS', null, 'past');
$graph->addNode('yacc', null, 'past');
$graph->addNode('cron', null, 'past');
$graph->addNode('Reiser cpp', null, 1978);
$graph->addNode('Cshell', null, 1978);
$graph->addNode('emacs', null, 1980);
$graph->addNode('build', null, 1980);
$graph->addNode('vi', null, 1980);
$graph->addNode('<curses>', null, 1982);
$graph->addNode('RCS', null, 1982);
$graph->addNode('IMX', null, 1982);
$graph->addNode('SYNED', null, 1982);
$graph->addNode('ksh', null, 1983);
$graph->addNode('IFS', null, 1983);
$graph->addNode('TTU', null, 1983);
$graph->addNode('nmake', null, 1985);
$graph->addNode('Peggy', null, 1985);
$graph->addNode('ncpp', null, 1986);
$graph->addNode('ksh-i', null, 1986);
$graph->addNode('<curses-i>', null, 1986);
$graph->addNode('PG2', null, 1986);
$graph->addNode('C*', null, 1986);
$graph->addNode('Ansi cpp', null, 1987);
$graph->addNode('nmake 2.0', null, 1987);
$graph->addNode('3D File System', null, 1987);
$graph->addNode('fdelta', null, 1987);
$graph->addNode('DAG', null, 1987);
$graph->addNode('CSAS', null, 1987);
$graph->addNode('CIA', null, 1988);
$graph->addNode('SBCS', null, 1988);
$graph->addNode('ksh-88', null, 1988);
$graph->addNode('PEGASUS/PML', null, 1988);
$graph->addNode('PAX', null, 1988);
$graph->addNode('backtalk', null, 1988);
$graph->addNode('CIA++', null, 1989);
$graph->addNode('APP', null, 1989);
$graph->addNode('SHIP', null, 1989);
$graph->addNode('DataShare', null, 1989);
$graph->addNode('ryacc', null, 1989);
$graph->addNode('Mosaic', null, 1989);
$graph->addNode('libft', null, 1990);
$graph->addNode('CoShell', null, 1990);
$graph->addNode('DIA', null, 1990);
$graph->addNode('IFS-i', null, 1990);
$graph->addNode('kyacc', null, 1990);
$graph->addNode('sfio', null, 1990);
$graph->addNode('yeast', null, 1990);
$graph->addNode('ML-X', null, 1990);
$graph->addNode('DOT', null, 1990);
$graph->addNode('Adv. Software Technology', null, 'future');
/* hierachy */
$graph->addEdge(array('SCCS' => 'RCS'));
$graph->addEdge(array('SCCS' => '3D File System'));
$graph->addEdge(array('SCCS' => 'nmake'));
$graph->addEdge(array('make' => 'nmake'));
$graph->addEdge(array('make' => 'build'));
$graph->addEdge(array('Bourne sh' => 'Cshell'));
$graph->addEdge(array('Bourne sh' => 'ksh'));
$graph->addEdge(array('yacc' => 'ryacc'));
$graph->addEdge(array('cron' => 'yeast'));
$graph->addEdge(array('Reiser cpp' => 'ncpp'));
$graph->addEdge(array('Cshell' => 'ksh'));
$graph->addEdge(array('build' => 'nmake 2.0'));
$graph->addEdge(array('vi' => 'ksh'));
$graph->addEdge(array('vi' => '<curses>'));
$graph->addEdge(array('emacs' => 'ksh'));
$graph->addEdge(array('RCS' => 'SBCS'));
$graph->addEdge(array('RCS' => 'fdelta'));
$graph->addEdge(array('<curses>' => '<curses-i>'));
$graph->addEdge(array('SYNED' => 'Peggy'));
$graph->addEdge(array('IMX' => 'TTU'));
$graph->addEdge(array('ksh' => 'nmake'));
$graph->addEdge(array('ksh' => 'ksh-i'));
$graph->addEdge(array('ksh' => 'ksh-88'));
$graph->addEdge(array('IFS' => '<curses-i>'));
$graph->addEdge(array('IFS' => 'sfio'));
$graph->addEdge(array('IFS' => 'IFS-i'));
$graph->addEdge(array('TTU' => 'PG2'));
$graph->addEdge(array('nmake' => 'ksh'));
$graph->addEdge(array('nmake' => 'ncpp'));
$graph->addEdge(array('nmake' => '3D File System'));
$graph->addEdge(array('nmake' => 'nmake 2.0'));
$graph->addEdge(array('Peggy' => 'PEGASUS/PML'));
$graph->addEdge(array('Peggy' => 'ryacc'));
$graph->addEdge(array('C*' => 'CSAS'));
$graph->addEdge(array('ncpp' => 'Ansi cpp'));
$graph->addEdge(array('<curses-i>' => 'fdelta'));
$graph->addEdge(array('ksh-i' => 'ksh-88'));
$graph->addEdge(array('PG2' => 'backtalk'));
$graph->addEdge(array('DAG' => 'Sotware IS'));
$graph->addEdge(array('DAG' => 'DOT'));
$graph->addEdge(array('DAG' => 'DIA'));
$graph->addEdge(array('CSAS' => 'CIA'));
$graph->addEdge(array('Ansi cpp' => 'Configuration Mgt'));
$graph->addEdge(array('fdelta' => 'SBCS'));
$graph->addEdge(array('fdelta' => 'PAX'));
$graph->addEdge(array('3D File System' => 'Configuration Mgt'));
$graph->addEdge(array('nmake 2.0' => 'Configuration Mgt'));
$graph->addEdge(array('nmake 2.0' => 'CoShell'));
$graph->addEdge(array('CIA' => 'CIA++'));
$graph->addEdge(array('CIA' => 'DIA'));
$graph->addEdge(array('SBCS' => 'Configuration Mgt'));
$graph->addEdge(array('PAX' => 'SHIP'));
$graph->addEdge(array('ksh-88' => 'Configuration Mgt'));
$graph->addEdge(array('ksh-88' => 'Architecture & Libraries'));
$graph->addEdge(array('ksh-88' => 'sfio'));
$graph->addEdge(array('PEGASUS/PML' => 'ML-X'));
$graph->addEdge(array('PEGASUS/PML' => 'Architecture & Libraries'));
$graph->addEdge(array('backtalk' => 'DataShare'));
$graph->addEdge(array('CIA++' => 'Software IS'));
$graph->addEdge(array('APP' => 'DIA'));
$graph->addEdge(array('APP' => 'Software IS'));
$graph->addEdge(array('SHIP' => 'Configuration Mgt'));
$graph->addEdge(array('DataShare' => 'Architecture & Libraries'));
$graph->addEdge(array('ryacc' => 'kyacc'));
$graph->addEdge(array('Mosaic' => 'Process'));
$graph->addEdge(array('DOT' => 'Software IS'));
$graph->addEdge(array('DIA' => 'Software IS'));
$graph->addEdge(array('libft' => 'Software IS'));
$graph->addEdge(array('CoShell' => 'Configuration Mgt'));
$graph->addEdge(array('CoShell' => 'Architecture & Libraries'));
$graph->addEdge(array('sfio' => 'Architecture & Libraries'));
$graph->addEdge(array('IFS-i' => 'Architecture & Libraries'));
$graph->addEdge(array('ML-X' => 'Architecture & Libraries'));
$graph->addEdge(array('kyacc' => 'Architecture & Libraries'));
$graph->addEdge(array('yeast' => 'Process'));
$graph->addEdge(array('Architecture & Libraries' => 'Adv. Software Technology'));
$graph->addEdge(array('Software IS' => 'Adv. Software Technology'));
$graph->addEdge(array('Configuration Mgt' => 'Adv. Software Technology'));
$graph->addEdge(array('Process' => 'Adv. Software Technology'));
echo $graph->parse();
?>
--EXPECT--
digraph asde91 {
ranksep=0.75;
subgraph type {
graph [ rank=same ];
"Software IS";
"Configuration Mgt";
"Architecture & Libraries";
Process;
}
subgraph past {
graph [ rank=same ];
"Bourne sh";
make;
SCCS;
yacc;
cron;
}
subgraph 1978 {
graph [ rank=same ];
"Reiser cpp";
Cshell;
}
subgraph 1980 {
graph [ rank=same ];
emacs;
build;
vi;
}
subgraph 1982 {
graph [ rank=same ];
"<curses>";
RCS;
IMX;
SYNED;
}
subgraph 1983 {
graph [ rank=same ];
ksh;
IFS;
TTU;
}
subgraph 1985 {
graph [ rank=same ];
nmake;
Peggy;
}
subgraph 1986 {
graph [ rank=same ];
ncpp;
"ksh-i";
"<curses-i>";
PG2;
"C*";
}
subgraph 1987 {
graph [ rank=same ];
"Ansi cpp";
"nmake 2.0";
"3D File System";
fdelta;
DAG;
CSAS;
}
subgraph 1988 {
graph [ rank=same ];
CIA;
SBCS;
"ksh-88";
"PEGASUS/PML";
PAX;
backtalk;
}
subgraph 1989 {
graph [ rank=same ];
"CIA++";
APP;
SHIP;
DataShare;
ryacc;
Mosaic;
}
subgraph 1990 {
graph [ rank=same ];
libft;
CoShell;
DIA;
"IFS-i";
kyacc;
sfio;
yeast;
"ML-X";
DOT;
}
subgraph future {
graph [ rank=same ];
"Adv. Software Technology";
}
past -> 1978;
1978 -> 1980;
1980 -> 1982;
1982 -> 1983;
1983 -> 1985;
1985 -> 1986;
1986 -> 1987;
1987 -> 1988;
1988 -> 1989;
1989 -> 1990;
1990 -> future;
SCCS -> RCS;
SCCS -> "3D File System";
SCCS -> nmake;
make -> nmake;
make -> build;
"Bourne sh" -> Cshell;
"Bourne sh" -> ksh;
yacc -> ryacc;
cron -> yeast;
"Reiser cpp" -> ncpp;
Cshell -> ksh;
build -> "nmake 2.0";
vi -> ksh;
vi -> "<curses>";
emacs -> ksh;
RCS -> SBCS;
RCS -> fdelta;
"<curses>" -> "<curses-i>";
SYNED -> Peggy;
IMX -> TTU;
ksh -> nmake;
ksh -> "ksh-i";
ksh -> "ksh-88";
IFS -> "<curses-i>";
IFS -> sfio;
IFS -> "IFS-i";
TTU -> PG2;
nmake -> ksh;
nmake -> ncpp;
nmake -> "3D File System";
nmake -> "nmake 2.0";
Peggy -> "PEGASUS/PML";
Peggy -> ryacc;
"C*" -> CSAS;
ncpp -> "Ansi cpp";
"<curses-i>" -> fdelta;
"ksh-i" -> "ksh-88";
PG2 -> backtalk;
DAG -> "Sotware IS";
DAG -> DOT;
DAG -> DIA;
CSAS -> CIA;
"Ansi cpp" -> "Configuration Mgt";
fdelta -> SBCS;
fdelta -> PAX;
"3D File System" -> "Configuration Mgt";
"nmake 2.0" -> "Configuration Mgt";
"nmake 2.0" -> CoShell;
CIA -> "CIA++";
CIA -> DIA;
SBCS -> "Configuration Mgt";
PAX -> SHIP;
"ksh-88" -> "Configuration Mgt";
"ksh-88" -> "Architecture & Libraries";
"ksh-88" -> sfio;
"PEGASUS/PML" -> "ML-X";
"PEGASUS/PML" -> "Architecture & Libraries";
backtalk -> DataShare;
"CIA++" -> "Software IS";
APP -> DIA;
APP -> "Software IS";
SHIP -> "Configuration Mgt";
DataShare -> "Architecture & Libraries";
ryacc -> kyacc;
Mosaic -> Process;
DOT -> "Software IS";
DIA -> "Software IS";
libft -> "Software IS";
CoShell -> "Configuration Mgt";
CoShell -> "Architecture & Libraries";
sfio -> "Architecture & Libraries";
"IFS-i" -> "Architecture & Libraries";
"ML-X" -> "Architecture & Libraries";
kyacc -> "Architecture & Libraries";
yeast -> Process;
"Architecture & Libraries" -> "Adv. Software Technology";
"Software IS" -> "Adv. Software Technology";
"Configuration Mgt" -> "Adv. Software Technology";
Process -> "Adv. Software Technology";
}