118 lines
2.6 KiB
Perl
118 lines
2.6 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
# Test deletion of nodes and edges
|
|
|
|
use Test::More;
|
|
use strict;
|
|
|
|
BEGIN
|
|
{
|
|
plan tests => 46;
|
|
chdir 't' if -d 't';
|
|
use lib '../lib';
|
|
use_ok ("Graph::Easy") or die($@);
|
|
};
|
|
|
|
can_ok ("Graph::Easy", qw/
|
|
del_node
|
|
del_edge
|
|
/);
|
|
|
|
#############################################################################
|
|
# first we add edges/nodes
|
|
|
|
my $graph = Graph::Easy->new();
|
|
|
|
is (ref($graph), 'Graph::Easy');
|
|
|
|
is ($graph->error(), '', 'no error yet');
|
|
|
|
$graph->add_edge('Bonn', 'Berlin');
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
#############################################################################
|
|
print "# add edge, delete it again\n";
|
|
|
|
my $edge = $graph->add_edge('Bonn', 'Berlin');
|
|
$graph->del_edge($edge);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
#############################################################################
|
|
print "# add selfloop edge, delete it again\n";
|
|
|
|
$edge = $graph->add_edge('Bonn', 'Bonn');
|
|
$graph->del_edge($edge);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
$edge = $graph->add_edge('Berlin', 'Berlin');
|
|
$graph->del_edge($edge);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
#############################################################################
|
|
print "# add node, delete it again\n";
|
|
|
|
my $node = $graph->add_node('Cottbus');
|
|
$graph->del_node($node);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
#############################################################################
|
|
print "# add node with edge, delete it again\n";
|
|
|
|
my ($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Bonn');
|
|
$graph->del_node($n1);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Bonn');
|
|
($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Berlin');
|
|
$graph->del_node($n1);
|
|
|
|
# check that it contains 2 nodes and one edge
|
|
is_ok ($graph);
|
|
|
|
|
|
1; # all tests done
|
|
|
|
#############################################################################
|
|
# test graph after deletion
|
|
|
|
sub is_ok
|
|
{
|
|
my $graph = shift;
|
|
|
|
is ($graph->nodes(), 2, '2 nodes');
|
|
is ($graph->edges(), 1, '1 edge');
|
|
|
|
my $t = '';
|
|
for my $n (sort { $a->{name} cmp $b->{name} } $graph->nodes())
|
|
{
|
|
$t .= $n->name();
|
|
}
|
|
is ($t, 'BerlinBonn', 'two nodes');
|
|
|
|
my $bonn = $graph->node('Bonn');
|
|
my $berlin = $graph->node('Berlin');
|
|
|
|
is (scalar keys %{$bonn->{edges}}, 1, 'one edge');
|
|
is (scalar keys %{$berlin->{edges}}, 1, 'one edge');
|
|
|
|
my $ids = join (',',
|
|
keys %{$bonn->{edges}},
|
|
keys %{$berlin->{edges}},
|
|
keys %{$graph->{edges}} );
|
|
|
|
is ($ids, '0,0,0', 'edge with ID is the only one');
|
|
}
|
|
|