Document tricks, work-arounds for user-defined casing
[p5sagit/p5-mst-13.2.git] / t / op / sselect.t
index 4e50b29..ffb4aad 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 
 require 'test.pl';
 
-plan (6);
+plan (11);
 
 my $blank = "";
 eval {select undef, $blank, $blank, 0};
@@ -18,8 +18,33 @@ eval {select $blank, $blank, undef, 0};
 is ($@, "");
 
 eval {select "", $blank, $blank, 0};
-like ($@, qr/^Modification of a read-only value attempted/);
+is ($@, "");
 eval {select $blank, "", $blank, 0};
-like ($@, qr/^Modification of a read-only value attempted/);
+is ($@, "");
 eval {select $blank, $blank, "", 0};
+is ($@, "");
+
+eval {select "a", $blank, $blank, 0};
 like ($@, qr/^Modification of a read-only value attempted/);
+eval {select $blank, "a", $blank, 0};
+like ($@, qr/^Modification of a read-only value attempted/);
+eval {select $blank, $blank, "a", 0};
+like ($@, qr/^Modification of a read-only value attempted/);
+
+my($sleep,$fudge) = (3,0);
+# Actual sleep time on Windows may be rounded down to an integral
+# multiple of the system clock tick interval.  Clock tick interval
+# is configurable, but usually about 15.625 milliseconds.
+# time() however doesn't return fractional values, so the observed
+# delay may be 1 second short.
+($sleep,$fudge) = (4,1) if $^O eq "MSWin32";
+
+my $t = time;
+select(undef, undef, undef, $sleep);
+ok(time-$t >= $sleep-$fudge, "$sleep seconds have passed");
+
+my $empty = "";
+vec($empty,0,1) = 0;
+$t = time;
+select($empty, undef, undef, $sleep);
+ok(time-$t >= $sleep-$fudge, "$sleep seconds have passed");