#!/usr/bin/perl
use Test::More;
my $right_cnt = 0;
my $inside_cnt = 0;
my $outside_cnt = 0;
my $wrong_cnt = 0;
{
package Test::MooseX::POE::Timers::Doer;
use MooseX::POE;
event 'tick' => sub {
my ( $self ) = @_;
$right_cnt++;
$self->inside_self_delay;
};
event 'inside_self_delay_tick' => sub {
my ( $self ) = @_;
$inside_cnt++;
};
event 'outside_self_delay_tick' => sub {
my ( $self ) = @_;
$outside_cnt++;
};
sub inside_self_delay {
my ( $self ) = @_;
$self->delay( 'inside_self_delay_tick' => 1 );
}
sub outside_self_delay {
my ( $self ) = @_;
$self->delay( 'outside_self_delay_tick' => 1 );
}
}
{
package Test::MooseX::POE::Timers::SomeoneElse;
use MooseX::POE;
sub START {
my ( $self ) = @_;
my $doer = Test::MooseX::POE::Timers::Doer->new();
$doer->delay( 'tick' => 1 );
$doer->outside_self_delay;
}
event 'tick' => sub {
$wrong_cnt++;
};
}
Test::MooseX::POE::Timers::SomeoneElse->new;
POE::Kernel->run;
is($inside_cnt, 1, 'right self_tick is called by $self inside the session');
is($outside_cnt, 1, 'right self_tick is called by $self outside the session');
is($right_cnt, 1, 'right tick is called');
is($wrong_cnt, 0, 'wrong tick isnt called');
done_testing();