5 if ($ENV{'PERL_CORE'}){
7 unshift(@INC, '../lib');
10 if (! $Config{'useithreads'}) {
11 print("1..0 # Skip: Perl not compiled with 'useithreads'\n");
20 require 't/test.pl'; # Test::More work-alike for Perl 5.8.0
27 my $q = Thread::Queue->new(1..10);
37 my @x = $q->dequeue_nb(100);
38 is_deeply(\@x, [1..10], 'No-op inserts');
41 $q = Thread::Queue->new(1..10);
45 $q->insert(10, qw/tail/);
46 $q->insert(0, qw/head/);
49 @x = $q->dequeue_nb(100);
50 is_deeply(\@x, ['head',1..10,'tail'], 'Edge inserts');
53 $q = Thread::Queue->new(1..10);
57 $q->insert(5, qw/foo bar/);
58 $q->insert(-2, qw/qux/);
61 @x = $q->dequeue_nb(100);
62 is_deeply(\@x, [1..5,'foo','bar',6..8,'qux',9,10], 'Middle inserts');
65 $q = Thread::Queue->new(1..10);
69 $q->insert(20, qw/tail/);
70 $q->insert(-20, qw/head/);
73 @x = $q->dequeue_nb(100);
74 is_deeply(\@x, ['head',1..10,'tail'], 'Extreme inserts');
77 $q = Thread::Queue->new();
79 threads->create(sub { $q->insert(0, 1..3); })->join();
80 @x = $q->dequeue_nb(100);
81 is_deeply(\@x, [1..3], 'Empty queue insert');
83 $q = Thread::Queue->new();
85 threads->create(sub { $q->insert(20, 1..3); })->join();
86 @x = $q->dequeue_nb(100);
87 is_deeply(\@x, [1..3], 'Empty queue insert');
89 $q = Thread::Queue->new();
91 threads->create(sub { $q->insert(-1, 1..3); })->join();
92 @x = $q->dequeue_nb(100);
93 is_deeply(\@x, [1..3], 'Empty queue insert');
95 $q = Thread::Queue->new();
101 @x = $q->dequeue_nb(100);
102 is_deeply(\@x, [1,'foo',2,3], 'Empty queue insert');