#!/usr/bin/perl use strict; use warnings; $|=1; BEGIN { $] < 5.013 or eval q{ use Test::More skip_all => 'threads not yet supported in perl 5.13+'; exit; }; eval q{ use 5.010_001; BEGIN {die if %Devel::Cover::} use threads; use threads::shared; 1} or eval q{ use Test::More skip_all => 'could not use threads'; exit; } } use Test::More tests => 13; use lib qw(../lib lib t/lib); use List::Gen '*'; use List::Gen::Testing; { my $gen = gen {$_**2} 10; t 'threads_all', is_deeply => [$gen->threads_all], [$gen->all]; $gen->threads_stop; } { my $gen = gen {$_**2} 10; t 'threads_all implicit stop', is_deeply => [$gen->threads_all], [$gen->all]; } for (0 .. 9) { my $gen = gen {$_**2} $_; t "threads_all size $_", is_deeply => [$gen->threads_all], [$gen->all]; } { my $fib; $fib = cache gen {$_ < 2 ? $_ : $fib->($_ - 1) + $fib->($_ - 2)}; t 'threads_slice precached', is_deeply => [$fib->threads_slice(0 .. 100)], [$fib->slice(0 .. 100)]; $fib->threads_stop; }