Skip to content

Instantly share code, notes, and snippets.

@preaction
Last active May 9, 2016 14:50
Show Gist options
  • Save preaction/a06c7438e3a4cad3cf0c6b2680c99d3c to your computer and use it in GitHub Desktop.
Save preaction/a06c7438e3a4cad3cf0c6b2680c99d3c to your computer and use it in GitHub Desktop.
use strict;
use warnings;
use Test::More;
use Mojo::EventEmitter;
use Beam::Emitter;
use Test::LeakTrace;
no_leaks_ok {
my $m = Mojo::EventEmitter->new;
my $cb; $cb = $m->on( derp => sub { $_[0]->unsubscribe( derp => $cb ); undef $cb } );
$m->emit( derp => 'foo' );
};
{
package My::Emitter;
use Moo;
with 'Beam::Emitter';
}
no_leaks_ok {
my $b = My::Emitter->new;
my $cb; $b->on( derp => $cb = sub { $_[0]->emitter->un( derp => $cb ); undef $cb } );
$b->emit( 'derp' );
};
no_leaks_ok {
my $b = My::Emitter->new;
my $cb; $cb = $b->on( derp => sub { $cb->() } );
$b->emit( 'derp' );
};
no_leaks_ok {
my $b = My::Emitter->new;
my $cb; $cb = $b->on( derp => sub { $cb->() } );
};
no_leaks_ok {
my $b = My::Emitter->new;
my $cb; $cb = $b->on( derp => sub { } );
$b->emit( 'derp' );
$cb->();
};
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment