xref: /openbsd-src/gnu/usr.bin/perl/dist/Thread-Queue/t/03_peek.t (revision f3efcd0145415b7d44d9da97e0ad5c21b186ac61)
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