File Coverage

blib/lib/Math/RNG/Microsoft/Base.pm
Criterion Covered Total %
statement 26 28 92.8
branch 3 6 50.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 37 42 88.1


line stmt bran cond sub pod time code
1             package Math::RNG::Microsoft::Base;
2             $Math::RNG::Microsoft::Base::VERSION = '0.4.0';
3 4     4   316217 use 5.006;
  4         13  
4 4     4   17 use strict;
  4         9  
  4         95  
5 4     4   1056 use warnings;
  4         10  
  4         217  
6              
7              
8 4     4   498 use integer;
  4         19  
  4         26  
9              
10             sub fresh_shuffle
11             {
12 4     4 1 571 my ( $self, $deck ) = @_;
13              
14 4 50       15 if ( not scalar(@$deck) )
15             {
16 0         0 return [];
17             }
18 4         11 my @d = @$deck;
19              
20 4         6 my $i = scalar(@d);
21 4         12 while ( --$i )
22             {
23 36         1259 my $j = scalar( $self->max_rand( $i + 1 ) );
24 36         7453 @d[ $i, $j ] = @d[ $j, $i ];
25             }
26              
27 4         139 return scalar( \@d );
28             }
29              
30             sub shuffle
31             {
32 2     2 1 1024 my ( $obj, $deck ) = @_;
33              
34 2         6 my $len = scalar(@$deck);
35 2         16 my $return = scalar( $obj->fresh_shuffle( scalar($deck) ) );
36 2 50       8 if ($len)
37             {
38 2 50       10 if ( $return eq $deck )
39             {
40 0         0 die;
41             }
42 2         10 @$deck = @$return;
43             }
44              
45 2         8 return $deck;
46             }
47              
48              
49             1; # End of Math::RNG::Microsoft
50              
51             __END__