chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
$a = join ',', sort split /,/, $a;
$a =~ s/-uWin32,//;
-$b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
- . '-umain,-uwarnings';
-print "# [$a] vs [$b]\nnot " if $a ne $b;
-ok;
+if ($Config{static_ext} eq ' ') {
+ $b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
+ . '-umain,-uwarnings';
+ print "# [$a] vs [$b]\nnot " if $a ne $b;
+ ok;
+} else {
+ print "ok $test # skipped: one or more static extensions\n"; $test++;
+}
$a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;
print "not " unless $x == -11111110111 && -$x > $f;
print "ok 22\n";
-$x = $q * 1234567;
-print "not " unless $x == 15241567763770867 && $x > $f;
-print "ok 23\n";
+if ($^O ne 'unicos') {
+ $x = $q * 1234567;
+ print "not " unless $x == 15241567763770867 && $x > $f;
+ print "ok 23\n";
+} else {
+ # Unicos has imprecise doubles (14 decimal digits or so),
+ # the multiplication mangles the low-order bits.
+ $x = $q * 1234;
+ print "not " unless $x == 15234567763834 && $x > $f;
+ print "ok 23\n";
+}
$x /= 1234567;
print "not " unless $x == $q && $x > $f;
# The following 12 tests adapted from op/inc.
-$a = 9223372036854775807;
-$c = $a++;
-print "not " unless $a == 9223372036854775808;
-print "ok 26\n";
-
-$a = 9223372036854775807;
-$c = ++$a;
-print "not " unless $a == 9223372036854775808 && $c == $a;
-print "ok 27\n";
-
-$a = 9223372036854775807;
-$c = $a + 1;
-print "not " unless $a == 9223372036854775807 && $c == 9223372036854775808;
-print "ok 28\n";
-
-$a = -9223372036854775808;
-$c = $a--;
-print "not " unless $a == -9223372036854775809 && $c == -9223372036854775808;
-print "ok 29\n";
-
-$a = -9223372036854775808;
-$c = --$a;
-print "not " unless $a == -9223372036854775809 && $c == $a;
-print "ok 30\n";
-
-$a = -9223372036854775808;
-$c = $a - 1;
-print "not " unless $a == -9223372036854775808 && $c == -9223372036854775809;
-print "ok 31\n";
-
-$a = 9223372036854775808;
-$a = -$a;
-$c = $a--;
-print "not " unless $a == -9223372036854775809 && $c == -9223372036854775808;
-print "ok 32\n";
-
-$a = 9223372036854775808;
-$a = -$a;
-$c = --$a;
-print "not " unless $a == -9223372036854775809 && $c == $a;
-print "ok 33\n";
-
-$a = 9223372036854775808;
-$a = -$a;
-$c = $a - 1;
-print "not " unless $a == -9223372036854775808 && $c == -9223372036854775809;
-print "ok 34\n";
-
-$a = 9223372036854775808;
-$b = -$a;
-$c = $b--;
-print "not " unless $b == -$a-1 && $c == -$a;
-print "ok 35\n";
-
-$a = 9223372036854775808;
-$b = -$a;
-$c = --$b;
-print "not " unless $b == -$a-1 && $c == $b;
-print "ok 36\n";
-
-$a = 9223372036854775808;
-$b = -$a;
-$b = $b - 1;
-print "not " unless $b == -(++$a);
-print "ok 37\n";
+if ($^O ne 'unicos') {
+ $a = 9223372036854775807;
+ $c = $a++;
+ print "not " unless $a == 9223372036854775808;
+ print "ok 26\n";
+
+ $a = 9223372036854775807;
+ $c = ++$a;
+ print "not "
+ unless $a == 9223372036854775808 && $c == $a;
+ print "ok 27\n";
+
+ $a = 9223372036854775807;
+ $c = $a + 1;
+ print "not "
+ unless $a == 9223372036854775807 && $c == 9223372036854775808;
+ print "ok 28\n";
+
+ $a = -9223372036854775808;
+ $c = $a--;
+ print "not "
+ unless $a == -9223372036854775809 && $c == -9223372036854775808;
+ print "ok 29\n";
+
+ $a = -9223372036854775808;
+ $c = --$a;
+ print "not "
+ unless $a == -9223372036854775809 && $c == $a;
+ print "ok 30\n";
+
+ $a = -9223372036854775808;
+ $c = $a - 1;
+ print "not "
+ unless $a == -9223372036854775808 && $c == -9223372036854775809;
+ print "ok 31\n";
+
+ $a = 9223372036854775808;
+ $a = -$a;
+ $c = $a--;
+ print "not "
+ unless $a == -9223372036854775809 && $c == -9223372036854775808;
+ print "ok 32\n";
+
+ $a = 9223372036854775808;
+ $a = -$a;
+ $c = --$a;
+ print "not "
+ unless $a == -9223372036854775809 && $c == $a;
+ print "ok 33\n";
+
+ $a = 9223372036854775808;
+ $a = -$a;
+ $c = $a - 1;
+ print "not "
+ unless $a == -9223372036854775808 && $c == -9223372036854775809;
+ print "ok 34\n";
+
+ $a = 9223372036854775808;
+ $b = -$a;
+ $c = $b--;
+ print "not "
+ unless $b == -$a-1 && $c == -$a;
+ print "ok 35\n";
+
+ $a = 9223372036854775808;
+ $b = -$a;
+ $c = --$b;
+ print "not "
+ unless $b == -$a-1 && $c == $b;
+ print "ok 36\n";
+
+ $a = 9223372036854775808;
+ $b = -$a;
+ $b = $b - 1;
+ print "not "
+ unless $b == -(++$a);
+ print "ok 37\n";
+
+} else {
+ # Unicos has imprecise doubles (14 decimal digits or so),
+ # near the UV/IV limites the low-order bits become mangled
+ # even by simple additions and subtractions.
+ for (26..37) {
+ print "ok #_ # skipped: too imprecise numbers\n";
+ }
+}
$x = '';
print "not " unless (0x8000000000000000 | 1) == 0x8000000000000001;
print "ok 46\n";
-print "not " unless (0xf000000000000000 & 0x8000000000000000) == 0x8000000000000000;
+print "not "
+ unless (0xf000000000000000 & 0x8000000000000000) == 0x8000000000000000;
print "ok 47\n";
-print "not " unless (0xf000000000000000 ^ 0xfffffffffffffff0) == 0x0ffffffffffffff0;
+print "not "
+ unless (0xf000000000000000 ^ 0xfffffffffffffff0) == 0x0ffffffffffffff0;
print "ok 48\n";
-print "not " unless (sprintf "%b", ~0) eq '1111111111111111111111111111111111111111111111111111111111111111';
+print "not "
+ unless (sprintf "%b", ~0) eq
+ '1111111111111111111111111111111111111111111111111111111111111111';
print "ok 49\n";
-print "not " unless (sprintf "%64b", ~0) eq '1111111111111111111111111111111111111111111111111111111111111111';
+print "not "
+ unless (sprintf "%64b", ~0) eq
+ '1111111111111111111111111111111111111111111111111111111111111111';
print "ok 50\n";
print "not " unless (sprintf "%d", ~0>>1) eq '9223372036854775807';