Re: Untested builtins
[p5sagit/p5-mst-13.2.git] / t / op / range.t
index dcf0fcf..8cc327b 100755 (executable)
@@ -1,6 +1,13 @@
 #!./perl
 
-print "1..37\n";
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}   
+
+use Config;
+
+print "1..45\n";
 
 print join(':',1..5) eq '1:2:3:4:5' ? "ok 1\n" : "not ok 1\n";
 
@@ -47,12 +54,23 @@ print "not " unless join(",", @y) eq join(",", @x);
 print "ok 10\n";
 
 # check bounds
-@a = 0x7ffffffe..0x7fffffff;
-print "not " unless "@a" eq "2147483646 2147483647";
+if ($Config{ivsize} == 8) {
+  @a = eval "0x7ffffffffffffffe..0x7fffffffffffffff";
+  $a = "9223372036854775806 9223372036854775807";
+  @b = eval "-0x7fffffffffffffff..-0x7ffffffffffffffe";
+  $b = "-9223372036854775807 -9223372036854775806";
+}
+else {
+  @a = eval "0x7ffffffe..0x7fffffff";
+  $a = "2147483646 2147483647";
+  @b = eval "-0x7fffffff..-0x7ffffffe";
+  $b = "-2147483647 -2147483646";
+}
+
+print "not " unless "@a" eq $a;
 print "ok 11\n";
 
-@a = -0x7fffffff..-0x7ffffffe;
-print "not " unless "@a" eq "-2147483647 -2147483646";
+print "not " unless "@b" eq $b;
 print "ok 12\n";
 
 # check magic
@@ -93,7 +111,7 @@ print join(":", map "[$_]", "B".."") eq '' ? "ok 26\n" : "not ok 26\n";
 print join(":", map "[$_]", "B"..undef) eq '' ? "ok 27\n" : "not ok 27\n";
 
 # undef..undef used to segfault
-print join(":", map "[$_]", undef..undef) eq '[0]' ? "ok 28\n" : "not ok 28\n";
+print join(":", map "[$_]", undef..undef) eq '[]' ? "ok 28\n" : "not ok 28\n";
 
 # also test undef in foreach loops
 @foo=(); push @foo, $_ for undef..2;
@@ -121,4 +139,52 @@ print join(":", map "[$_]", @foo) eq '' ? "ok 35\n" : "not ok 35\n";
 print join(":", map "[$_]", @foo) eq '' ? "ok 36\n" : "not ok 36\n";
 
 @foo=(); push @foo, $_ for undef..undef;
-print join(":", map "[$_]", @foo) eq '[0]' ? "ok 37\n" : "not ok 37\n";
+print join(":", map "[$_]", @foo) eq '[]' ? "ok 37\n" : "not ok 37\n";
+
+# again with magic
+{
+    my @a = (1..3);
+    @foo=(); push @foo, $_ for undef..$#a;
+    print join(":", @foo) eq '0:1:2' ? "ok 38\n" : "not ok 38\n";
+}
+{
+    my @a = ();
+    @foo=(); push @foo, $_ for $#a..undef;
+    print join(":", @foo) eq '-1:0' ? "ok 39\n" : "not ok 39\n";
+}
+{
+    local $1;
+    "2" =~ /(.+)/;
+    @foo=(); push @foo, $_ for undef..$1;
+    print join(":", @foo) eq '0:1:2' ? "ok 40\n" : "not ok 40\n";
+}
+{
+    local $1;
+    "-2" =~ /(.+)/;
+    @foo=(); push @foo, $_ for $1..undef;
+    print join(":", @foo) eq '-2:-1:0' ? "ok 41\n" : "not ok 41\n";
+}
+{
+    local $1;
+    "B" =~ /(.+)/;
+    @foo=(); push @foo, $_ for undef..$1;
+    print join(":", map "[$_]", @foo) eq '[]' ? "ok 42\n" : "not ok 42\n";
+}
+{
+    local $1;
+    "B" =~ /(.+)/;
+    @foo=(); push @foo, $_ for ""..$1;
+    print join(":", map "[$_]", @foo) eq '[]' ? "ok 43\n" : "not ok 43\n";
+}
+{
+    local $1;
+    "B" =~ /(.+)/;
+    @foo=(); push @foo, $_ for $1..undef;
+    print join(":", map "[$_]", @foo) eq '' ? "ok 44\n" : "not ok 44\n";
+}
+{
+    local $1;
+    "B" =~ /(.+)/;
+    @foo=(); push @foo, $_ for $1.."";
+    print join(":", map "[$_]", @foo) eq '' ? "ok 45\n" : "not ok 45\n";
+}