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