use strict;
use warnings;
use Data::Monad::CondVar;
use Test::More;
sub cv {
my @v = @_;
my $cv = AE::cv;
my $t; $t = AE::timer .02, 0, sub { $cv->send(@v); undef $t };
$cv;
}
my $repeated = cv('', 0)->while(sub {
my ($str, $n) = @_;
$n < 5;
}, sub {
my ($str, $n) = @_;
cv("$str*", $n + 1)
});
my ($str, $n) = $repeated->recv;
is $str, "*****";
done_testing;