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