diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-03-10 19:55:44 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-03-10 19:55:44 +0000 |
commit | 8cc5160aefb2ba3611d1d5d6b12b996227f9da72 (patch) | |
tree | 256923c9d568f659ca72d254993e6a40c439a7b5 /t/30utils-call.t | |
download | Future-tarball-8cc5160aefb2ba3611d1d5d6b12b996227f9da72.tar.gz |
Future-0.32HEADFuture-0.32master
Diffstat (limited to 't/30utils-call.t')
-rw-r--r-- | t/30utils-call.t | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/t/30utils-call.t b/t/30utils-call.t new file mode 100644 index 0000000..221d302 --- /dev/null +++ b/t/30utils-call.t @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More; +use Test::Identity; + +use Future; +use Future::Utils qw( call ); + +# call returns future +{ + my $ret_f; + my $f = call { + return $ret_f = Future->new; + }; + + identical( $f, $ret_f, 'call() returns future returned from its code' ); + $f->cancel; +} + +# call returns immediate failure on die +{ + my $f = call { + die "argh!\n"; + }; + + ok( $f->is_ready, 'call() returns immediate future on die' ); + is( scalar $f->failure, "argh!\n", 'failure from immediate future on die' ); +} + +# call returns immediate failure on non-Future return +{ + my $f = call { + return "non-future"; + }; + + ok( $f->is_ready, 'call() returns immediate future on non-future return' ); + like( scalar $f->failure, qr/^Expected __ANON__.*\(\S+ line \d+\) to return a Future$/, + 'failure from immediate future on non-future return' ); +} + +done_testing; |