diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-01 00:02:49 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-01 00:02:49 +0000 |
commit | bf3d9ec563d250542a3477e399206648d90ace80 (patch) | |
tree | 0b1e42a25ebfe5657b68f203bdf8f49914e69213 /t | |
parent | f0f333f45536802923a359d930d1dcfd5b4589ea (diff) | |
download | perl-bf3d9ec563d250542a3477e399206648d90ace80.tar.gz |
Test changes
p4raw-id: //depot/ansiperl@197
Diffstat (limited to 't')
-rw-r--r-- | t/lib/thread.t | 54 | ||||
-rw-r--r-- | t/op/nothread.t | 35 |
2 files changed, 89 insertions, 0 deletions
diff --git a/t/lib/thread.t b/t/lib/thread.t new file mode 100644 index 0000000000..798adc12be --- /dev/null +++ b/t/lib/thread.t @@ -0,0 +1,54 @@ +#!perl + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require Config; import Config; + if ($Config{'ccflags'} !~ /-DUSE_THREADS\b/) { + print "1..0\n"; + exit 0; + } +} +$| = 1; +print "1..9\n"; +use Thread; +print "ok 1\n"; + +sub content +{ + print shift; + return shift; +} + +# create a thread passing args and immedaietly wait for it. +my $t = new Thread \&content,("ok 2\n","ok 3\n"); +print $t->join; + +# check that lock works ... +{lock $foo; + $t = new Thread sub { lock $foo; print "ok 5\n" }; + print "ok 4\n"; +} +$t->join; + +sub islocked +{ + use attrs 'locked'; + my $val = shift; + my $ret; + if (@_) + { + $ret = new Thread \&islocked,shift; + sleep 2; + } + print $val; +} + +$t = islocked("ok 6\n","ok 7\n"); +join $t; + +# test that sleep lets other thread run +$t = new Thread \&islocked,"ok 8\n"; +sleep 2; +print "ok 9"; +join $t; diff --git a/t/op/nothread.t b/t/op/nothread.t new file mode 100644 index 0000000000..acc20890ae --- /dev/null +++ b/t/op/nothread.t @@ -0,0 +1,35 @@ +#!./perl + +# NOTE: Please don't add tests to this file unless they *need* to be run in +# separate executable and can't simply use eval. + +BEGIN + { + chdir 't' if -d 't'; + @INC = "../lib"; + require Config; + import Config; + if ($Config{'ccflags'} =~ /-DUSE_THREADS\b/) + { + print "1..0\n"; + exit 0; + } + } + + +$|=1; + +print "1..9\n"; +$t = 1; +sub foo { local(@_) = ('p', 'q', 'r'); } +sub bar { unshift @_, 'D'; @_ } +sub baz { push @_, 'E'; return @_ } +for (1..3) + { + print "not " unless join('',foo('a', 'b', 'c')) eq 'pqr'; + print "ok ",$t++,"\n"; + print "not" unless join('',bar('d')) eq 'Dd'; + print "ok ",$t++,"\n"; + print "not" unless join('',baz('e')) eq 'eE'; + print "ok ",$t++,"\n"; + } |