File Coverage

blib/lib/Mockery.pm
Criterion Covered Total %
statement 51 51 100.0
branch 1 2 50.0
condition 2 4 50.0
subroutine 14 14 100.0
pod 0 5 0.0
total 68 76 89.4


line stmt bran cond sub pod time code
1             package Mockery;
2 2     2   278733 use 5.006; use strict; use warnings;
  2     2   8  
  2     2   12  
  2         3  
  2         100  
  2         26  
  2         6  
  2         323  
3             our $VERSION = '0.02';
4              
5             sub new {
6 1   50 1 0 242346 return bless $_[1] || {}, $_[0];
7             }
8              
9             sub action {
10 4     4 0 17 my ($self, %mockery) = @_;
11             {
12 2     2   14 no strict 'refs';
  2         6  
  2         77  
  4         4  
13 2     2   14 no warnings 'redefine';
  2         14  
  2         1190  
14 4         5 for (keys %{ $mockery{methods} }) {
  4         12  
15 4         5 *{"$mockery{class}::$_"} = $mockery{methods}{$_};
  4         30  
16             }
17            
18             }
19             }
20              
21             sub fake {
22 1     1 0 571 my ($self, %mockery) = @_;
23 1         2 my $module = qq{
24             package $mockery{class};
25             use strict;
26             use warnings;
27             sub new {
28             bless \$_[1] || {}, \$_[0];
29             }
30             1;
31             };
32 1   50 1   64 eval $module;
  1     1   6  
  1         1  
  1         31  
  1         4  
  1         1  
  1         67  
33 1 50       4 die $@ if $@;
34 1         4 $self->action(%mockery);
35 1         2 return $mockery{class};
36             }
37              
38             sub true {
39 2     2 0 574 my ($self, %mockery) = @_;
40 1         2 my @methods = @{$mockery{methods}};
  1         2  
41 1         2 $mockery{methods} = {};
42 1     1   5 my $sub = sub { return 1; };
  1         5  
43 1         2 for (@methods) {
44 1         3 $mockery{methods}{$_} = $sub;
45             }
46 1         3 $_[0]->action(%mockery);
47             }
48              
49             sub false {
50 1     1 0 4 my ($self, %mockery) = @_;
51 1         1 my @methods = @{$mockery{methods}};
  1         3  
52 1         2 $mockery{methods} = {};
53 1     1   3 my $sub = sub { return 0; };
  1         3  
54 1         2 for (@methods) {
55 1         4 $mockery{methods}{$_} = $sub;
56             }
57 1         3 $_[0]->action(%mockery);
58             }
59              
60              
61             1;
62              
63             __END__