The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

BEGIN { # Magic Perl CORE pragma
if ($ENV{PERL_CORE}) {
chdir 't' if -d 't';
@INC = '../lib';
}
}
use Test::More tests => 13;
BEGIN { use_ok('threads') }
BEGIN { use_ok('threads::shared::queue::any') }
my $q = threads::shared::queue::any->new;
isa_ok( $q, 'threads::shared::queue::any', 'check object type' );
$q->enqueue( qw(a b c) );
$q->enqueue( [qw(a b c)] );
$q->enqueue( {a => 1, b => 2, c => 3} );
is( $q->pending, 3, 'check number pending');
my @l = $q->dequeue;
is( @l, 3, 'check # elements simple list' );
ok( $l[0] eq 'a' and $l[1] eq 'b' and $l[2] eq 'c', 'check simple list' );
my @lr = $q->dequeue_nb;
cmp_ok( @lr, '==', 1, 'check # elements list ref' );
is( ref($lr[0]), 'ARRAY', 'check type of list ref' );
ok(
$lr[0]->[0] eq 'a' and $lr[0]->[1] eq 'b' and $lr[0]->[2] eq 'c',
'check list ref'
);
my @hr = $q->dequeue;
cmp_ok( @hr, '==', 1, 'check # elements hash ref' );
is( ref($hr[0]), 'HASH', 'check type of hash ref' );
ok(
$hr[0]->{a} == 1 and $hr[0]->{b} == 2 and $hr[0]->{c} == 3,
'check hash ref'
);
my @e = $q->dequeue_nb;
cmp_ok( @e, '==', 0, 'check # elements non blocking' );