EV-cares

 view release on metacpan or  search on metacpan

t/06_loop.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Scalar::Util qw(weaken);
use EV;
use EV::cares qw(:status);

# default loop (no option)
{
    my $r = EV::cares->new(lookups => 'f');
    isa_ok($r, 'EV::cares', 'default loop construction');
}

# explicit non-default loop

t/06_loop.t  view on Meta::CPAN


    eval { EV::cares->new(loop => bless {}, 'Wrong::Class') };
    like($@, qr/EV::Loop/, 'wrong-class blessed ref rejected');
}

# resolver retains the loop SV: dropping the user's last ref must not
# free the loop until the resolver itself is gone
{
    my $loop = EV::Loop->new;
    my $weak = $loop;
    weaken($weak);

    my $r = EV::cares->new(loop => $loop, lookups => 'f');
    undef $loop;
    ok(defined $weak, 'loop SV retained while resolver is alive');

    undef $r;
    ok(!defined $weak, 'loop SV released after resolver destroyed');
}

done_testing;



( run in 0.582 second using v1.01-cache-2.11-cpan-995e09ba956 )