summaryrefslogtreecommitdiff
path: root/ext/threads-shared/t/sv_simple.t
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2009-02-09 21:07:00 +0000
committerNicholas Clark <nick@ccl4.org>2009-02-09 21:35:11 +0000
commit3831a7876983b591d0421b0d72b1865c6adac0c1 (patch)
treef734c30990a9e8791c2cc1eebdc45c94a4c77658 /ext/threads-shared/t/sv_simple.t
parent2336398ced407314bc7337ba89847a0183e6b314 (diff)
downloadperl-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.t68
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