1use strict; 2use Test::More tests => 7; 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'); 11ok(Foo->add_trigger(after_foo => sub { print "after_foo\n" }), 12 'add_trigger in foo'); 13 14my $foo = Foo->new; 15 16{ 17 my $out; 18 tie *STDOUT, 'IO::Scalar', \$out; 19 $foo->foo; 20 is $out, "before_foo\nfoo\nafter_foo\n"; 21} 22 23ok(Foo->add_trigger(after_foo => sub { print "after_foo2\n" }), 24 'add_trigger in Foo'); 25 26{ 27 tie *STDOUT, 'IO::Scalar', \my $out; 28 $foo->foo; 29 is $out, "before_foo\nfoo\nafter_foo\nafter_foo2\n"; 30} 31 32ok(Foo->add_trigger(after_foo => sub { print ref $_[0] }), 33 'add_trigger in Foo'); 34 35{ 36 tie *STDOUT, 'IO::Scalar', \my $out; 37 $foo->foo; 38 is $out, "before_foo\nfoo\nafter_foo\nafter_foo2\nFoo", 'class name'; 39} 40 41