first commit
This commit is contained in:
114
perl/lib/Graph-Easy-0.76/t/chain.t
Normal file
114
perl/lib/Graph-Easy-0.76/t/chain.t
Normal file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use Test::More;
|
||||
use strict;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
plan tests => 44;
|
||||
chdir 't' if -d 't';
|
||||
use lib '../lib';
|
||||
use_ok ("Graph::Easy::Layout::Chain") or die($@);
|
||||
use_ok ("Graph::Easy") or die($@);
|
||||
};
|
||||
|
||||
can_ok ("Graph::Easy::Layout::Chain", qw/
|
||||
new error
|
||||
length nodes add_node layout
|
||||
/);
|
||||
|
||||
#############################################################################
|
||||
# chain tests
|
||||
|
||||
my $c = 'Graph::Easy::Layout::Chain';
|
||||
|
||||
my $graph = Graph::Easy->new();
|
||||
is (ref($graph), 'Graph::Easy');
|
||||
is ($graph->error(), '', 'no error yet');
|
||||
|
||||
my ($node, $node2) = $graph->add_edge('A','B');
|
||||
|
||||
my $chain = Graph::Easy::Layout::Chain->new(
|
||||
start => $node, graph => $graph );
|
||||
|
||||
is (ref($chain), $c, 'new() seemed to work');
|
||||
is ($chain->error(), '', 'no error');
|
||||
is ($chain->start(), $node, 'start node is $node');
|
||||
is ($chain->end(), $node, 'end node is $node');
|
||||
|
||||
is ($node->{_chain}, $chain, 'chain stored at node');
|
||||
is ($chain->length(), 1, 'length() is 1');
|
||||
is ($chain->length($node), 1, 'length($node) is 1');
|
||||
|
||||
$chain->add_node($node2);
|
||||
|
||||
is ($node->{_chain}, $chain, 'chain stored at node');
|
||||
is ($node2->{_chain}, $chain, 'chain stored at node2');
|
||||
is ($chain->length(), 2, 'length() is now 2');
|
||||
is ($chain->start(), $node, 'start node is $node');
|
||||
is ($chain->end(), $node2, 'end node is $node2');
|
||||
is ($chain->length($node), 2, 'length($node) is 2');
|
||||
is ($chain->length($node2), 1, 'length($node2) is 1');
|
||||
|
||||
|
||||
#############################################################################
|
||||
# merging two chains
|
||||
|
||||
my ($node3, $node4) = $graph->add_edge('C','D');
|
||||
|
||||
my $other = $c->new ( start => $node3, graph => $graph );
|
||||
|
||||
is (ref($other), $c, 'new() seemed to work');
|
||||
is ($other->error(), '', 'no error');
|
||||
is ($other->length(), 1, 'length() is 1');
|
||||
is ($other->start(), $node3, 'start node is $node3');
|
||||
is ($other->end(), $node3, 'end node is $node3');
|
||||
|
||||
$other->add_node($node4);
|
||||
is ($other->length(), 2, 'length() is now 2');
|
||||
is ($other->start(), $node3, 'start node is $node3');
|
||||
is ($other->end(), $node4, 'end node is $node4');
|
||||
|
||||
#diag ("merging chains\n");
|
||||
|
||||
$chain->merge($other);
|
||||
|
||||
is ($other->error(), '', 'no error');
|
||||
is ($other->length(), 0, 'other length() is still 0');
|
||||
is ($other->start(), undef, 'start node is $node3');
|
||||
is ($other->end(), undef, 'end node is $node4');
|
||||
|
||||
is ($chain->error(), '', 'no error');
|
||||
is ($chain->length(), 4, 'chain length() is now 4');
|
||||
is ($chain->start(), $node, 'start node is $node3');
|
||||
is ($chain->end(), $node4, 'end node is $node4');
|
||||
|
||||
my @nodes = $chain->nodes();
|
||||
|
||||
is_deeply (\@nodes, [ $node, $node2, $node3, $node4 ], 'nodes got merged');
|
||||
|
||||
#############################################################################
|
||||
# merging two chains, with offset
|
||||
|
||||
my ($node5, $node6) = $graph->add_edge('E','F');
|
||||
|
||||
$other = $c->new ( start => $node5, graph => $graph );
|
||||
$other->add_node($node6);
|
||||
|
||||
# merge $chain into $other, but keep the first 3 nodes of $chain
|
||||
|
||||
$other->merge($chain, $node3);
|
||||
|
||||
is ($chain->length(), 4, 'left all four nodes');
|
||||
is ($other->length(), 4, 'consumed two nodes');
|
||||
|
||||
@nodes = $chain->nodes();
|
||||
is_deeply (\@nodes, [ $node, $node2, $node3, $node4 ], 'nodes got merged');
|
||||
@nodes = $other->nodes();
|
||||
is_deeply (\@nodes, [ $node5, $node6, $node3, $node4 ], 'other got two nodes');
|
||||
|
||||
for my $node ( @nodes )
|
||||
{
|
||||
is ($node->{_chain}, $other, 'node got set to new chain');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user