The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# 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'));