File Coverage

blib/lib/Weixin/Client/Friend.pm
Criterion Covered Total %
statement 6 39 15.3
branch 0 10 0.0
condition n/a
subroutine 2 9 22.2
pod 0 4 0.0
total 8 62 12.9


line stmt bran cond sub pod time code
1             package Weixin::Client::Friend;
2 1     1   5 use List::Util qw(first);
  1         1  
  1         58  
3 1     1   509 use Weixin::Client::Private::_update_friend;
  1         2  
  1         252  
4             sub add_friend{
5 0     0 0   my $self = shift;
6 0           my $friend = shift;
7 0     0     my $f = first {$friend->{Uin} eq $_->{Uin}} @{$self->{_data}{friend}};
  0            
  0            
8 0 0         if(defined $f){
9 0           $f = $friend;
10             }
11             else{
12 0           push @{$self->{_data}{friend}},$friend;
  0            
13             }
14             }
15             sub del_friend{
16 0     0 0   my $self = shift;
17 0           my $id = shift;
18 0           for(my $i=0;$i<@{$self->{_data}{friend}};$i++){
  0            
19 0 0         if($self->{_data}{friend}[$i]{Id} eq $id){
20 0           splice @{$self->{_data}{friend}},$i,1;
  0            
21 0           return 1;
22             }
23             }
24 0           return 0;
25             }
26             sub search_friend{
27 0     0 0   my $self = shift;
28 0           my %p = @_;
29 0 0         if(wantarray){
30 0 0   0     return grep {my $f = $_;(first {$p{$_} ne $f->{$_}} keys %p) ? 0 : 1;} @{$self->{_data}{friend}};
  0            
  0            
  0            
  0            
31             }
32             else{
33 0 0   0     return first {my $f = $_;(first {$p{$_} ne $f->{$_}} keys %p) ? 0 : 1;} @{$self->{_data}{friend}};
  0            
  0            
  0            
  0            
34             }
35             }
36             sub update_friend {
37 0     0 0   my $self = shift;
38 0           $self->_update_friend();
39             }
40             1;