6 use Test::More tests => 13;
26 around qr/bark.*/ => sub {
33 is( $dog->bark_once, 'Dog::around', 'around modifier is called' );
34 is( $dog->bark_twice, 'Dog::around', 'around modifier is called' );
40 our $BEFORE_BARK_COUNTER = 0;
41 our $AFTER_BARK_COUNTER = 0;
52 before qr/bark.*/ => sub {
53 $BEFORE_BARK_COUNTER++;
56 after qr/bark.*/ => sub {
57 $AFTER_BARK_COUNTER++;
64 is( $Cat::BEFORE_BARK_COUNTER, 1, 'before modifier is called once' );
65 is( $Cat::AFTER_BARK_COUNTER, 1, 'after modifier is called once' );
67 is( $Cat::BEFORE_BARK_COUNTER, 2, 'before modifier is called twice' );
68 is( $Cat::AFTER_BARK_COUNTER, 2, 'after modifier is called twice' );
74 our $BEFORE_BARK_COUNTER = 0;
75 our $AFTER_BARK_COUNTER = 0;
86 before qr/bark.*/ => sub {
87 $BEFORE_BARK_COUNTER++;
90 after qr/bark.*/ => sub {
91 $AFTER_BARK_COUNTER++;
101 override 'bark_once' => sub {
106 override 'bark_twice' => sub {
112 local $TODO = "method modifier isn't called if method id overridden";
115 is( $Animal::BEFORE_BARK_COUNTER, 1,
116 'before modifier is called if method is overridden' );
117 is( $Animal::AFTER_BARK_COUNTER, 1,
118 'after modifier is called if method is overridden' );
126 our $AUGMENT_CALLED = 0;
128 augment 'bark_once' => sub {
139 $Animal::BEFORE_BARK_COUNTER = 0;
140 $Animal::AFTER_BARK_COUNTER = 0;
141 my $penguin = Penguin->new;
142 warn $penguin->bark_once;
143 is( $Animal::BEFORE_BARK_COUNTER, 1,
144 'before modifier is called if augment is used' );
145 is( $Animal::AFTER_BARK_COUNTER, 1,
146 'after modifier is called if augment is used' );
148 local $TODO = "The method modifier isn't called if the augment specified it";
149 is( $Penguin::AUGMENT_CALLED, 2, 'augment is called' );
156 our $BEFORE_BARK_COUNTER=0;
167 before qw/bark bark_twice/ => sub {
168 $BEFORE_BARK_COUNTER++;
173 my $my_dog = MyDog->new;
176 is($MyDog::BEFORE_BARK_COUNTER, 2, "before method modifier is called twice");