File Coverage

blib/lib/Test/Mockify/MethodCallCounter.pm
Criterion Covered Total %
statement 27 27 100.0
branch 2 2 100.0
condition n/a
subroutine 7 7 100.0
pod 0 4 0.0
total 36 40 90.0


line stmt bran cond sub pod time code
1             #========================================================================================
2             # §package MethodCallCounter
3             # §state public
4             #----------------------------------------------------------------------------------------
5             # §description encapsulate the Call Counter for Mockify
6             #========================================================================================
7             package Test::Mockify::MethodCallCounter;
8              
9 2     2   7 use Test::Mockify::Tools qw ( Error );
  2         2  
  2         72  
10              
11 2     2   6 use strict;
  2         3  
  2         340  
12             #========================================================================================
13             # §function new
14             # §state public
15             #----------------------------------------------------------------------------------------
16             # §syntax new( );
17             #----------------------------------------------------------------------------------------
18             # §description constructor
19             #----------------------------------------------------------------------------------------
20             # §return $self | self | MethodCallCounter
21             #========================================================================================
22             sub new {
23 45     45 0 41     my $class = shift;
24 45         59     my $self = bless {}, $class;
25 45         177     return $self;
26             }
27             #========================================================================================
28             # §function addMethod
29             # §state public
30             #----------------------------------------------------------------------------------------
31             # §syntax addMethod( $MethodName );
32             #----------------------------------------------------------------------------------------
33             # §description add the Method '$MethodName' to the counter
34             #----------------------------------------------------------------------------------------
35             # §input $MethodName | name of method | string
36             #========================================================================================
37             sub addMethod {
38 40     40 0 36     my $self = shift;
39 40         37     my ( $MethodName ) = @_;
40              
41 40         54     $self->{$MethodName} = 0;
42              
43 40         51     return;
44             }
45             #========================================================================================
46             # §function increment
47             # §state public
48             #----------------------------------------------------------------------------------------
49             # §syntax increment( $MethodName );
50             #----------------------------------------------------------------------------------------
51             # §description increment the the counter for the Method '$MethodName'
52             #----------------------------------------------------------------------------------------
53             # §input $MethodName | name of method | string
54             #========================================================================================
55             sub increment {
56 46     46 0 44     my $self = shift;
57 46         36     my ( $MethodName ) = @_;
58              
59 46         62     $self->_testIfMethodWasAdded( $MethodName );
60 46         46     $self->{$MethodName} += 1;
61              
62 46         77     return;
63             }
64             #========================================================================================
65             # §function getAmountOfCalls
66             # §state public
67             #----------------------------------------------------------------------------------------
68             # §syntax getAmountOfCalls( $MethodName );
69             #----------------------------------------------------------------------------------------
70             # §description returns the amount of calls for the method '$MethodName'
71             # throws error if the method was not added to Mockify
72             #----------------------------------------------------------------------------------------
73             # §input $MethodName | name of method | string
74             # §return $AmountOfCalls | Amount of calles | integer
75             #========================================================================================
76             sub getAmountOfCalls {
77 11     11 0 9     my $self = shift;
78 11         11     my ( $MethodName ) = @_;
79              
80 11         13     $self->_testIfMethodWasAdded( $MethodName );
81 10         11     my $AmountOfCalls = $self->{ $MethodName };
82              
83 10         17     return $AmountOfCalls;
84             }
85             #----------------------------------------------------------------------------------------
86             sub _testIfMethodWasAdded {
87 57     57   43     my $self = shift;
88 57         38     my ( $MethodName ) = @_;
89              
90 57 100       140     if( not exists $self->{ $MethodName } ){
91 1         12         Error( "The Method: '$MethodName' was not added to Mockify" );
92                 }
93             }
94             1;