tests for Sub::Quote/Sub::Defer in threads
[gitmo/Moo.git] / t / sub-defer-threads.t
1 use strictures 1;
2 use Test::More;
3 use Config;
4 BEGIN {
5   unless ($Config{useithreads} && eval { require threads } ) {
6     plan skip_all => "your perl does not support ithreads";
7   }
8 }
9
10 use Sub::Defer;
11
12 my %made;
13
14 my $one_defer = defer_sub 'Foo::one' => sub {
15   die "remade - wtf" if $made{'Foo::one'};
16   $made{'Foo::one'} = sub { 'one' }
17 };
18
19 ok(threads->create(sub {
20   my $info = Sub::Defer::defer_info($one_defer);
21   $info && $info->[0] eq 'Foo::one';
22 })->join, 'able to retrieve info in thread');
23
24 ok(threads->create(sub {
25   undefer_sub($one_defer);
26   $made{'Foo::one'} && $made{'Foo::one'} == \&Foo::one;
27 })->join, 'able to undefer in thread');
28
29 done_testing;