File Coverage

blib/lib/Data/RandomPerson/Choice.pm
Criterion Covered Total %
statement 22 22 100.0
branch 2 2 100.0
condition 2 2 100.0
subroutine 7 7 100.0
pod 5 5 100.0
total 38 38 100.0


line stmt bran cond sub pod time code
1             package Data::RandomPerson::Choice;
2              
3 6     6   612 use strict;
  6         8  
  6         198  
4 6     6   24 use warnings;
  6         6  
  6         1092  
5              
6             sub new {
7 55     55 1 844 my ($class) = @_;
8              
9 55         387 return bless {}, $class;
10             }
11              
12             sub add {
13 66     66 1 484 my ( $self, $value, $count ) = @_;
14              
15 66   100     160 $count ||= 1;
16              
17 66         93 push @{ $self->{data} }, $value foreach ( 1 .. $count );
  528         706  
18 66         133 $self->{size} += $count;
19             }
20              
21             sub add_list {
22 35     35 1 16359 my ( $self, @list ) = @_;
23              
24 35         47 push @{ $self->{data} }, @list;
  35         22355  
25 35         7792 $self->{size} += scalar(@list);
26             }
27              
28             sub size {
29 34     34 1 42 my ($self) = @_;
30              
31 34         125 return $self->{size};
32             }
33              
34             sub pick {
35 2562     2562 1 3501 my ($self) = @_;
36              
37 2562 100       3514 die "No data has been added to the list" unless $self->{size};
38              
39 2561         5236 return $self->{data}[ int( rand( $self->{size} ) ) ];
40             }
41              
42             1;
43              
44             __END__