File Coverage

blib/lib/Test/Mockify/CompatibilityTools.pm
Criterion Covered Total %
statement 46 47 97.8
branch 13 14 92.8
condition 2 3 66.6
subroutine 8 8 100.0
pod 0 3 0.0
total 69 75 92.0


line stmt bran cond sub pod time code
1             package Test::Mockify::CompatibilityTools;
2 5     5   17154 use base qw ( Exporter );
  5         7  
  5         385  
3 5     5   20 use strict;
  5         7  
  5         78  
4 5     5   14 use warnings;
  5         6  
  5         149  
5 5     5   338 use Test::Mockify::Matcher qw (SupportedTypes);
  5         6  
  5         211  
6 5     5   19 use Test::Mockify::TypeTests qw ( IsString );
  5         6  
  5         2621  
7              
8             our @EXPORT_OK = qw (
9             MigrateOldMatchers
10             );
11             #---------------------------------------------------------------------------------------------------
12             sub MigrateOldMatchers {
13 31     31 0 537     my ( $Parameters ) = @_;
14 31         53     $Parameters = IntAndFloat2Number( $Parameters );
15 31         40     $Parameters = MigrateMatcherFormat( $Parameters );
16 30         44     return $Parameters;
17             }
18             #---------------------------------------------------------------------------------------------------
19             sub MigrateMatcherFormat {
20 31     31 0 77     my ( $Parameters ) = @_;
21              
22 31         31     foreach my $Parameter (@{$Parameters}){
  31         44  
23 58 100       91         if( ref($Parameter) eq 'HASH'){
24 19 50       54             if($Parameter->{'Type'} ~~ SupportedTypes()){
25 0         0                 return $Parameter;
26                         }
27 19         46             my @ParameterKeys = keys %$Parameter;
28 19         30             my @ParameterValues = values %$Parameter;
29 19         53             $Parameter = {
30                                 'Type' => $ParameterKeys[0],
31                                 'Value' => $ParameterValues[0],
32                         };
33                     } else {
34 39 100 66     72             if(IsString($Parameter) && $Parameter ~~ SupportedTypes()){
35 38         139                 $Parameter = {
36                                 'Type' => $Parameter,
37                                 'Value' => undef,
38                             };
39                         }else{
40 1         12                 die("Found unsupported type, '$Parameter'. Use Test::Mockify:Matcher to define nice parameter types.");
41                         }
42                     }
43                 }
44              
45 30         35     return $Parameters;
46             }
47             #---------------------------------------------------------------------------------------------------
48             sub IntAndFloat2Number {
49 31     31 0 22     my ( $aParameterTypes ) = @_;
50              
51 31         23     my @NewParams;
52 31         42     for(my $i = 0; $i < scalar @{$aParameterTypes}; $i++){
  89         388  
53 58 100       89         if(ref($aParameterTypes->[$i]) eq 'HASH'){
54 19         16             my $ExpectedValue;
55 19 100       48             if($aParameterTypes->[$i]->{'int'}){
    100          
56 2         6                 $ExpectedValue = {'number' => $aParameterTypes->[$i]->{'int'}};
57                         }elsif($aParameterTypes->[$i]->{'float'}){
58 2         5                 $ExpectedValue = {'number' => $aParameterTypes->[$i]->{'float'}};
59                         }else{
60 15         14                 $ExpectedValue = $aParameterTypes->[$i];
61                         }
62 19         30             $NewParams[$i] = $ExpectedValue;
63                     }else{
64 39 100       101             if( $aParameterTypes->[$i] ~~ ['int', 'float']){
65 6         10                 $NewParams[$i] = 'number';
66                         } else{
67 33         49                 $NewParams[$i] = $aParameterTypes->[$i];
68                         }
69                     }
70                 }
71 31         49     return \@NewParams;
72             }
73             1;