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' );