6 require Config; import Config;
7 unless ($Config{'useithreads'}) {
8 print "1..0 # Skip: no useithreads\n";
15 my ($id, $ok, $name) = @_;
17 $name = '' unless defined $name;
18 # You have to do it this way or VMS will get confused.
19 print $ok ? "ok $id - $name\n" : "not ok $id - $name\n";
21 printf "# Failed test at line %d\n", (caller)[2] unless $ok;
26 use ExtUtils::testlib;
28 BEGIN { print "1..11\n" };
39 ok(2, $av[0] eq "hi");
41 ok(3, $av[1] eq 'foo');
42 my $av = threads->create(sub {
48 push @$av, "bar", \@av;
51 ok(4,$av->[0] eq "bar");
52 ok(5,$av->[1]->[0] eq 'hi');
53 threads->create(sub { $av[0] = "hihi" })->join();
54 ok(6,$av->[1]->[0] eq 'hihi');
55 ok(7, pop(@{$av->[1]}) eq "foo");
56 ok(8, scalar(@{$av->[1]}) == 1);
57 threads->create(sub { @$av = () })->join();
58 threads->create(sub { ok(9, scalar @$av == 0)})->join();
59 threads->create(sub { unshift(@$av, threads->create(sub { my @array; share(@array); return \@array})->join())})->join();
60 ok(10, ref($av->[0]) eq 'ARRAY');
61 threads->create(sub { push @{$av->[0]}, \@av })->join();
62 threads->create(sub { $av[0] = 'testtest'})->join();
63 threads->create(sub { ok(11, $av->[0]->[0]->[0] eq 'testtest')})->join();