20
20
assert_equal($x, $x.pack("l").unpack("l"))
24
assert_equal "\000\000", [0].pack('n')
25
assert_equal "\000\001", [1].pack('n')
26
assert_equal "\000\002", [2].pack('n')
27
assert_equal "\000\003", [3].pack('n')
28
assert_equal "\377\376", [65534].pack('n')
29
assert_equal "\377\377", [65535].pack('n')
31
assert_equal "\200\000", [2**15].pack('n')
32
assert_equal "\177\377", [-2**15-1].pack('n')
33
assert_equal "\377\377", [-1].pack('n')
35
assert_equal "\000\001\000\001", [1,1].pack('n*')
36
assert_equal "\000\001\000\001\000\001", [1,1,1].pack('n*')
40
assert_equal 1, "\000\001".unpack('n')[0]
41
assert_equal 2, "\000\002".unpack('n')[0]
42
assert_equal 3, "\000\003".unpack('n')[0]
43
assert_equal 65535, "\377\377".unpack('n')[0]
44
assert_equal [1,1], "\000\001\000\001".unpack('n*')
45
assert_equal [1,1,1], "\000\001\000\001\000\001".unpack('n*')
24
49
assert_equal "\000\000\000\000", [0].pack('N')
25
50
assert_equal "\000\000\000\001", [1].pack('N')
40
65
assert_equal 1, "\000\000\000\001".unpack('N')[0]
41
66
assert_equal 2, "\000\000\000\002".unpack('N')[0]
42
67
assert_equal 3, "\000\000\000\003".unpack('N')[0]
43
assert_equal 3, "\000\000\000\003".unpack('N')[0]
44
68
assert_equal 4294967295, "\377\377\377\377".unpack('N')[0]
45
69
assert_equal [1,1], "\000\000\000\001\000\000\000\001".unpack('N*')
46
70
assert_equal [1,1,1], "\000\000\000\001\000\000\000\001\000\000\000\001".unpack('N*')
73
def test_integer_endian
75
assert_includes(["\0\1", "\1\0"], s)
78
assert_equal("\x01\x02", [0x0102].pack("s"))
79
assert_equal("\x01\x02", [0x0102].pack("S"))
80
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("l"))
81
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("L"))
82
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("q"))
83
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("Q"))
84
assert_match(/\A\x00*\x01\x02\z/, [0x0102].pack("s!"))
85
assert_match(/\A\x00*\x01\x02\z/, [0x0102].pack("S!"))
86
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("i"))
87
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I"))
88
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("i!"))
89
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I!"))
90
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("l!"))
91
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("L!"))
92
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
95
s = "".force_encoding("ascii-8bit")
96
nuls.bytesize.times {|i|
101
assert_equal(s, [v].pack(fmt), "[#{v}].pack(#{fmt.dump})")
102
assert_equal([v], s.unpack(fmt), "#{s.dump}.unpack(#{fmt.dump})")
105
assert_equal([v,v], s2.unpack(fmt2), "#{s2.dump}.unpack(#{fmt2.dump})")
109
assert_equal("\x02\x01", [0x0102].pack("s"))
110
assert_equal("\x02\x01", [0x0102].pack("S"))
111
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("l"))
112
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("L"))
113
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("q"))
114
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("Q"))
115
assert_match(/\A\x02\x01\x00*\z/, [0x0102].pack("s!"))
116
assert_match(/\A\x02\x01\x00*\z/, [0x0102].pack("S!"))
117
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("i"))
118
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I"))
119
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("i!"))
120
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I!"))
121
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("l!"))
122
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("L!"))
123
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
126
s = "".force_encoding("ascii-8bit")
127
nuls.bytesize.times {|i|
133
assert_equal(s, [v].pack(fmt), "[#{v}].pack(#{fmt.dump})")
134
assert_equal([v], s.unpack(fmt), "#{s.dump}.unpack(#{fmt.dump})")
137
assert_equal([v,v], s2.unpack(fmt2), "#{s2.dump}.unpack(#{fmt2.dump})")
50
143
assert_raise(RangeError) { [-0x40000001].pack("U") }
51
144
assert_raise(RangeError) { [-0x40000000].pack("U") }
251
349
s2 = [67305985, 4244504319].pack("I!*")
252
350
assert_equal([67305985, -50462977], s1.unpack("i!*"))
253
351
assert_equal([67305985, 4244504319], s2.unpack("I!*"))
353
assert_operator(4, :<=, [1].pack("i").bytesize)
354
assert_operator(4, :<=, [1].pack("I").bytesize)
355
assert_operator(4, :<=, [1].pack("i!").bytesize)
356
assert_operator(4, :<=, [1].pack("I!").bytesize)
256
359
def test_pack_unpack_lL
264
367
s2 = [67305985, 4244504319].pack("L!*")
265
368
assert_equal([67305985, -50462977], s1.unpack("l!*"))
266
369
assert_equal([67305985, 4244504319], s2.unpack("L!*"))
371
assert_equal(4, [1].pack("l").bytesize)
372
assert_equal(4, [1].pack("L").bytesize)
373
assert_operator(4, :<=, [1].pack("l!").bytesize)
374
assert_operator(4, :<=, [1].pack("L!").bytesize)
269
377
def test_pack_unpack_qQ