As we're not passing over (or copying in) a NUL, don't need that extra
[p5sagit/p5-mst-13.2.git] / ext / threads / t / libc.t
index 5af8f00..740588a 100644 (file)
@@ -6,68 +6,49 @@ BEGIN {
         chdir 't';
         unshift @INC, '../lib';
     }
-    use Config;
-    unless ($Config{'useithreads'}) {
-        print "1..0 # Skip: no useithreads\n";
-        exit 0;
-    }
-}
 
-use ExtUtils::testlib;
-
-sub ok {
-    my ($id, $ok, $name) = @_;
+    require($ENV{PERL_CORE} ? "./test.pl" : "./t/test.pl");
 
-    # 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]);
+    use Config;
+    if (! $Config{'useithreads'}) {
+        skip_all(q/Perl not compiled with 'useithreads'/);
     }
 
-    return ($ok);
+    plan(11);
 }
 
-BEGIN { $| = 1; print "1..12\n"};
+use ExtUtils::testlib;
+
+use_ok('threads');
 
-use threads;
-use threads::shared;
-ok(1, 1, 'Loaded');
+### Start of Testing ###
 
 my $i = 10;
 my $y = 20000;
+
 my %localtime;
-for(0..$i) {
-       $localtime{$_} = localtime($_);
+for (1..$i) {
+    $localtime{$_} = localtime($_);
 };
-my $mutex = 2;
-share($mutex);
-sub localtime_r {
-  lock($mutex);
-  my $retval = localtime(shift());
-  return $retval;
-}
+
 my @threads;
-for(0..$i) {
-  my $thread = threads->create(sub {
-                                my $arg = $_;
-                   my $localtime = $localtime{$arg};
-                   my $error = 0;
-                   for(0..$y) {
-                     my $lt = localtime($arg);
-                     if($localtime ne $lt) {
-                       $error++;
-                     } 
-                   }
-                                lock($mutex);
-                                 ok($mutex, ! $error, 'localtime safe');
-                                $mutex++;
-                 });   
-  push @threads, $thread;
+for (1..$i) {
+    $threads[$_] = threads->create(sub {
+                        my $arg = shift;
+                        my $localtime = $localtime{$arg};
+                        my $error = 0;
+                        for (1..$y) {
+                            my $lt = localtime($arg);
+                            if ($localtime ne $lt) {
+                                $error++;
+                            }
+                        }
+                        return $error;
+                    }, $_);
 }
 
-for(@threads) {
-  $_->join();
+for (1..$i) {
+    is($threads[$_]->join(), 0, 'localtime() thread-safe');
 }
 
+# EOF