65_ref.t   [plain text]

```use Test::More tests => 886;

use Graph;

sub _REF () { Graph::AdjacencyMap::Heavy::_REF }

use Math::Complex;

my \$t = [1, 2];
my \$u = bless { 3, 4 }, "Ubu";
my \$v = cplx(3, 4);
my \$z = cplx(4, 5);

is( \$m1->set_path(\$t), 0 );
my @m1 = \$m1->_get_id_path( \$m1->_get_path_id(\$t) );
is( \$m1[0], \$t );

is( \$m2->set_path(\$u, \$v), 0 );
my @m2 = \$m2->_get_id_path( \$m2->_get_path_id(\$u, \$v) );
is( \$m2[0], \$u );
ok( \$m2[1] == \$v );		# is() doesn't work.
ok( \$m2[1] ** 2 == \$v ** 2 );	# is() doesn't work.

my \$g = Graph->new(refvertexed => 1);

my @V = sort { \$a->sqrt <=> \$b->sqrt } \$g->vertices;

is(\$V[0]->Re, 3);
is(\$V[0]->Im, 4);
is(\$V[1]->Re, 4);
is(\$V[1]->Im, 5);

ok(\$g->has_vertex(\$v));
ok(\$g->has_vertex(\$z));
ok(\$g->has_edge(\$v, \$z));

\$v->Re(7);
\$z->Im(8);

ok(\$g->has_vertex(\$v));
ok(\$g->has_vertex(\$z));

@V = sort { \$a->sqrt <=> \$b->sqrt } \$g->vertices;

is(\$V[0]->Re, 4);
is(\$V[0]->Im, 8);
is(\$V[1]->Re, 7);
is(\$V[1]->Im, 4);

my \$x = cplx(1,2);
my \$y = cplx(3,4);
\$g = Graph->new(refvertexed => 1);
my @e = \$g->edges;
is("@{\$e[0]}", "1+2i 3+4i");
\$x->Im(5);
is("@{\$e[0]}", "1+5i 3+4i");
\$e[0]->[1]->Im(6);
is("\$y", "3+6i");

use vars qw(\$foo \$bar);

my \$o0;
my \$o1;

my \$o1a = bless \\$o0, 'S';
my \$o1b = bless \\$o1, 'S';
{ package S; use overload '""' => sub { "s" } }

my \$o2a = bless [], 'A';
my \$o2b = bless [], 'A';
{ package A; use overload '""' => sub { "a" } }

my \$o3a = bless {}, 'H';
my \$o3b = bless {}, 'H';
{ package H; use overload '""' => sub { "h" } }

my \$o4a = bless sub {}, 'C';
my \$o4b = bless sub {}, 'C';
{ package C; use overload '""' => sub { "c" } }

my \$o5a = bless \*STDIN{IO}, 'I';
my \$o5b = bless \*STDOUT{IO}, 'I';
{ package I; use overload '""' => sub { "i" } }

my \$o6a = bless \*foo, 'G';
my \$o6b = bless \*bar, 'G';
{ package G; use overload '""' => sub { "g" } }

for my \$i (\$o1a, \$o2a, \$o3a, \$o4a, \$o5a, \$o6a) {
for my \$j (\$o1b, \$o2b, \$o3b, \$o4b, \$o5b, \$o6b) {
print "# i = \$i, j = \$j\n";

my \$g1 = Graph->new(refvertexed => 1, directed => 1);

print "# g1 = \$g1\n";
ok( \$g1->has_vertex(\$i));
ok( \$g1->has_vertex(\$j));
ok( \$g1->has_edge(\$i, \$j));
ok( \$g1->delete_vertex(\$i));
print "# g1 = \$g1\n";
ok(!\$g1->has_vertex(\$i));
ok( \$g1->has_vertex(\$j));
ok(!\$g1->has_edge(\$i, \$j));
ok(!\$g1->delete_vertex(\$j));
print "# g1 = \$g1\n";
ok(!\$g1->has_vertex(\$i));
ok(!\$g1->has_vertex(\$j));
ok(!\$g1->has_edge(\$i, \$j));

my \$g2 = Graph->new(refvertexed => 1, directed => 0);

print "# g2 = \$g2\n";
ok( \$g2->has_vertex(\$i));
ok( \$g2->has_vertex(\$j));
ok( \$g2->has_edge(\$i, \$j));
ok( \$g2->delete_vertex(\$i));
print "# g2 = \$g2\n";
ok(!\$g2->has_vertex(\$i));
ok( \$g2->has_vertex(\$j));
ok(!\$g2->has_edge(\$i, \$j));
ok(!\$g2->delete_vertex(\$j));
print "# g2 = \$g2\n";
ok(!\$g2->has_vertex(\$i));
ok(!\$g2->has_vertex(\$j));
ok(!\$g2->has_edge(\$i, \$j));
}
}

```