1use strict; 2use Test::More tests => 6; 3 4use IO::Scalar; 5 6use lib 't/lib'; 7use Foo; 8use Foo::Bar; 9 10ok(Foo->add_trigger(before_foo => sub { print "before_foo\n" }), 11 'add_trigger in Foo'); 12ok(Foo::Bar->add_trigger(after_foo => sub { print "after_foo\n" }), 13 'add_trigger in Foo::Bar'); 14ok(Foo::Bar->add_trigger(before_foo => sub { print "before_foo2\n" }), 15 'add_trigger in Foo::Bar'); 16ok(Foo->add_trigger(before_foo => sub { print "before_foo3\n" }), 17 'add_trigger in Foo'); 18 19my $foo = Foo::Bar->new; 20 21{ 22 tie *STDOUT, 'IO::Scalar', \my $out; 23 $foo->foo; 24 is $out, "before_foo\nbefore_foo3\nbefore_foo2\nfoo\nafter_foo\n"; 25} 26 27my $foo_parent = Foo->new; 28{ 29 tie *STDOUT, 'IO::Scalar', \my $out; 30 $foo_parent->foo; 31 is $out, "before_foo\nbefore_foo3\nfoo\n", 'Foo not affected'; 32} 33 34 35 36