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
|
#!perl
use Test::More tests => 25;
package foo;
use common::sense;
use Object::Event;
$Object::Event::ENABLE_METHODS_DEFAULT = $ENV{OE_METHODS_ENABLE};
our @ISA = qw/Object::Event/;
package main;
use common::sense;
my $f = foo->new;
my ($before, $event, $after, $ext_before, $ext_after);
sub clear { $before = $event = $after = $ext_before = $ext_after = 0 }
$f->reg_cb (
before_test => sub { $before = 1; $_[0]->stop_event if $_[1] eq 'before' },
ext_before_test => sub { $ext_before = 1; $_[0]->stop_event if $_[1] eq 'ext_before' },
test => sub { $event = 1; $_[0]->stop_event if $_[1] eq 'event' },
ext_after_test => sub { $ext_after = 1; $_[0]->stop_event if $_[1] eq 'ext_after' },
after_test => sub { $after = 1; $_[0]->stop_event if $_[1] eq 'after' },
);
clear();
$f->event ('test', 'event');
is ($before, 1, 'before has been executed');
is ($ext_before, 1, 'ext_before has been executed');
is ($event, 1, 'event has been executed');
is ($ext_after, 0, 'ext_after has not been executed');
is ($after, 0, 'after has not been executed');
clear();
$f->event ('test', 'before');
is ($before, 1, 'before has been executed');
is ($ext_before, 0, 'ext_before has been executed');
is ($event, 0, 'event has been executed');
is ($ext_after, 0, 'ext_after has not been executed');
is ($after, 0, 'after has not been executed');
clear();
$f->event ('test', 'after');
is ($before, 1, 'before has been executed');
is ($ext_before, 1, 'ext_before has been executed');
is ($event, 1, 'event has been executed');
is ($ext_after, 1, 'ext_after has not been executed');
is ($after, 1, 'after has not been executed');
clear();
$f->event ('test', 'ext_before');
is ($before, 1, 'before has been executed');
is ($ext_before, 1, 'ext_before has been executed');
is ($event, 0, 'event has been executed');
is ($ext_after, 0, 'ext_after has not been executed');
is ($after, 0, 'after has not been executed');
clear();
$f->event ('test', 'ext_after');
is ($before, 1, 'before has been executed');
is ($ext_before, 1, 'ext_before has been executed');
is ($event, 1, 'event has been executed');
is ($ext_after, 1, 'ext_after has not been executed');
is ($after, 0, 'after has not been executed');
|