-
Notifications
You must be signed in to change notification settings - Fork 38
/
delete.t
117 lines (80 loc) · 2.63 KB
/
delete.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/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');
}