1b39c5158Smillertuse strict; 2b39c5158Smillertuse warnings; 3b39c5158Smillert 4b39c5158SmillertBEGIN { 5b39c5158Smillert use Config; 6b39c5158Smillert if (! $Config{'useithreads'}) { 7b39c5158Smillert print("1..0 # SKIP Perl not compiled with 'useithreads'\n"); 8b39c5158Smillert exit(0); 9b39c5158Smillert } 10b39c5158Smillert} 11b39c5158Smillert 12b39c5158Smillertuse threads; 13b39c5158Smillertuse Thread::Queue; 14b39c5158Smillert 15*f3efcd01Safresh1BEGIN { # perl RT 133382 16b39c5158Smillertif ($] == 5.008) { 17b39c5158Smillert require 't/test.pl'; # Test::More work-alike for Perl 5.8.0 18b39c5158Smillert} else { 19b39c5158Smillert require Test::More; 20b39c5158Smillert} 21b39c5158SmillertTest::More->import(); 22*f3efcd01Safresh1} # end BEGIN 23b39c5158Smillertplan('tests' => 19); 24b39c5158Smillert 25b39c5158Smillertmy $q = Thread::Queue->new(1..10); 26b39c5158Smillertok($q, 'New queue'); 27b39c5158Smillert 28b39c5158Smillert$q->enqueue([ qw/foo bar/ ]); 29b39c5158Smillert 30b39c5158Smillertsub q_check 31b39c5158Smillert{ 32b39c5158Smillert is($q->peek(3), 4, 'Peek at queue'); 33b39c5158Smillert is($q->peek(-3), 9, 'Negative peek'); 34b39c5158Smillert 35b39c5158Smillert my $nada = $q->peek(20); 36b39c5158Smillert ok(! defined($nada), 'Big peek'); 37b39c5158Smillert $nada = $q->peek(-20); 38b39c5158Smillert ok(! defined($nada), 'Big negative peek'); 39b39c5158Smillert 40b39c5158Smillert my $ary = $q->peek(-1); 41b39c5158Smillert is_deeply($ary, [ qw/foo bar/ ], 'Peek array'); 42b39c5158Smillert 43b39c5158Smillert is($q->pending(), 11, 'Queue count in thread'); 44b39c5158Smillert} 45b39c5158Smillert 46b39c5158Smillertthreads->create(sub { 47b39c5158Smillert q_check(); 48b39c5158Smillert threads->create('q_check')->join(); 49b39c5158Smillert})->join(); 50b39c5158Smillertq_check(); 51b39c5158Smillert 52b39c5158Smillertexit(0); 53b39c5158Smillert 54b39c5158Smillert# EOF 55