CPS
view release on metacpan or search on metacpan
t/21governor-deferred.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use CPS::Governor::Deferred;
my $gov = CPS::Governor::Deferred->new;
ok( defined $gov, 'defined $gov' );
isa_ok( $gov, "CPS::Governor", '$gov' );
ok( !$gov->is_pending, '$gov not yet pending' );
my $called = 0;
$gov->again( sub { $called = 1 } );
ok( $gov->is_pending, '$gov now pending' );
is( $called, 0, '$called still 0' );
$gov->prod;
ok( !$gov->is_pending, '$gov no longer pending after prod' );
is( $called, 1, '$called is 1 after prod' );
$gov->again( sub {
$called = 2;
$gov->again( sub {
$called = 3;
} );
} );
$gov->prod;
ok( $gov->is_pending, '$gov is still pending after again-in-again' );
is( $called, 2, '$called is 2 after-in-again' );
$gov->prod;
ok( !$gov->is_pending, '$gov no longer pending after inner again' );
is( $called, 3, '$called is 3 after inner again' );
$gov->again( sub {
$called = 4;
$gov->again( sub {
$called = 5;
} );
} );
$gov->flush;
ok( !$gov->is_pending, '$gov no longer pending after flush' );
is( $called, 5, '$called is 5 after flush' );
$gov = CPS::Governor::Deferred->new( defer_after => 3 );
$called = 0;
sub more
{
$called >= 6 and return;
$called++;
$gov->again( \&more );
}
more();
is( $called, 3, '$called is 3 after first again' );
$gov->prod;
is( $called, 6, '$called is 6 after poke' );
done_testing;
( run in 0.945 second using v1.01-cache-2.11-cpan-c333fce770f )