File Coverage

blib/lib/MIDI/Stream/FIFO.pm
Criterion Covered Total %
statement 12 12 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 17 17 100.0


line stmt bran cond sub pod time code
1 13     13   189 use v5.26;
  13         74  
2 13     13   101 use warnings;
  13         23  
  13         689  
3 13     13   69 use Feature::Compat::Class;
  13         21  
  13         106  
4              
5             # ABSTRACT: Fixed Size FIFO/Queue for rolling averages
6              
7             package MIDI::Stream::FIFO;
8             class MIDI::Stream::FIFO;
9              
10             our $VERSION = '0.005';
11              
12 13     13   3942 use List::Util qw/ reduce /;
  13         24  
  13         4176  
13              
14             field $length :param = 24;
15             field @members;
16              
17             field $average;
18              
19             method add( $member ) {
20             undef $average;
21             unshift @members, $member;
22             splice @members, $length if @members > $length;
23             }
24              
25             method average {
26             return 0 unless @members;
27 9     9   22 $average //= ( reduce { $a + $b } @members ) / @members;
28             }
29              
30             1;
31              
32             __END__