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