# rt.cpan.org #20185: problem with SPT_Bellman_Ford
use strict;
use Test::More tests => 7;
use Graph;
use Graph::Directed;
use Graph::Undirected;
my $g_1 = Graph::Undirected -> new(unionfind => 1);
my @edge =
(
[ '16977', '14903' ],
[ '21062', '4504' ],
[ '14671', '10554' ],
[ '14903', '8891' ],
[ '9714', '14671' ],
[ '4504', '13544' ],
[ '9714', '13544' ],
[ '16977', '8891' ],
[ '21062', '21062' ],
[ '9714', '4504' ],
[ '14671', '21687' ],
[ '14671', '16977' ],
[ '4504', '21687' ],
[ '10554', '14903' ],
[ '9714', '21687' ],
[ '13544', '14671' ],
[ '21062', '14671' ],
[ '10554', '8891' ],
[ '14671', '14903' ],
[ '14671', '14671' ],
[ '13544', '13544' ],
[ '14671', '14026' ],
[ '4504', '14671' ],
[ '14671', '8891' ],
[ '13544', '14026' ],
[ '10554', '16977' ],
);
$g_1 -> add_edges(@edge);
my $spt_1 = $g_1 -> SPT_Bellman_Ford;
is($spt_1->vertices, $g_1->vertices);
my $g_2 = Graph::Undirected -> new();
$g_2 -> add_edges(@edge);
my $spt_2 = $g_2 -> SPT_Bellman_Ford;
is($spt_2->vertices, $g_2->vertices);
my $g_3 = Graph::Directed -> new();
$g_3 -> add_edges(@edge);
my $spt_3a = $g_3 -> SPT_Bellman_Ford('21062');
is($spt_3a->vertices, $g_3->vertices - 1);
ok(!$spt_3a->has_vertex('9714'));
my $spt_3b = $g_3 -> SPT_Bellman_Ford('4504');
is($spt_3b->vertices, $g_3->vertices - 2);
ok(!$spt_3b->has_vertex('9714'));
ok(!$spt_3b->has_vertex('21062'));