6 if (! $Config{'useithreads'}) {
7 print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
16 require 't/test.pl'; # Test::More work-alike for Perl 5.8.0
23 my $q = Thread::Queue->new(1..10);
33 my @x = $q->dequeue_nb(100);
34 is_deeply(\@x, [1..10], 'No-op inserts');
37 $q = Thread::Queue->new(1..10);
41 $q->insert(10, qw/tail/);
42 $q->insert(0, qw/head/);
45 @x = $q->dequeue_nb(100);
46 is_deeply(\@x, ['head',1..10,'tail'], 'Edge inserts');
49 $q = Thread::Queue->new(1..10);
53 $q->insert(5, qw/foo bar/);
54 $q->insert(-2, qw/qux/);
57 @x = $q->dequeue_nb(100);
58 is_deeply(\@x, [1..5,'foo','bar',6..8,'qux',9,10], 'Middle inserts');
61 $q = Thread::Queue->new(1..10);
65 $q->insert(20, qw/tail/);
66 $q->insert(-20, qw/head/);
69 @x = $q->dequeue_nb(100);
70 is_deeply(\@x, ['head',1..10,'tail'], 'Extreme inserts');
73 $q = Thread::Queue->new();
75 threads->create(sub { $q->insert(0, 1..3); })->join();
76 @x = $q->dequeue_nb(100);
77 is_deeply(\@x, [1..3], 'Empty queue insert');
79 $q = Thread::Queue->new();
81 threads->create(sub { $q->insert(20, 1..3); })->join();
82 @x = $q->dequeue_nb(100);
83 is_deeply(\@x, [1..3], 'Empty queue insert');
85 $q = Thread::Queue->new();
87 threads->create(sub { $q->insert(-1, 1..3); })->join();
88 @x = $q->dequeue_nb(100);
89 is_deeply(\@x, [1..3], 'Empty queue insert');
91 $q = Thread::Queue->new();
97 @x = $q->dequeue_nb(100);
98 is_deeply(\@x, [1,'foo',2,3], 'Empty queue insert');