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
|
use strict; use warnings;
use Test::More tests => 50;
use Graph;
my $g = Graph->new(multivertexed => 1);
ok $g->multivertexed;
is( $g->get_vertex_count('a'), 0 );
ok( $g->add_vertex_by_id('a', 'red') );
is( $g->get_vertex_count('a'), 1 );
for (1,2) {
ok( $g->has_vertex('a') );
ok(!$g->has_vertex('b') );
ok( $g->has_vertex_by_id('a', 'red') );
ok(!$g->has_vertex_by_id('a', 'blue') );
}
$g->add_vertex_by_id('a', 'blue');
is( $g->get_vertex_count('a'), 2 );
ok( $g->has_vertex_by_id('a', $_) ) for qw(blue red);
$g->add_vertex('a');
ok( $g->has_vertex('a') );
ok(!$g->has_vertex('b') );
is( $g->get_vertex_count('a'), 3 );
is( $g->add_vertex_get_id('a'), $_) for 1..3;
ok( $g->has_vertex_by_id('a', $_) ) for 0..3;
is( $g->get_vertex_count('a'), 6 );
ok( $g->delete_vertex_by_id('a', 'blue') );
ok(!$g->has_vertex_by_id('a', 'blue') );
ok( $g->has_vertex_by_id('a', 'red') );
ok( $g->delete_vertex_by_id('a', 'green') );
ok(!$g->has_vertex_by_id('a', $_)) for qw(blue green);
ok( $g->has_vertex_by_id('a', 'red') );
ok( $g->delete_vertex_by_id('a', 'red') );
my $got = [ sort $g->get_multivertex_ids('a') ];
is_deeply $got, [ qw(0 1 2 3) ] or diag explain $got;
is( $g->get_vertex_count('a'), 4 );
ok $g->add_edge('a', 'b');
$got = [ $g->successors('a') ];
is_deeply $got, [ 'b' ] or diag explain $got;
$got = [ $g->predecessors('b') ];
is_deeply $got, [ 'a' ] or diag explain $got;
is( $g->delete_vertex('a'), 'b' );
ok(!$g->has_vertex_by_id('a', $_) ) for 0..3;
is( $g->get_multivertex_ids('a'), undef );
my $h = Graph->new;
eval { $h->add_vertex_by_id("b", "black") };
like($@, qr/add_vertex_by_id: expected multivertexed/);
eval { $h->has_vertex_by_id("b", "black") };
like($@, qr/has_vertex_by_id: expected multivertexed/);
eval { $h->get_multivertex_ids() };
like($@, qr/get_multivertex_ids: expected multivertexed/);
eval { $h->delete_vertex_by_id("b", "black") };
like($@, qr/delete_vertex_by_id: expected multivertexed/);
eval { Graph->new( multivertexed => 1, countvertexed => 1 ) };
like ( $@, qr/both countvertexed and multivertexed/ );
|