summaryrefslogtreecommitdiff
path: root/t/30utils-call.t
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-03-10 19:55:44 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-03-10 19:55:44 +0000
commit8cc5160aefb2ba3611d1d5d6b12b996227f9da72 (patch)
tree256923c9d568f659ca72d254993e6a40c439a7b5 /t/30utils-call.t
downloadFuture-tarball-8cc5160aefb2ba3611d1d5d6b12b996227f9da72.tar.gz
Diffstat (limited to 't/30utils-call.t')
-rw-r--r--t/30utils-call.t44
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;