diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 1999-02-15 16:15:03 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-02-15 16:15:03 +0000 |
commit | 9de70c85adb9a4d3b22d09bb8920e00bf4051bdb (patch) | |
tree | beed12d21a3dcebdbfa3277b6329f6c11475daab | |
parent | 0b0afcfb56ae6f1f1623e63627cf0c10bd808119 (diff) | |
download | perl-9de70c85adb9a4d3b22d09bb8920e00bf4051bdb.tar.gz |
The pack tests now better in C90 (after the packnative patches).
p4raw-id: //depot/cfgperl@2955
-rwxr-xr-x | t/op/pack.t | 112 |
1 files changed, 90 insertions, 22 deletions
diff --git a/t/op/pack.t b/t/op/pack.t index 3b8ee35b91..3e31e361df 100755 --- a/t/op/pack.t +++ b/t/op/pack.t @@ -268,6 +268,24 @@ print "ok ", $test++, "\n"; # 79..94: test the limits +# Some possibilities for $Config{byteorder} and $Config{.*size}. +# Note that CPUs can feature at several places. +# +# Config +# +# byteorder +# +# 1234 x86, vax, (DEC) mips +# 12345678 alpha +# 4321 sparc, ppc, hppa, (IRIX) mips, motorola +# 87654321 sparc, mips, hppa, cray +# +# x86 alpha sparc cray +# shortsize 2 2 2 8 +# intsize 4 4 4 8 +# longsize 4 8 8 8 +# + print "not " unless unpack("c", pack("c", 127)) == 127; print "ok ", $test++, "\n"; @@ -280,8 +298,17 @@ print "ok ", $test++, "\n"; print "not " unless unpack("s", pack("s", 32767)) == 32767; print "ok ", $test++, "\n"; -print "not " unless unpack("s", pack("s", -32768)) == -32768; -print "ok ", $test++, "\n"; +if ($Config{shortsize} == 2) { + print "not " unless unpack("s", pack("s", -32768)) == -32768; + print "ok ", $test++, "\n"; +} else { + if ($Config{shortsize} == 8 && $Config{byteorder} eq '87654321') { + print "not " unless unpack("s_", pack("s_", -32768)) == -32768; + print "ok ", $test++, "\n"; + } else { + print "ok ", $test++, " # skipped\n"; + } +} print "not " unless unpack("S", pack("S", 65535)) == 65535; print "ok ", $test++, "\n"; @@ -298,8 +325,18 @@ print "ok ", $test++, "\n"; print "not " unless unpack("l", pack("l", 2147483647)) == 2147483647; print "ok ", $test++, "\n"; -print "not " unless unpack("l", pack("l", -2147483648)) == -2147483648; -print "ok ", $test++, "\n"; +if ($Config{longsize} == 4 || $Config{byteorder} eq '12345678') { + print "not " unless unpack("l", pack("l", -2147483648)) == -2147483648; + print "ok ", $test++, "\n"; +} else { + if ($Config{shortsize} == 8 && $Config{byteorder} eq '87654321') { + print "not " + unless unpack("l_", pack("l_", -2147483648)) == -2147483648; + print "ok ", $test++, "\n"; + } else { + print "ok ", $test++, " # skipped\n"; + } +} print "not " unless unpack("L", pack("L", 4294967295)) == 4294967295; print "ok ", $test++, "\n"; @@ -307,36 +344,67 @@ print "ok ", $test++, "\n"; print "not " unless unpack("n", pack("n", 65535)) == 65535; print "ok ", $test++, "\n"; -print "not " unless unpack("n", pack("v", 65535)) == 65535; -print "ok ", $test++, "\n"; +if ($Config{shortsize} == 2) { + print "not " unless unpack("v", pack("v", 65535)) == 65535; + print "ok ", $test++, "\n"; +} else { + print "ok ", $test++, " # skipped\n"; +} print "not " unless unpack("N", pack("N", 4294967295)) == 4294967295; print "ok ", $test++, "\n"; -print "not " unless unpack("V", pack("V", 4294967295)) == 4294967295; -print "ok ", $test++, "\n"; +if ($Config{longsize} == 4 || $Config{byteorder} eq '12345678') { + print "not " unless unpack("V", pack("V", 4294967295)) == 4294967295; + print "ok ", $test++, "\n"; +} else { + print "ok ", $test++, " # skipped\n"; +} # 95..98 test the n/v/N/V byteorder if ($Config{byteorder} =~ /^1234(5678)?$/ || $Config{byteorder} =~ /^(8765)?4321$/) { -print "not " unless pack("n", 0xdead) eq "\xde\xad"; -print "ok ", $test++, "\n"; - -print "not " unless pack("v", 0xdead) eq "\xad\xde"; -print "ok ", $test++, "\n"; - -print "not " unless pack("N", 0xdeadbeef) eq "\xde\xad\xbe\xef"; -print "ok ", $test++, "\n"; - -print "not " unless pack("V", 0xdeadbeef) eq "\xef\xbe\xad\xde"; -print "ok ", $test++, "\n"; - + if ($Config{shortsize} == 2 || + $Config{byteorder} eq '87654321') { + print "not " unless pack("n", 0xdead) eq "\xde\xad"; + print "ok ", $test++, "\n"; + + if ($Config{byteorder} ne '87654321') { + print "not " unless pack("v", 0xdead) eq "\xad\xde"; + print "ok ", $test++, "\n"; + } else { + print "ok ", $test++, " # skipped\n"; + } + } else { + # shortsize != 2 systems require more thought + foreach (95..96) { + print "ok ", $test++, " # skipped\n"; + } + } + + if ($Config{longsize} == 4 || + $Config{byteorder} eq '12345678' || + $Config{byteorder} eq '87654321') { + print "not " unless pack("N", 0xdeadbeef) eq "\xde\xad\xbe\xef"; + print "ok ", $test++, "\n"; + + if ($Config{byteorder} ne '87654321') { + print "not " unless pack("V", 0xdeadbeef) eq "\xef\xbe\xad\xde"; + print "ok ", $test++, "\n"; + } else { + print "ok ", $test++, " # skipped\n"; + } + } else { + # exotic longsize != 2 systems require more thought + foreach (97..98) { + print "ok ", $test++, " # skipped\n"; + } + } } else { - # weird byteorders require more thought + # exotic byteorder system require more thought foreach (95..98) { print "ok ", $test++, " # skipped\n"; } } - |