diff options
author | Nicholas Clark <nick@ccl4.org> | 2009-02-09 21:07:00 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2009-02-09 21:35:11 +0000 |
commit | 3831a7876983b591d0421b0d72b1865c6adac0c1 (patch) | |
tree | f734c30990a9e8791c2cc1eebdc45c94a4c77658 /ext/threads-shared/t/sv_simple.t | |
parent | 2336398ced407314bc7337ba89847a0183e6b314 (diff) | |
download | perl-3831a7876983b591d0421b0d72b1865c6adac0c1.tar.gz |
Rename ext/threads/shared to ext/threads-shared
Diffstat (limited to 'ext/threads-shared/t/sv_simple.t')
-rw-r--r-- | ext/threads-shared/t/sv_simple.t | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ext/threads-shared/t/sv_simple.t b/ext/threads-shared/t/sv_simple.t new file mode 100644 index 0000000000..f4cbcf280b --- /dev/null +++ b/ext/threads-shared/t/sv_simple.t @@ -0,0 +1,68 @@ +use strict; +use warnings; + +BEGIN { + if ($ENV{'PERL_CORE'}){ + chdir 't'; + unshift @INC, '../lib'; + } + use Config; + if (! $Config{'useithreads'}) { + print("1..0 # SKIP Perl not compiled with 'useithreads'\n"); + exit(0); + } +} + +use ExtUtils::testlib; + +sub ok { + my ($id, $ok, $name) = @_; + + # You have to do it this way or VMS will get confused. + if ($ok) { + print("ok $id - $name\n"); + } else { + print("not ok $id - $name\n"); + printf("# Failed test at line %d\n", (caller)[2]); + } + + return ($ok); +} + +BEGIN { + $| = 1; + print("1..11\n"); ### Number of tests that will be run ### +}; + +use threads; +use threads::shared; +ok(1, 1, 'Loaded'); + +### Start of Testing ### + +my $test = "bar"; +share($test); +ok(2,$test eq "bar","Test magic share fetch"); +$test = "foo"; +ok(3,$test eq "foo","Test magic share assign"); +my $c = threads::shared::_refcnt($test); +threads->create( + sub { + ok(4, $test eq "foo","Test magic share fetch after thread"); + $test = "baz"; + ok(5,threads::shared::_refcnt($test) > $c, "Check that threadcount is correct"); + })->join(); +ok(6,$test eq "baz","Test that value has changed in another thread"); +ok(7,threads::shared::_refcnt($test) == $c,"Check thrcnt is down properly"); +$test = "barbar"; +ok(8, length($test) == 6, "Check length code"); +threads->create(sub { $test = "barbarbar" })->join; +ok(9, length($test) == 9, "Check length code after different thread modified it"); +threads->create(sub { undef($test)})->join(); +ok(10, !defined($test), "Check undef value"); + +ok(11, is_shared($test), "Check for sharing"); + +exit(0); + +# EOF |