Use size of uintptr_t
for j
and J
tests
`RbConfig::SIZEOF` has been added later than the time this check was committed first.
This commit is contained in:
parent
0202ca7cfc
commit
b459bca0a6
@ -2,8 +2,12 @@
|
||||
# frozen_string_literal: false
|
||||
require 'test/unit'
|
||||
require 'rbconfig'
|
||||
require 'rbconfig/sizeof'
|
||||
|
||||
class TestPack < Test::Unit::TestCase
|
||||
# Note: the size of intptr_t and uintptr_t should be equal.
|
||||
J_SIZE = RbConfig::SIZEOF['uintptr_t']
|
||||
|
||||
def test_pack
|
||||
format = "c2x5CCxsdils_l_a6";
|
||||
# Need the expression in here to force ary[5] to be numeric. This avoids
|
||||
@ -94,11 +98,11 @@ class TestPack < Test::Unit::TestCase
|
||||
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("L"+mod))
|
||||
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("q"+mod))
|
||||
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("Q"+mod))
|
||||
psize = [nil].pack('p').bytesize
|
||||
if psize == 4
|
||||
case J_SIZE
|
||||
when 4
|
||||
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("j"+mod))
|
||||
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("J"+mod))
|
||||
elsif psize == 8
|
||||
when 8
|
||||
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("j"+mod))
|
||||
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("J"+mod))
|
||||
end
|
||||
@ -110,10 +114,11 @@ class TestPack < Test::Unit::TestCase
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("l!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("L!"+mod))
|
||||
if psize == 4
|
||||
case J_SIZE
|
||||
when 4
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("j!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("J!"+mod))
|
||||
elsif psize == 8
|
||||
when 8
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\x05\x06\x07\x08\z/, [0x0102030405060708].pack("j!"+mod))
|
||||
assert_match(/\A\x00*\x01\x02\x03\x04\x05\x06\x07\x08\z/, [0x0102030405060708].pack("J!"+mod))
|
||||
end
|
||||
@ -142,11 +147,11 @@ class TestPack < Test::Unit::TestCase
|
||||
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("L"+mod))
|
||||
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("q"+mod))
|
||||
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("Q"+mod))
|
||||
psize = [nil].pack('p').bytesize
|
||||
if psize == 4
|
||||
case J_SIZE
|
||||
when 4
|
||||
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("j"+mod))
|
||||
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("J"+mod))
|
||||
elsif psize == 8
|
||||
when 8
|
||||
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("j"+mod))
|
||||
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("J"+mod))
|
||||
end
|
||||
@ -158,10 +163,11 @@ class TestPack < Test::Unit::TestCase
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("l!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("L!"+mod))
|
||||
if psize == 4
|
||||
case J_SIZE
|
||||
when 4
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("j!"+mod))
|
||||
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("J!"+mod))
|
||||
elsif psize == 8
|
||||
when 8
|
||||
assert_match(/\A\x08\x07\x06\x05\x04\x03\x02\x01\x00*\z/, [0x0102030405060708].pack("j!"+mod))
|
||||
assert_match(/\A\x08\x07\x06\x05\x04\x03\x02\x01\x00*\z/, [0x0102030405060708].pack("J!"+mod))
|
||||
end
|
||||
@ -197,8 +203,8 @@ class TestPack < Test::Unit::TestCase
|
||||
end
|
||||
|
||||
def test_integer_endian_explicit
|
||||
_integer_big_endian('>')
|
||||
_integer_little_endian('<')
|
||||
_integer_big_endian('>')
|
||||
_integer_little_endian('<')
|
||||
end
|
||||
|
||||
def test_pack_U
|
||||
@ -465,10 +471,8 @@ class TestPack < Test::Unit::TestCase
|
||||
end if RbConfig::CONFIG['HAVE_LONG_LONG']
|
||||
|
||||
def test_pack_unpack_jJ
|
||||
# Note: we assume that the size of intptr_t and uintptr_t equals to the size
|
||||
# of real pointer.
|
||||
psize = [nil].pack("p").bytesize
|
||||
if psize == 4
|
||||
case J_SIZE
|
||||
when 4
|
||||
s1 = [67305985, -50462977].pack("j*")
|
||||
s2 = [67305985, 4244504319].pack("J*")
|
||||
assert_equal(s1, s2)
|
||||
@ -482,7 +486,7 @@ class TestPack < Test::Unit::TestCase
|
||||
|
||||
assert_equal(4, [1].pack("j").bytesize)
|
||||
assert_equal(4, [1].pack("J").bytesize)
|
||||
elsif psize == 8
|
||||
when 8
|
||||
s1 = [578437695752307201, -506097522914230529].pack("j*")
|
||||
s2 = [578437695752307201, 17940646550795321087].pack("J*")
|
||||
assert_equal(s1, s2)
|
||||
|
Loading…
x
Reference in New Issue
Block a user