1use strict; 2use Test::More tests => 5; 3 4use IO::Scalar; 5 6use lib 't/lib'; 7use Foo; 8 9ok(Foo->add_trigger(before_foo => sub { print "before_foo\n" }), 10 'add_trigger in Foo'); 11 12{ 13 my $foo = Foo->new; 14 tie *STDOUT, 'IO::Scalar', \my $out; 15 $foo->add_trigger(after_foo => sub { print "after_foo\n" }); 16 $foo->foo; 17 is $out, "before_foo\nfoo\nafter_foo\n"; 18} 19 20{ 21 my $foo = Foo->new; 22 tie *STDOUT, 'IO::Scalar', \my $out; 23 $foo->foo; 24 untie *STDOUT; 25 is $out, "before_foo\nfoo\n"; 26} 27 28{ 29 my $foo = Foo->new; 30 tie *STDOUT, 'IO::Scalar', \my $out; 31 $foo->add_trigger(after_foo => sub { print "after_foo1\n" }); 32 $foo->add_trigger(after_foo => sub { print "after_foo2\n" }); 33 $foo->foo; 34 is $out, "before_foo\nfoo\nafter_foo1\nafter_foo2\n"; 35} 36 37{ 38 my $foo = Foo->new; 39 tie *STDOUT, 'IO::Scalar', \my $out; 40 $foo->foo; 41 is $out, "before_foo\nfoo\n"; 42} 43 44