70
70
assert_equal [1,1,1], "\000\000\000\001\000\000\000\001\000\000\000\001".unpack('N*')
73
def _integer_big_endian(mod='')
74
assert_equal("\x01\x02", [0x0102].pack("s"+mod))
75
assert_equal("\x01\x02", [0x0102].pack("S"+mod))
76
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("l"+mod))
77
assert_equal("\x01\x02\x03\x04", [0x01020304].pack("L"+mod))
78
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("q"+mod))
79
assert_equal("\x01\x02\x03\x04\x05\x06\x07\x08", [0x0102030405060708].pack("Q"+mod))
80
assert_match(/\A\x00*\x01\x02\z/, [0x0102].pack("s!"+mod))
81
assert_match(/\A\x00*\x01\x02\z/, [0x0102].pack("S!"+mod))
82
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("i"+mod))
83
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I"+mod))
84
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("i!"+mod))
85
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("I!"+mod))
86
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("l!"+mod))
87
assert_match(/\A\x00*\x01\x02\x03\x04\z/, [0x01020304].pack("L!"+mod))
88
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
92
s = "".force_encoding("ascii-8bit")
93
nuls.bytesize.times {|i|
98
assert_equal(s, [v].pack(fmt), "[#{v}].pack(#{fmt.dump})")
99
assert_equal([v], s.unpack(fmt), "#{s.dump}.unpack(#{fmt.dump})")
102
assert_equal([v,v], s2.unpack(fmt2), "#{s2.dump}.unpack(#{fmt2.dump})")
106
def _integer_little_endian(mod='')
107
assert_equal("\x02\x01", [0x0102].pack("s"+mod))
108
assert_equal("\x02\x01", [0x0102].pack("S"+mod))
109
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("l"+mod))
110
assert_equal("\x04\x03\x02\x01", [0x01020304].pack("L"+mod))
111
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("q"+mod))
112
assert_equal("\x08\x07\x06\x05\x04\x03\x02\x01", [0x0102030405060708].pack("Q"+mod))
113
assert_match(/\A\x02\x01\x00*\z/, [0x0102].pack("s!"+mod))
114
assert_match(/\A\x02\x01\x00*\z/, [0x0102].pack("S!"+mod))
115
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("i"+mod))
116
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I"+mod))
117
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("i!"+mod))
118
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("I!"+mod))
119
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("l!"+mod))
120
assert_match(/\A\x04\x03\x02\x01\x00*\z/, [0x01020304].pack("L!"+mod))
121
%w[s S l L q Q s! S! i I i! I! l! L!].each {|fmt|
125
s = "".force_encoding("ascii-8bit")
126
nuls.bytesize.times {|i|
132
assert_equal(s, [v].pack(fmt), "[#{v}].pack(#{fmt.dump})")
133
assert_equal([v], s.unpack(fmt), "#{s.dump}.unpack(#{fmt.dump})")
136
assert_equal([v,v], s2.unpack(fmt2), "#{s2.dump}.unpack(#{fmt2.dump})")
73
140
def test_integer_endian
75
assert_includes(["\0\1", "\1\0"], s)
142
assert_include(["\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})")
144
_integer_big_endian()
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})")
146
_integer_little_endian()
148
assert_equal("\x01\x02\x02\x01", [0x0102,0x0102].pack("s>s<"))
149
assert_equal([0x0102,0x0102], "\x01\x02\x02\x01".unpack("s>s<"))
152
def test_integer_endian_explicit
153
_integer_big_endian('>')
154
_integer_little_endian('<')