use strictures 1;
use Test::More;
+use Object::Remote;
+use File::Spec;
+
+require 't/logsetup.pl';
{
package S1S;
our $C;
sub get_s2 {
+ shift->maybe::start::_real_get_s2;
+ }
+
+ sub _real_get_s2 {
future {
my $f = shift;
- $C = sub { $f->done(S2F->new); undef($f); };
+ $C = sub { $f->done(S2F->new); undef($f); undef($C); };
$f;
}
}
sub get_s3 {
future {
my $f = shift;
- $C = sub { $f->done('S3'); undef($f); };
+ $C = sub { $f->done('S3'); undef($f); undef($C); };
$f;
}
}
is($res, 'S3', 'Asynchronous code ok');
+is(S1S->get_s2->get_s3, 'S3', 'Sync without start');
+
+Object::Remote->current_loop->watch_time(
+ after => 0.1,
+ code => sub {
+ $S1F::C->();
+ Object::Remote->current_loop->watch_time(
+ after => 0.1,
+ code => sub { $S2F::C->() }
+ );
+ }
+);
+
+is(S1F->get_s2->get_s3, 'S3', 'Async without start');
+
done_testing;