AnyEvent-Tools
view release on metacpan or search on metacpan
t/07_buffer.t view on Meta::CPAN
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
use open qw(:std :utf8);
use lib qw(lib ../lib);
use Test::More tests => 25;
use Encode qw(decode encode);
use Time::HiRes qw(time);
use AnyEvent;
BEGIN {
# ÐодгоÑовка обÑекÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ utf8
my $builder = Test::More->builder;
binmode $builder->output, ":utf8";
binmode $builder->failure_output, ":utf8";
binmode $builder->todo_output, ":utf8";
use_ok 'AnyEvent::AggressiveIdle', 'aggressive_idle';
use_ok 'AnyEvent::Tools', 'buffer';
}
{
my @res;
my $cv = condvar AnyEvent;
my $number = 1;
my $b = buffer
size => 5,
on_flush => sub {
my ($g, $a) = @_;
push @res, $a;
};
my $idle;
$idle = aggressive_idle sub {
$b->push($number++);
if ($number > 100) {
$b->flush;
undef $idle;
$cv->send;
}
};
$cv->recv;
ok @res == grep({@$_ == 5} @res), "Flush buffer after overflow";
}
{
my @res;
my $cv = condvar AnyEvent;
my $number = 1;
my $count = 0;
my $b;
my $idle;
$b = buffer
size => 5,
on_flush => sub {
my ($g, $a) = @_;
if ($count++ == 3) {
my $timer;
$timer = AE::timer 0.0005, 0 => sub {
$b->unshift_back($a);
undef $g;
undef $timer;
( run in 1.628 second using v1.01-cache-2.11-cpan-39bf76dae61 )