From 9979aff7f9998c68620504f37934bc9cd8e55661 Mon Sep 17 00:00:00 2001 From: "Toru, Kobayashi" Date: Sun, 2 Dec 2012 00:07:40 +0900 Subject: [PATCH] Sub::Rate::NoMaxRate accept a value bigger than max rate --- lib/Sub/Rate/NoMaxRate.pm | 9 +++++++++ t/nomaxrate.t | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/lib/Sub/Rate/NoMaxRate.pm b/lib/Sub/Rate/NoMaxRate.pm index 7db3939..40333f4 100644 --- a/lib/Sub/Rate/NoMaxRate.pm +++ b/lib/Sub/Rate/NoMaxRate.pm @@ -7,6 +7,15 @@ use List::Util 'sum'; extends 'Sub::Rate'; +before add => sub { + my ($self, $rate) = @_; + + my $max_rate = sum map { $_->[0] } @{ $self->_func }; + $max_rate += $rate; + $self->max_rate($max_rate); +}; + + before generate => sub { my ($self) = @_; diff --git a/t/nomaxrate.t b/t/nomaxrate.t index 2f374d9..6473124 100644 --- a/t/nomaxrate.t +++ b/t/nomaxrate.t @@ -22,4 +22,9 @@ is $loop_count, $r1 + $r2, 'loop count same as $r1 + $r2'; ok 2.0*0.95 <= $r2 / $r1 && $r2 / $r1 <= 2.0*1.05, '$r2/$1 about 20/10 ok'; +$sub->clear; + +eval { $sub->add(1000 => sub {}) }; +ok !$@, 'no error ok (over default max_rate)'; + done_testing;