Redid conversion to Test::Fatal
[gitmo/Moose.git] / t / 010_basics / 010_method_modifier_with_regexp.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Fatal;
8
9
10 {
11
12     package Dog;
13     use Moose;
14
15     sub bark_once {
16         my $self = shift;
17         return 'bark';
18     }
19
20     sub bark_twice {
21         return 'barkbark';
22     }
23
24     around qr/bark.*/ => sub {
25         'Dog::around(' . $_[0]->() . ')';
26     };
27
28 }
29
30 my $dog = Dog->new;
31 is( $dog->bark_once,  'Dog::around(bark)', 'around modifier is called' );
32 is( $dog->bark_twice, 'Dog::around(barkbark)', 'around modifier is called' );
33
34 {
35
36     package Cat;
37     use Moose;
38     our $BEFORE_BARK_COUNTER = 0;
39     our $AFTER_BARK_COUNTER  = 0;
40
41     sub bark_once {
42         my $self = shift;
43         return 'bark';
44     }
45
46     sub bark_twice {
47         return 'barkbark';
48     }
49
50     before qr/bark.*/ => sub {
51         $BEFORE_BARK_COUNTER++;
52     };
53
54     after qr/bark.*/ => sub {
55         $AFTER_BARK_COUNTER++;
56     };
57
58 }
59
60 my $cat = Cat->new;
61 $cat->bark_once;
62 is( $Cat::BEFORE_BARK_COUNTER, 1, 'before modifier is called once' );
63 is( $Cat::AFTER_BARK_COUNTER,  1, 'after modifier is called once' );
64 $cat->bark_twice;
65 is( $Cat::BEFORE_BARK_COUNTER, 2, 'before modifier is called twice' );
66 is( $Cat::AFTER_BARK_COUNTER,  2, 'after modifier is called twice' );
67
68 {
69     package Dog::Role;
70     use Moose::Role;
71
72     ::isnt( ::exception {
73         before qr/bark.*/ => sub {};
74     }, undef, '... this is not currently supported' );
75
76     ::isnt( ::exception {
77         around qr/bark.*/ => sub {};
78     }, undef, '... this is not currently supported' );
79
80     ::isnt( ::exception {
81         after  qr/bark.*/ => sub {};
82     }, undef, '... this is not currently supported' );
83
84 }
85
86 done_testing;