bin_utils 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,556 @@
1
+ # coding: utf-8
2
+ require 'minitest/spec'
3
+ require 'minitest/autorun'
4
+
5
+ shared_example = proc do
6
+ def src; "\x01\x02\x03\x04\xf5\xf6\xf7\xf8\xf9\x0a\x0b\x0c".force_encoding(::Encoding::BINARY) ; end
7
+ def dest; "\x01\x02".force_encoding(::Encoding::BINARY); end
8
+
9
+ it "must get integer" do
10
+ util.get_int8(src).must_equal 1
11
+ util.get_int8(src, 0).must_equal 1
12
+ util.get_int8(src, 4).must_equal 0xf5
13
+ util.get_sint8(src).must_equal 1
14
+ util.get_sint8(src, 0).must_equal 1
15
+ util.get_sint8(src, 4).must_equal(-11)
16
+
17
+ util.get_int16_le(src).must_equal 0x0201
18
+ util.get_int16_le(src, 0).must_equal 0x0201
19
+ util.get_int16_le(src, 5).must_equal 0xf7f6
20
+ util.get_sint16_le(src).must_equal 0x0201
21
+ util.get_sint16_le(src, 0).must_equal 0x0201
22
+ util.get_sint16_le(src, 5).must_equal(-2058)
23
+
24
+ util.get_int16_be(src).must_equal 0x0102
25
+ util.get_int16_be(src, 0).must_equal 0x0102
26
+ util.get_int16_be(src, 5).must_equal 0xf6f7
27
+ util.get_sint16_be(src).must_equal 0x0102
28
+ util.get_sint16_be(src, 0).must_equal 0x0102
29
+ util.get_sint16_be(src, 5).must_equal(-2313)
30
+
31
+ util.get_int24_le(src).must_equal 0x030201
32
+ util.get_int24_le(src, 0).must_equal 0x030201
33
+ util.get_int24_le(src, 5).must_equal 0xf8f7f6
34
+ util.get_sint24_le(src).must_equal 0x030201
35
+ util.get_sint24_le(src, 0).must_equal 0x030201
36
+ util.get_sint24_le(src, 5).must_equal(-460810)
37
+
38
+ util.get_int24_be(src).must_equal 0x010203
39
+ util.get_int24_be(src, 0).must_equal 0x010203
40
+ util.get_int24_be(src, 5).must_equal 0xf6f7f8
41
+ util.get_sint24_be(src).must_equal 0x010203
42
+ util.get_sint24_be(src, 0).must_equal 0x010203
43
+ util.get_sint24_be(src, 5).must_equal(-591880)
44
+
45
+ util.get_int32_le(src).must_equal 0x04030201
46
+ util.get_int32_le(src, 0).must_equal 0x04030201
47
+ util.get_int32_le(src, 4).must_equal 0xf8f7f6f5
48
+ util.get_sint32_le(src).must_equal 0x04030201
49
+ util.get_sint32_le(src, 0).must_equal 0x04030201
50
+ util.get_sint32_le(src, 4).must_equal(-117967115)
51
+
52
+ util.get_int32_be(src).must_equal 0x01020304
53
+ util.get_int32_be(src, 0).must_equal 0x01020304
54
+ util.get_int32_be(src, 4).must_equal 0xf5f6f7f8
55
+ util.get_sint32_be(src).must_equal 0x01020304
56
+ util.get_sint32_be(src, 0).must_equal 0x01020304
57
+ util.get_sint32_be(src, 4).must_equal(-168364040)
58
+
59
+ util.get_int40_le(src).must_equal 0xf504030201
60
+ util.get_int40_le(src, 0).must_equal 0xf504030201
61
+ util.get_int40_le(src, 3).must_equal 0xf8f7f6f504
62
+ util.get_sint40_le(src).must_equal(-47177334271)
63
+ util.get_sint40_le(src, 0).must_equal(-47177334271)
64
+ util.get_sint40_le(src, 3).must_equal(-30199581436)
65
+
66
+ util.get_int40_be(src).must_equal 0x01020304f5
67
+ util.get_int40_be(src, 0).must_equal 0x01020304f5
68
+ util.get_int40_be(src, 4).must_equal 0xf5f6f7f8f9
69
+ util.get_sint40_be(src).must_equal 0x01020304f5
70
+ util.get_sint40_be(src, 0).must_equal 0x01020304f5
71
+ util.get_sint40_be(src, 4).must_equal(-43101193991)
72
+
73
+ util.get_int48_le(src).must_equal 0xf6f504030201
74
+ util.get_int48_le(src, 0).must_equal 0xf6f504030201
75
+ util.get_int48_le(src, 4).must_equal 0x0af9f8f7f6f5
76
+ util.get_sint48_le(src).must_equal(-9942781984255)
77
+ util.get_sint48_le(src, 0).must_equal(-9942781984255)
78
+ util.get_sint48_le(src, 4).must_equal 0x0af9f8f7f6f5
79
+
80
+ util.get_int48_be(src).must_equal 0x01020304f5f6
81
+ util.get_int48_be(src, 0).must_equal 0x01020304f5f6
82
+ util.get_int48_be(src, 4).must_equal 0xf5f6f7f8f90a
83
+ util.get_sint48_be(src).must_equal 0x01020304f5f6
84
+ util.get_sint48_be(src, 0).must_equal 0x01020304f5f6
85
+ util.get_sint48_be(src, 4).must_equal(-11033905661686)
86
+
87
+ util.get_int56_le(src).must_equal 0xf7f6f504030201
88
+ util.get_int56_le(src, 0).must_equal 0xf7f6f504030201
89
+ util.get_int56_le(src, 4).must_equal 0x0b0af9f8f7f6f5
90
+ util.get_sint56_le(src).must_equal(-2261742595669503)
91
+ util.get_sint56_le(src, 0).must_equal(-2261742595669503)
92
+ util.get_sint56_le(src, 4).must_equal 3108293483951861
93
+
94
+ util.get_int56_be(src).must_equal 0x01020304f5f6f7
95
+ util.get_int56_be(src, 0).must_equal 0x01020304f5f6f7
96
+ util.get_int56_be(src, 4).must_equal 0xf5f6f7f8f90a0b
97
+ util.get_sint56_be(src).must_equal 0x01020304f5f6f7
98
+ util.get_sint56_be(src, 0).must_equal 0x01020304f5f6f7
99
+ util.get_sint56_be(src, 4).must_equal(-2824679849391605)
100
+
101
+ util.get_int64_le(src).must_equal 0xf8f7f6f504030201
102
+ util.get_int64_le(src, 0).must_equal 0xf8f7f6f504030201
103
+ util.get_int64_le(src, 4).must_equal 0x0c0b0af9f8f7f6f5
104
+ util.get_sint64_le(src).must_equal(-506664900861165055)
105
+ util.get_sint64_le(src, 0).must_equal(-506664900861165055)
106
+ util.get_sint64_le(src, 4).must_equal 0x0c0b0af9f8f7f6f5
107
+
108
+ util.get_int64_be(src).must_equal 0x01020304f5f6f7f8
109
+ util.get_int64_be(src, 0).must_equal 0x01020304f5f6f7f8
110
+ util.get_int64_be(src, 4).must_equal 0xf5f6f7f8f90a0b0c
111
+ util.get_sint64_be(src).must_equal 0x01020304f5f6f7f8
112
+ util.get_sint64_be(src, 0).must_equal 0x01020304f5f6f7f8
113
+ util.get_sint64_be(src, 4).must_equal(-723118041444250868)
114
+
115
+ util.get_ber(src).must_equal 1
116
+ util.get_ber(src, 0).must_equal 1
117
+ util.get_ber(src, 6).must_equal 251542666
118
+ end
119
+
120
+ def asrc; "\x01\x02\x03\x04\x05\x06\x07\x08\x09".force_encoding(::Encoding::BINARY) ; end
121
+ def msrc; "\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding(::Encoding::BINARY) ; end
122
+
123
+ it "must slice integer" do
124
+ s = asrc; util.slice_int8!(s).must_equal 0x01; s.must_equal asrc[1..-1]
125
+ s = msrc; util.slice_int8!(s).must_equal 0xf1; s.must_equal msrc[1..-1]
126
+ s = asrc; util.slice_sint8!(s).must_equal 0x01; s.must_equal asrc[1..-1]
127
+ s = msrc; util.slice_sint8!(s).must_equal(-15); s.must_equal msrc[1..-1]
128
+
129
+ s = asrc; util.slice_int16_le!(s).must_equal 0x0201; s.must_equal asrc[2..-1]
130
+ s = msrc; util.slice_int16_le!(s).must_equal 0xf2f1; s.must_equal msrc[2..-1]
131
+ s = asrc; util.slice_sint16_le!(s).must_equal 0x0201; s.must_equal asrc[2..-1]
132
+ s = msrc; util.slice_sint16_le!(s).must_equal(-3343); s.must_equal msrc[2..-1]
133
+
134
+ s = asrc; util.slice_int16_be!(s).must_equal 0x0102; s.must_equal asrc[2..-1]
135
+ s = msrc; util.slice_int16_be!(s).must_equal 0xf1f2; s.must_equal msrc[2..-1]
136
+ s = asrc; util.slice_sint16_be!(s).must_equal 0x0102; s.must_equal asrc[2..-1]
137
+ s = msrc; util.slice_sint16_be!(s).must_equal(-3598); s.must_equal msrc[2..-1]
138
+
139
+ s = asrc; util.slice_int24_le!(s).must_equal 0x030201; s.must_equal asrc[3..-1]
140
+ s = msrc; util.slice_int24_le!(s).must_equal 0xf3f2f1; s.must_equal msrc[3..-1]
141
+ s = asrc; util.slice_sint24_le!(s).must_equal 0x030201; s.must_equal asrc[3..-1]
142
+ s = msrc; util.slice_sint24_le!(s).must_equal(-789775); s.must_equal msrc[3..-1]
143
+
144
+ s = asrc; util.slice_int24_be!(s).must_equal 0x010203; s.must_equal asrc[3..-1]
145
+ s = msrc; util.slice_int24_be!(s).must_equal 0xf1f2f3; s.must_equal msrc[3..-1]
146
+ s = asrc; util.slice_sint24_be!(s).must_equal 0x010203; s.must_equal asrc[3..-1]
147
+ s = msrc; util.slice_sint24_be!(s).must_equal(-920845); s.must_equal msrc[3..-1]
148
+
149
+ s = asrc; util.slice_int32_le!(s).must_equal 0x04030201; s.must_equal asrc[4..-1]
150
+ s = msrc; util.slice_int32_le!(s).must_equal 0xf4f3f2f1; s.must_equal msrc[4..-1]
151
+ s = asrc; util.slice_sint32_le!(s).must_equal 0x04030201; s.must_equal asrc[4..-1]
152
+ s = msrc; util.slice_sint32_le!(s).must_equal(-185339151); s.must_equal msrc[4..-1]
153
+
154
+ s = asrc; util.slice_int32_be!(s).must_equal 0x01020304; s.must_equal asrc[4..-1]
155
+ s = msrc; util.slice_int32_be!(s).must_equal 0xf1f2f3f4; s.must_equal msrc[4..-1]
156
+ s = asrc; util.slice_sint32_be!(s).must_equal 0x01020304; s.must_equal asrc[4..-1]
157
+ s = msrc; util.slice_sint32_be!(s).must_equal(-235736076); s.must_equal msrc[4..-1]
158
+
159
+ s = asrc; util.slice_int40_le!(s).must_equal 0x0504030201; s.must_equal asrc[5..-1]
160
+ s = msrc; util.slice_int40_le!(s).must_equal 0xf5f4f3f2f1; s.must_equal msrc[5..-1]
161
+ s = asrc; util.slice_sint40_le!(s).must_equal 0x0504030201; s.must_equal asrc[5..-1]
162
+ s = msrc; util.slice_sint40_le!(s).must_equal(-43135012111); s.must_equal msrc[5..-1]
163
+
164
+ s = asrc; util.slice_int40_be!(s).must_equal 0x0102030405; s.must_equal asrc[5..-1]
165
+ s = msrc; util.slice_int40_be!(s).must_equal 0xf1f2f3f4f5; s.must_equal msrc[5..-1]
166
+ s = asrc; util.slice_sint40_be!(s).must_equal 0x0102030405; s.must_equal asrc[5..-1]
167
+ s = msrc; util.slice_sint40_be!(s).must_equal(-60348435211); s.must_equal msrc[5..-1]
168
+
169
+ s = asrc; util.slice_int48_le!(s).must_equal 0x060504030201; s.must_equal asrc[6..-1]
170
+ s = msrc; util.slice_int48_le!(s).must_equal 0xf6f5f4f3f2f1; s.must_equal msrc[6..-1]
171
+ s = asrc; util.slice_sint48_le!(s).must_equal 0x060504030201; s.must_equal asrc[6..-1]
172
+ s = msrc; util.slice_sint48_le!(s).must_equal(-9938739662095); s.must_equal msrc[6..-1]
173
+
174
+ s = asrc; util.slice_int48_be!(s).must_equal 0x010203040506; s.must_equal asrc[6..-1]
175
+ s = msrc; util.slice_int48_be!(s).must_equal 0xf1f2f3f4f5f6; s.must_equal msrc[6..-1]
176
+ s = asrc; util.slice_sint48_be!(s).must_equal 0x010203040506; s.must_equal asrc[6..-1]
177
+ s = msrc; util.slice_sint48_be!(s).must_equal(-15449199413770); s.must_equal msrc[6..-1]
178
+
179
+ s = asrc; util.slice_int56_le!(s).must_equal 0x07060504030201; s.must_equal asrc[7..-1]
180
+ s = msrc; util.slice_int56_le!(s).must_equal 0xf7f6f5f4f3f2f1; s.must_equal msrc[7..-1]
181
+ s = asrc; util.slice_sint56_le!(s).must_equal 0x07060504030201; s.must_equal asrc[7..-1]
182
+ s = msrc; util.slice_sint56_le!(s).must_equal(-2261738553347343); s.must_equal msrc[7..-1]
183
+
184
+ s = asrc; util.slice_int56_be!(s).must_equal 0x01020304050607; s.must_equal asrc[7..-1]
185
+ s = msrc; util.slice_int56_be!(s).must_equal 0xf1f2f3f4f5f6f7; s.must_equal msrc[7..-1]
186
+ s = asrc; util.slice_sint56_be!(s).must_equal 0x01020304050607; s.must_equal asrc[7..-1]
187
+ s = msrc; util.slice_sint56_be!(s).must_equal(-3954995049924873); s.must_equal msrc[7..-1]
188
+
189
+ s = asrc; util.slice_int64_le!(s).must_equal 0x0807060504030201; s.must_equal asrc[8..-1]
190
+ s = msrc; util.slice_int64_le!(s).must_equal 0xf8f7f6f5f4f3f2f1; s.must_equal msrc[8..-1]
191
+ s = asrc; util.slice_sint64_le!(s).must_equal 0x0807060504030201; s.must_equal asrc[8..-1]
192
+ s = msrc; util.slice_sint64_le!(s).must_equal(-506664896818842895); s.must_equal msrc[8..-1]
193
+
194
+ s = asrc; util.slice_int64_be!(s).must_equal 0x0102030405060708; s.must_equal asrc[8..-1]
195
+ s = msrc; util.slice_int64_be!(s).must_equal 0xf1f2f3f4f5f6f7f8; s.must_equal msrc[8..-1]
196
+ s = asrc; util.slice_sint64_be!(s).must_equal 0x0102030405060708; s.must_equal asrc[8..-1]
197
+ s = msrc; util.slice_sint64_be!(s).must_equal(-1012478732780767240); s.must_equal msrc[8..-1]
198
+
199
+ s = "\x01\x02\x03\x04"; util.slice_ber!(s).must_equal 1; s.must_equal "\x02\x03\x04"
200
+ s = "\xf1\x02\x03\x04"; util.slice_ber!(s).must_equal 14466; s.must_equal "\x03\x04"
201
+ s = "\xf1\xf2\x03\x04"; util.slice_ber!(s).must_equal 1865987; s.must_equal "\x04"
202
+ s = "\xf1\xf2\xf3\x04"; util.slice_ber!(s).must_equal 238860676; s.must_equal ""
203
+ end
204
+
205
+ it "must append integer" do
206
+ d = dest; util.append_int8!(d, 0x03); d.must_equal "\x01\x02\x03"
207
+ d = dest; util.append_int8!(d, 0xf3); d.must_equal "\x01\x02\xf3".force_encoding('binary')
208
+ d = dest; util.append_sint8!(d, 0x03); d.must_equal "\x01\x02\x03"
209
+ d = dest; util.append_sint8!(d, -13); d.must_equal "\x01\x02\xf3".force_encoding('binary')
210
+
211
+ d = dest; util.append_int16_le!(d, 0x0403); d.must_equal "\x01\x02\x03\x04"
212
+ d = dest; util.append_int16_le!(d, 0xf4f3); d.must_equal "\x01\x02\xf3\xf4".force_encoding('binary')
213
+ d = dest; util.append_sint16_le!(d, 0x0403); d.must_equal "\x01\x02\x03\x04"
214
+ d = dest; util.append_sint16_le!(d, -2829); d.must_equal "\x01\x02\xf3\xf4".force_encoding('binary')
215
+
216
+ d = dest; util.append_int16_be!(d, 0x0304); d.must_equal "\x01\x02\x03\x04"
217
+ d = dest; util.append_int16_be!(d, 0xf3f4); d.must_equal "\x01\x02\xf3\xf4".force_encoding('binary')
218
+ d = dest; util.append_sint16_be!(d, 0x0304); d.must_equal "\x01\x02\x03\x04"
219
+ d = dest; util.append_sint16_be!(d, -3084); d.must_equal "\x01\x02\xf3\xf4".force_encoding('binary')
220
+
221
+ d = dest; util.append_int24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x04\x05"
222
+ d = dest; util.append_int24_le!(d, 0xf5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5".force_encoding('binary')
223
+ d = dest; util.append_sint24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x04\x05"
224
+ d = dest; util.append_sint24_le!(d, -658189); d.must_equal "\x01\x02\xf3\xf4\xf5".force_encoding('binary')
225
+
226
+ d = dest; util.append_int24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x04\x05"
227
+ d = dest; util.append_int24_be!(d, 0xf3f4f5); d.must_equal "\x01\x02\xf3\xf4\xf5".force_encoding('binary')
228
+ d = dest; util.append_sint24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x04\x05"
229
+ d = dest; util.append_sint24_be!(d, -789259); d.must_equal "\x01\x02\xf3\xf4\xf5".force_encoding('binary')
230
+
231
+ d = dest; util.append_int32_le!(d, 0x06050403); d.must_equal "\x01\x02\x03\x04\x05\x06"
232
+ d = dest; util.append_int32_le!(d, 0xf6f5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6".force_encoding('binary')
233
+ d = dest; util.append_sint32_le!(d, 0x06050403); d.must_equal "\x01\x02\x03\x04\x05\x06"
234
+ d = dest; util.append_sint32_le!(d, -151653133); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6".force_encoding('binary')
235
+
236
+ d = dest; util.append_int32_be!(d, 0x03040506); d.must_equal "\x01\x02\x03\x04\x05\x06"
237
+ d = dest; util.append_int32_be!(d, 0xf3f4f5f6); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6".force_encoding('binary')
238
+ d = dest; util.append_sint32_be!(d, 0x03040506); d.must_equal "\x01\x02\x03\x04\x05\x06"
239
+ d = dest; util.append_sint32_be!(d, -202050058); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6".force_encoding('binary')
240
+
241
+ d = dest; util.append_int40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07"
242
+ d = dest; util.append_int40_le!(d, 0xf7f6f5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
243
+ d = dest; util.append_sint40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07"
244
+ d = dest; util.append_sint40_le!(d, -34511391501); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
245
+
246
+ d = dest; util.append_int40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x03\x04\x05\x06\x07"
247
+ d = dest; util.append_int40_be!(d, 0xf3f4f5f6f7); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
248
+ d = dest; util.append_sint40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x03\x04\x05\x06\x07"
249
+ d = dest; util.append_sint40_be!(d, -51724814601); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
250
+
251
+ d = dest; util.append_int48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08"
252
+ d = dest; util.append_int48_le!(d, 0xf8f7f6f5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
253
+ d = dest; util.append_sint48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08"
254
+ d = dest; util.append_sint48_le!(d, -7731092785933); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
255
+
256
+ d = dest; util.append_int48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08"
257
+ d = dest; util.append_int48_be!(d, 0xf3f4f5f6f7f8); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
258
+ d = dest; util.append_sint48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08"
259
+ d = dest; util.append_sint48_be!(d, -13241552537608); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
260
+
261
+ d = dest; util.append_int56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09"
262
+ d = dest; util.append_int56_le!(d, 0xf9f8f7f6f5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
263
+ d = dest; util.append_sint56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09"
264
+ d = dest; util.append_sint56_le!(d, -1696580953049869); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
265
+
266
+ d = dest; util.append_int56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09"
267
+ d = dest; util.append_int56_be!(d, 0xf3f4f5f6f7f8f9); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
268
+ d = dest; util.append_sint56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09"
269
+ d = dest; util.append_sint56_be!(d, -3389837449627399); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
270
+
271
+ d = dest; util.append_int64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
272
+ d = dest; util.append_int64_le!(d, 0xfaf9f8f7f6f5f4f3); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
273
+ d = dest; util.append_sint64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
274
+ d = dest; util.append_sint64_le!(d, -361984551142689549); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
275
+
276
+ d = dest; util.append_int64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
277
+ d = dest; util.append_int64_be!(d, 0xf3f4f5f6f7f8f9fa); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
278
+ d = dest; util.append_sint64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
279
+ d = dest; util.append_sint64_be!(d, -867798387104613894); d.must_equal "\x01\x02\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
280
+
281
+ d = dest; util.append_ber!(d, 3); d.must_equal "\x01\x02\x03"
282
+ d = dest; util.append_ber!(d, 14724); d.must_equal "\x01\x02\xf3\x04".force_encoding('binary')
283
+ d = dest; util.append_ber!(d, 1899013); d.must_equal "\x01\x02\xf3\xf4\x05".force_encoding('binary')
284
+ d = dest; util.append_ber!(d, 243088006); d.must_equal "\x01\x02\xf3\xf4\xf5\x06".force_encoding('binary')
285
+ end
286
+
287
+ it "must append bersize and integer" do
288
+ d = dest; util.append_bersize_int8!(d, 0x03); d.must_equal "\x01\x02\x01\x03"
289
+ d = dest; util.append_bersize_int8!(d, 0xf3); d.must_equal "\x01\x02\x01\xf3".force_encoding('binary')
290
+ d = dest; util.append_bersize_sint8!(d, 0x03); d.must_equal "\x01\x02\x01\x03"
291
+ d = dest; util.append_bersize_sint8!(d, -13); d.must_equal "\x01\x02\x01\xf3".force_encoding('binary')
292
+
293
+ d = dest; util.append_bersize_int16_le!(d, 0x0403); d.must_equal "\x01\x02\x02\x03\x04"
294
+ d = dest; util.append_bersize_int16_le!(d, 0xf4f3); d.must_equal "\x01\x02\x02\xf3\xf4".force_encoding('binary')
295
+ d = dest; util.append_bersize_sint16_le!(d, 0x0403); d.must_equal "\x01\x02\x02\x03\x04"
296
+ d = dest; util.append_bersize_sint16_le!(d, -2829); d.must_equal "\x01\x02\x02\xf3\xf4".force_encoding('binary')
297
+
298
+ d = dest; util.append_bersize_int16_be!(d, 0x0304); d.must_equal "\x01\x02\x02\x03\x04"
299
+ d = dest; util.append_bersize_int16_be!(d, 0xf3f4); d.must_equal "\x01\x02\x02\xf3\xf4".force_encoding('binary')
300
+ d = dest; util.append_bersize_sint16_be!(d, 0x0304); d.must_equal "\x01\x02\x02\x03\x04"
301
+ d = dest; util.append_bersize_sint16_be!(d, -3084); d.must_equal "\x01\x02\x02\xf3\xf4".force_encoding('binary')
302
+
303
+ d = dest; util.append_bersize_int24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x03\x04\x05"
304
+ d = dest; util.append_bersize_int24_le!(d, 0xf5f4f3); d.must_equal "\x01\x02\x03\xf3\xf4\xf5".force_encoding('binary')
305
+ d = dest; util.append_bersize_sint24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x03\x04\x05"
306
+ d = dest; util.append_bersize_sint24_le!(d, -658189); d.must_equal "\x01\x02\x03\xf3\xf4\xf5".force_encoding('binary')
307
+
308
+ d = dest; util.append_bersize_int24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x03\x04\x05"
309
+ d = dest; util.append_bersize_int24_be!(d, 0xf3f4f5); d.must_equal "\x01\x02\x03\xf3\xf4\xf5".force_encoding('binary')
310
+ d = dest; util.append_bersize_sint24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x03\x04\x05"
311
+ d = dest; util.append_bersize_sint24_be!(d, -789259); d.must_equal "\x01\x02\x03\xf3\xf4\xf5".force_encoding('binary')
312
+
313
+ d = dest; util.append_bersize_int32_le!(d, 0x06050403); d.must_equal "\x01\x02\x04\x03\x04\x05\x06"
314
+ d = dest; util.append_bersize_int32_le!(d, 0xf6f5f4f3); d.must_equal "\x01\x02\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
315
+ d = dest; util.append_bersize_sint32_le!(d, 0x06050403); d.must_equal "\x01\x02\x04\x03\x04\x05\x06"
316
+ d = dest; util.append_bersize_sint32_le!(d, -151653133); d.must_equal "\x01\x02\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
317
+
318
+ d = dest; util.append_bersize_int32_be!(d, 0x03040506); d.must_equal "\x01\x02\x04\x03\x04\x05\x06"
319
+ d = dest; util.append_bersize_int32_be!(d, 0xf3f4f5f6); d.must_equal "\x01\x02\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
320
+ d = dest; util.append_bersize_sint32_be!(d, 0x03040506); d.must_equal "\x01\x02\x04\x03\x04\x05\x06"
321
+ d = dest; util.append_bersize_sint32_be!(d, -202050058); d.must_equal "\x01\x02\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
322
+
323
+ d = dest; util.append_bersize_int40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x05\x03\x04\x05\x06\x07"
324
+ d = dest; util.append_bersize_int40_le!(d, 0xf7f6f5f4f3); d.must_equal "\x01\x02\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
325
+ d = dest; util.append_bersize_sint40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x05\x03\x04\x05\x06\x07"
326
+ d = dest; util.append_bersize_sint40_le!(d, -34511391501); d.must_equal "\x01\x02\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
327
+
328
+ d = dest; util.append_bersize_int40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x05\x03\x04\x05\x06\x07"
329
+ d = dest; util.append_bersize_int40_be!(d, 0xf3f4f5f6f7); d.must_equal "\x01\x02\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
330
+ d = dest; util.append_bersize_sint40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x05\x03\x04\x05\x06\x07"
331
+ d = dest; util.append_bersize_sint40_be!(d, -51724814601); d.must_equal "\x01\x02\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
332
+
333
+ d = dest; util.append_bersize_int48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x06\x03\x04\x05\x06\x07\x08"
334
+ d = dest; util.append_bersize_int48_le!(d, 0xf8f7f6f5f4f3); d.must_equal "\x01\x02\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
335
+ d = dest; util.append_bersize_sint48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x06\x03\x04\x05\x06\x07\x08"
336
+ d = dest; util.append_bersize_sint48_le!(d, -7731092785933); d.must_equal "\x01\x02\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
337
+
338
+ d = dest; util.append_bersize_int48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x06\x03\x04\x05\x06\x07\x08"
339
+ d = dest; util.append_bersize_int48_be!(d, 0xf3f4f5f6f7f8); d.must_equal "\x01\x02\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
340
+ d = dest; util.append_bersize_sint48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x06\x03\x04\x05\x06\x07\x08"
341
+ d = dest; util.append_bersize_sint48_be!(d, -13241552537608); d.must_equal "\x01\x02\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
342
+
343
+ d = dest; util.append_bersize_int56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x07\x03\x04\x05\x06\x07\x08\x09"
344
+ d = dest; util.append_bersize_int56_le!(d, 0xf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
345
+ d = dest; util.append_bersize_sint56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x07\x03\x04\x05\x06\x07\x08\x09"
346
+ d = dest; util.append_bersize_sint56_le!(d, -1696580953049869); d.must_equal "\x01\x02\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
347
+
348
+ d = dest; util.append_bersize_int56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x07\x03\x04\x05\x06\x07\x08\x09"
349
+ d = dest; util.append_bersize_int56_be!(d, 0xf3f4f5f6f7f8f9); d.must_equal "\x01\x02\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
350
+ d = dest; util.append_bersize_sint56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x07\x03\x04\x05\x06\x07\x08\x09"
351
+ d = dest; util.append_bersize_sint56_be!(d, -3389837449627399); d.must_equal "\x01\x02\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
352
+
353
+ d = dest; util.append_bersize_int64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
354
+ d = dest; util.append_bersize_int64_le!(d, 0xfaf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
355
+ d = dest; util.append_bersize_sint64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
356
+ d = dest; util.append_bersize_sint64_le!(d, -361984551142689549); d.must_equal "\x01\x02\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
357
+
358
+ d = dest; util.append_bersize_int64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
359
+ d = dest; util.append_bersize_int64_be!(d, 0xf3f4f5f6f7f8f9fa); d.must_equal "\x01\x02\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
360
+ d = dest; util.append_bersize_sint64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
361
+ d = dest; util.append_bersize_sint64_be!(d, -867798387104613894); d.must_equal "\x01\x02\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
362
+
363
+ d = dest; util.append_bersize_ber!(d, 3); d.must_equal "\x01\x02\x01\x03"
364
+ d = dest; util.append_bersize_ber!(d, 14724); d.must_equal "\x01\x02\x02\xf3\x04".force_encoding('binary')
365
+ d = dest; util.append_bersize_ber!(d, 1899013); d.must_equal "\x01\x02\x03\xf3\xf4\x05".force_encoding('binary')
366
+ d = dest; util.append_bersize_ber!(d, 243088006); d.must_equal "\x01\x02\x04\xf3\xf4\xf5\x06".force_encoding('binary')
367
+ end
368
+
369
+ it "must append int32lesize and integer" do
370
+ d = dest; util.append_int32lesize_int8!(d, 0x03); d.must_equal "\x01\x02\x01\x00\x00\x00\x03"
371
+ d = dest; util.append_int32lesize_int8!(d, 0xf3); d.must_equal "\x01\x02\x01\x00\x00\x00\xf3".force_encoding('binary')
372
+ d = dest; util.append_int32lesize_sint8!(d, 0x03); d.must_equal "\x01\x02\x01\x00\x00\x00\x03"
373
+ d = dest; util.append_int32lesize_sint8!(d, -13); d.must_equal "\x01\x02\x01\x00\x00\x00\xf3".force_encoding('binary')
374
+
375
+ d = dest; util.append_int32lesize_int16_le!(d, 0x0403); d.must_equal "\x01\x02\x02\x00\x00\x00\x03\x04"
376
+ d = dest; util.append_int32lesize_int16_le!(d, 0xf4f3); d.must_equal "\x01\x02\x02\x00\x00\x00\xf3\xf4".force_encoding('binary')
377
+ d = dest; util.append_int32lesize_sint16_le!(d, 0x0403); d.must_equal "\x01\x02\x02\x00\x00\x00\x03\x04"
378
+ d = dest; util.append_int32lesize_sint16_le!(d, -2829); d.must_equal "\x01\x02\x02\x00\x00\x00\xf3\xf4".force_encoding('binary')
379
+
380
+ d = dest; util.append_int32lesize_int16_be!(d, 0x0304); d.must_equal "\x01\x02\x02\x00\x00\x00\x03\x04"
381
+ d = dest; util.append_int32lesize_int16_be!(d, 0xf3f4); d.must_equal "\x01\x02\x02\x00\x00\x00\xf3\xf4".force_encoding('binary')
382
+ d = dest; util.append_int32lesize_sint16_be!(d, 0x0304); d.must_equal "\x01\x02\x02\x00\x00\x00\x03\x04"
383
+ d = dest; util.append_int32lesize_sint16_be!(d, -3084); d.must_equal "\x01\x02\x02\x00\x00\x00\xf3\xf4".force_encoding('binary')
384
+
385
+ d = dest; util.append_int32lesize_int24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x00\x00\x00\x03\x04\x05"
386
+ d = dest; util.append_int32lesize_int24_le!(d, 0xf5f4f3); d.must_equal "\x01\x02\x03\x00\x00\x00\xf3\xf4\xf5".force_encoding('binary')
387
+ d = dest; util.append_int32lesize_sint24_le!(d, 0x050403); d.must_equal "\x01\x02\x03\x00\x00\x00\x03\x04\x05"
388
+ d = dest; util.append_int32lesize_sint24_le!(d, -658189); d.must_equal "\x01\x02\x03\x00\x00\x00\xf3\xf4\xf5".force_encoding('binary')
389
+
390
+ d = dest; util.append_int32lesize_int24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x00\x00\x00\x03\x04\x05"
391
+ d = dest; util.append_int32lesize_int24_be!(d, 0xf3f4f5); d.must_equal "\x01\x02\x03\x00\x00\x00\xf3\xf4\xf5".force_encoding('binary')
392
+ d = dest; util.append_int32lesize_sint24_be!(d, 0x030405); d.must_equal "\x01\x02\x03\x00\x00\x00\x03\x04\x05"
393
+ d = dest; util.append_int32lesize_sint24_be!(d, -789259); d.must_equal "\x01\x02\x03\x00\x00\x00\xf3\xf4\xf5".force_encoding('binary')
394
+
395
+ d = dest; util.append_int32lesize_int32_le!(d, 0x06050403); d.must_equal "\x01\x02\x04\x00\x00\x00\x03\x04\x05\x06"
396
+ d = dest; util.append_int32lesize_int32_le!(d, 0xf6f5f4f3); d.must_equal "\x01\x02\x04\x00\x00\x00\xf3\xf4\xf5\xf6".force_encoding('binary')
397
+ d = dest; util.append_int32lesize_sint32_le!(d, 0x06050403); d.must_equal "\x01\x02\x04\x00\x00\x00\x03\x04\x05\x06"
398
+ d = dest; util.append_int32lesize_sint32_le!(d, -151653133); d.must_equal "\x01\x02\x04\x00\x00\x00\xf3\xf4\xf5\xf6".force_encoding('binary')
399
+
400
+ d = dest; util.append_int32lesize_int32_be!(d, 0x03040506); d.must_equal "\x01\x02\x04\x00\x00\x00\x03\x04\x05\x06"
401
+ d = dest; util.append_int32lesize_int32_be!(d, 0xf3f4f5f6); d.must_equal "\x01\x02\x04\x00\x00\x00\xf3\xf4\xf5\xf6".force_encoding('binary')
402
+ d = dest; util.append_int32lesize_sint32_be!(d, 0x03040506); d.must_equal "\x01\x02\x04\x00\x00\x00\x03\x04\x05\x06"
403
+ d = dest; util.append_int32lesize_sint32_be!(d, -202050058); d.must_equal "\x01\x02\x04\x00\x00\x00\xf3\xf4\xf5\xf6".force_encoding('binary')
404
+
405
+ d = dest; util.append_int32lesize_int40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x05\x00\x00\x00\x03\x04\x05\x06\x07"
406
+ d = dest; util.append_int32lesize_int40_le!(d, 0xf7f6f5f4f3); d.must_equal "\x01\x02\x05\x00\x00\x00\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
407
+ d = dest; util.append_int32lesize_sint40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x05\x00\x00\x00\x03\x04\x05\x06\x07"
408
+ d = dest; util.append_int32lesize_sint40_le!(d, -34511391501); d.must_equal "\x01\x02\x05\x00\x00\x00\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
409
+
410
+ d = dest; util.append_int32lesize_int40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x05\x00\x00\x00\x03\x04\x05\x06\x07"
411
+ d = dest; util.append_int32lesize_int40_be!(d, 0xf3f4f5f6f7); d.must_equal "\x01\x02\x05\x00\x00\x00\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
412
+ d = dest; util.append_int32lesize_sint40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x05\x00\x00\x00\x03\x04\x05\x06\x07"
413
+ d = dest; util.append_int32lesize_sint40_be!(d, -51724814601); d.must_equal "\x01\x02\x05\x00\x00\x00\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
414
+
415
+ d = dest; util.append_int32lesize_int48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x06\x00\x00\x00\x03\x04\x05\x06\x07\x08"
416
+ d = dest; util.append_int32lesize_int48_le!(d, 0xf8f7f6f5f4f3); d.must_equal "\x01\x02\x06\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
417
+ d = dest; util.append_int32lesize_sint48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x06\x00\x00\x00\x03\x04\x05\x06\x07\x08"
418
+ d = dest; util.append_int32lesize_sint48_le!(d, -7731092785933); d.must_equal "\x01\x02\x06\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
419
+
420
+ d = dest; util.append_int32lesize_int48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x06\x00\x00\x00\x03\x04\x05\x06\x07\x08"
421
+ d = dest; util.append_int32lesize_int48_be!(d, 0xf3f4f5f6f7f8); d.must_equal "\x01\x02\x06\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
422
+ d = dest; util.append_int32lesize_sint48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x06\x00\x00\x00\x03\x04\x05\x06\x07\x08"
423
+ d = dest; util.append_int32lesize_sint48_be!(d, -13241552537608); d.must_equal "\x01\x02\x06\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
424
+
425
+ d = dest; util.append_int32lesize_int56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x07\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09"
426
+ d = dest; util.append_int32lesize_int56_le!(d, 0xf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x07\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
427
+ d = dest; util.append_int32lesize_sint56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x07\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09"
428
+ d = dest; util.append_int32lesize_sint56_le!(d, -1696580953049869); d.must_equal "\x01\x02\x07\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
429
+
430
+ d = dest; util.append_int32lesize_int56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x07\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09"
431
+ d = dest; util.append_int32lesize_int56_be!(d, 0xf3f4f5f6f7f8f9); d.must_equal "\x01\x02\x07\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
432
+ d = dest; util.append_int32lesize_sint56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x07\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09"
433
+ d = dest; util.append_int32lesize_sint56_be!(d, -3389837449627399); d.must_equal "\x01\x02\x07\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
434
+
435
+ d = dest; util.append_int32lesize_int64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x08\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09\x0a"
436
+ d = dest; util.append_int32lesize_int64_le!(d, 0xfaf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x08\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
437
+ d = dest; util.append_int32lesize_sint64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x08\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09\x0a"
438
+ d = dest; util.append_int32lesize_sint64_le!(d, -361984551142689549); d.must_equal "\x01\x02\x08\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
439
+
440
+ d = dest; util.append_int32lesize_int64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x08\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09\x0a"
441
+ d = dest; util.append_int32lesize_int64_be!(d, 0xf3f4f5f6f7f8f9fa); d.must_equal "\x01\x02\x08\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
442
+ d = dest; util.append_int32lesize_sint64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x08\x00\x00\x00\x03\x04\x05\x06\x07\x08\x09\x0a"
443
+ d = dest; util.append_int32lesize_sint64_be!(d, -867798387104613894); d.must_equal "\x01\x02\x08\x00\x00\x00\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
444
+
445
+ d = dest; util.append_int32lesize_ber!(d, 3); d.must_equal "\x01\x02\x01\x00\x00\x00\x03"
446
+ d = dest; util.append_int32lesize_ber!(d, 14724); d.must_equal "\x01\x02\x02\x00\x00\x00\xf3\x04".force_encoding('binary')
447
+ d = dest; util.append_int32lesize_ber!(d, 1899013); d.must_equal "\x01\x02\x03\x00\x00\x00\xf3\xf4\x05".force_encoding('binary')
448
+ d = dest; util.append_int32lesize_ber!(d, 243088006); d.must_equal "\x01\x02\x04\x00\x00\x00\xf3\xf4\xf5\x06".force_encoding('binary')
449
+ end
450
+
451
+ it "must append int32besize and integer" do
452
+ d = dest; util.append_int32besize_int8!(d, 0x03); d.must_equal "\x01\x02\x00\x00\x00\x01\x03"
453
+ d = dest; util.append_int32besize_int8!(d, 0xf3); d.must_equal "\x01\x02\x00\x00\x00\x01\xf3".force_encoding('binary')
454
+ d = dest; util.append_int32besize_sint8!(d, 0x03); d.must_equal "\x01\x02\x00\x00\x00\x01\x03"
455
+ d = dest; util.append_int32besize_sint8!(d, -13); d.must_equal "\x01\x02\x00\x00\x00\x01\xf3".force_encoding('binary')
456
+
457
+ d = dest; util.append_int32besize_int16_le!(d, 0x0403); d.must_equal "\x01\x02\x00\x00\x00\x02\x03\x04"
458
+ d = dest; util.append_int32besize_int16_le!(d, 0xf4f3); d.must_equal "\x01\x02\x00\x00\x00\x02\xf3\xf4".force_encoding('binary')
459
+ d = dest; util.append_int32besize_sint16_le!(d, 0x0403); d.must_equal "\x01\x02\x00\x00\x00\x02\x03\x04"
460
+ d = dest; util.append_int32besize_sint16_le!(d, -2829); d.must_equal "\x01\x02\x00\x00\x00\x02\xf3\xf4".force_encoding('binary')
461
+
462
+ d = dest; util.append_int32besize_int16_be!(d, 0x0304); d.must_equal "\x01\x02\x00\x00\x00\x02\x03\x04"
463
+ d = dest; util.append_int32besize_int16_be!(d, 0xf3f4); d.must_equal "\x01\x02\x00\x00\x00\x02\xf3\xf4".force_encoding('binary')
464
+ d = dest; util.append_int32besize_sint16_be!(d, 0x0304); d.must_equal "\x01\x02\x00\x00\x00\x02\x03\x04"
465
+ d = dest; util.append_int32besize_sint16_be!(d, -3084); d.must_equal "\x01\x02\x00\x00\x00\x02\xf3\xf4".force_encoding('binary')
466
+
467
+ d = dest; util.append_int32besize_int24_le!(d, 0x050403); d.must_equal "\x01\x02\x00\x00\x00\x03\x03\x04\x05"
468
+ d = dest; util.append_int32besize_int24_le!(d, 0xf5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x03\xf3\xf4\xf5".force_encoding('binary')
469
+ d = dest; util.append_int32besize_sint24_le!(d, 0x050403); d.must_equal "\x01\x02\x00\x00\x00\x03\x03\x04\x05"
470
+ d = dest; util.append_int32besize_sint24_le!(d, -658189); d.must_equal "\x01\x02\x00\x00\x00\x03\xf3\xf4\xf5".force_encoding('binary')
471
+
472
+ d = dest; util.append_int32besize_int24_be!(d, 0x030405); d.must_equal "\x01\x02\x00\x00\x00\x03\x03\x04\x05"
473
+ d = dest; util.append_int32besize_int24_be!(d, 0xf3f4f5); d.must_equal "\x01\x02\x00\x00\x00\x03\xf3\xf4\xf5".force_encoding('binary')
474
+ d = dest; util.append_int32besize_sint24_be!(d, 0x030405); d.must_equal "\x01\x02\x00\x00\x00\x03\x03\x04\x05"
475
+ d = dest; util.append_int32besize_sint24_be!(d, -789259); d.must_equal "\x01\x02\x00\x00\x00\x03\xf3\xf4\xf5".force_encoding('binary')
476
+
477
+ d = dest; util.append_int32besize_int32_le!(d, 0x06050403); d.must_equal "\x01\x02\x00\x00\x00\x04\x03\x04\x05\x06"
478
+ d = dest; util.append_int32besize_int32_le!(d, 0xf6f5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
479
+ d = dest; util.append_int32besize_sint32_le!(d, 0x06050403); d.must_equal "\x01\x02\x00\x00\x00\x04\x03\x04\x05\x06"
480
+ d = dest; util.append_int32besize_sint32_le!(d, -151653133); d.must_equal "\x01\x02\x00\x00\x00\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
481
+
482
+ d = dest; util.append_int32besize_int32_be!(d, 0x03040506); d.must_equal "\x01\x02\x00\x00\x00\x04\x03\x04\x05\x06"
483
+ d = dest; util.append_int32besize_int32_be!(d, 0xf3f4f5f6); d.must_equal "\x01\x02\x00\x00\x00\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
484
+ d = dest; util.append_int32besize_sint32_be!(d, 0x03040506); d.must_equal "\x01\x02\x00\x00\x00\x04\x03\x04\x05\x06"
485
+ d = dest; util.append_int32besize_sint32_be!(d, -202050058); d.must_equal "\x01\x02\x00\x00\x00\x04\xf3\xf4\xf5\xf6".force_encoding('binary')
486
+
487
+ d = dest; util.append_int32besize_int40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x00\x00\x00\x05\x03\x04\x05\x06\x07"
488
+ d = dest; util.append_int32besize_int40_le!(d, 0xf7f6f5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
489
+ d = dest; util.append_int32besize_sint40_le!(d, 0x0706050403); d.must_equal "\x01\x02\x00\x00\x00\x05\x03\x04\x05\x06\x07"
490
+ d = dest; util.append_int32besize_sint40_le!(d, -34511391501); d.must_equal "\x01\x02\x00\x00\x00\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
491
+
492
+ d = dest; util.append_int32besize_int40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x00\x00\x00\x05\x03\x04\x05\x06\x07"
493
+ d = dest; util.append_int32besize_int40_be!(d, 0xf3f4f5f6f7); d.must_equal "\x01\x02\x00\x00\x00\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
494
+ d = dest; util.append_int32besize_sint40_be!(d, 0x0304050607); d.must_equal "\x01\x02\x00\x00\x00\x05\x03\x04\x05\x06\x07"
495
+ d = dest; util.append_int32besize_sint40_be!(d, -51724814601); d.must_equal "\x01\x02\x00\x00\x00\x05\xf3\xf4\xf5\xf6\xf7".force_encoding('binary')
496
+
497
+ d = dest; util.append_int32besize_int48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x00\x00\x00\x06\x03\x04\x05\x06\x07\x08"
498
+ d = dest; util.append_int32besize_int48_le!(d, 0xf8f7f6f5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
499
+ d = dest; util.append_int32besize_sint48_le!(d, 0x080706050403); d.must_equal "\x01\x02\x00\x00\x00\x06\x03\x04\x05\x06\x07\x08"
500
+ d = dest; util.append_int32besize_sint48_le!(d, -7731092785933); d.must_equal "\x01\x02\x00\x00\x00\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
501
+
502
+ d = dest; util.append_int32besize_int48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x00\x00\x00\x06\x03\x04\x05\x06\x07\x08"
503
+ d = dest; util.append_int32besize_int48_be!(d, 0xf3f4f5f6f7f8); d.must_equal "\x01\x02\x00\x00\x00\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
504
+ d = dest; util.append_int32besize_sint48_be!(d, 0x030405060708); d.must_equal "\x01\x02\x00\x00\x00\x06\x03\x04\x05\x06\x07\x08"
505
+ d = dest; util.append_int32besize_sint48_be!(d, -13241552537608); d.must_equal "\x01\x02\x00\x00\x00\x06\xf3\xf4\xf5\xf6\xf7\xf8".force_encoding('binary')
506
+
507
+ d = dest; util.append_int32besize_int56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x00\x00\x00\x07\x03\x04\x05\x06\x07\x08\x09"
508
+ d = dest; util.append_int32besize_int56_le!(d, 0xf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
509
+ d = dest; util.append_int32besize_sint56_le!(d, 0x09080706050403); d.must_equal "\x01\x02\x00\x00\x00\x07\x03\x04\x05\x06\x07\x08\x09"
510
+ d = dest; util.append_int32besize_sint56_le!(d, -1696580953049869); d.must_equal "\x01\x02\x00\x00\x00\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
511
+
512
+ d = dest; util.append_int32besize_int56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x00\x00\x00\x07\x03\x04\x05\x06\x07\x08\x09"
513
+ d = dest; util.append_int32besize_int56_be!(d, 0xf3f4f5f6f7f8f9); d.must_equal "\x01\x02\x00\x00\x00\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
514
+ d = dest; util.append_int32besize_sint56_be!(d, 0x03040506070809); d.must_equal "\x01\x02\x00\x00\x00\x07\x03\x04\x05\x06\x07\x08\x09"
515
+ d = dest; util.append_int32besize_sint56_be!(d, -3389837449627399); d.must_equal "\x01\x02\x00\x00\x00\x07\xf3\xf4\xf5\xf6\xf7\xf8\xf9".force_encoding('binary')
516
+
517
+ d = dest; util.append_int32besize_int64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x00\x00\x00\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
518
+ d = dest; util.append_int32besize_int64_le!(d, 0xfaf9f8f7f6f5f4f3); d.must_equal "\x01\x02\x00\x00\x00\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
519
+ d = dest; util.append_int32besize_sint64_le!(d, 0x0a09080706050403); d.must_equal "\x01\x02\x00\x00\x00\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
520
+ d = dest; util.append_int32besize_sint64_le!(d, -361984551142689549); d.must_equal "\x01\x02\x00\x00\x00\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
521
+
522
+ d = dest; util.append_int32besize_int64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x00\x00\x00\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
523
+ d = dest; util.append_int32besize_int64_be!(d, 0xf3f4f5f6f7f8f9fa); d.must_equal "\x01\x02\x00\x00\x00\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
524
+ d = dest; util.append_int32besize_sint64_be!(d, 0x030405060708090a); d.must_equal "\x01\x02\x00\x00\x00\x08\x03\x04\x05\x06\x07\x08\x09\x0a"
525
+ d = dest; util.append_int32besize_sint64_be!(d, -867798387104613894); d.must_equal "\x01\x02\x00\x00\x00\x08\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa".force_encoding('binary')
526
+
527
+ d = dest; util.append_int32besize_ber!(d, 3); d.must_equal "\x01\x02\x00\x00\x00\x01\x03"
528
+ d = dest; util.append_int32besize_ber!(d, 14724); d.must_equal "\x01\x02\x00\x00\x00\x02\xf3\x04".force_encoding('binary')
529
+ d = dest; util.append_int32besize_ber!(d, 1899013); d.must_equal "\x01\x02\x00\x00\x00\x03\xf3\xf4\x05".force_encoding('binary')
530
+ d = dest; util.append_int32besize_ber!(d, 243088006); d.must_equal "\x01\x02\x00\x00\x00\x04\xf3\xf4\xf5\x06".force_encoding('binary')
531
+ end
532
+
533
+ it "must append string" do
534
+ d = dest; util.append_string!(d, "asdfфыва"); d.must_equal "\x01\x02asdf\xD1\x84\xD1\x8B\xD0\xB2\xD0\xB0".force_encoding('binary')
535
+ d = dest; util.append_bersize_string!(d, "asdfфыва"); d.must_equal "\x01\x02\x0casdf\xD1\x84\xD1\x8B\xD0\xB2\xD0\xB0".force_encoding('binary')
536
+ d = dest; util.append_int32lesize_string!(d, "asdfфыва"); d.must_equal "\x01\x02\x0c\x00\x00\x00asdf\xD1\x84\xD1\x8B\xD0\xB2\xD0\xB0".force_encoding('binary')
537
+ d = dest; util.append_int32besize_string!(d, "asdfфыва"); d.must_equal "\x01\x02\x00\x00\x00\x0casdf\xD1\x84\xD1\x8B\xD0\xB2\xD0\xB0".force_encoding('binary')
538
+ end
539
+ end
540
+
541
+ require 'bin_utils/pure_ruby'
542
+ describe 'pure_ruby' do
543
+ let(:util){ BinUtils::PureRuby }
544
+ class_eval(&shared_example)
545
+ end
546
+
547
+ begin
548
+ require 'bin_utils/native_bin_utils'
549
+ describe 'native' do
550
+ let(:util){ BinUtils::Native }
551
+ class_eval(&shared_example)
552
+ end
553
+ rescue LoadError
554
+ puts "NO NATIVE MODULE TESTED"
555
+ end
556
+
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bin_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sokolov Yura 'funny-falcon'
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: utils for extracting binary integers from binary string and packing them
15
+ back
16
+ email:
17
+ - funny.falcon@gmail.com
18
+ executables: []
19
+ extensions:
20
+ - ext/bin_utils/extconf.rb
21
+ extra_rdoc_files: []
22
+ files:
23
+ - ext/bin_utils/extconf.rb
24
+ - ext/bin_utils/native.c
25
+ - lib/bin_utils.rb
26
+ - lib/bin_utils/pure_ruby.rb
27
+ - lib/bin_utils/version.rb
28
+ - test/test_bin_utils.rb
29
+ homepage: https://github.com/funny-falcon/bin_utils
30
+ licenses: []
31
+ post_install_message:
32
+ rdoc_options: []
33
+ require_paths:
34
+ - lib
35
+ - ext
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: 1.9.1
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubyforge_project:
50
+ rubygems_version: 1.8.24
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: Faster alternative to String#unpack and Array#unpack, though not as complete
54
+ as those methods
55
+ test_files:
56
+ - test/test_bin_utils.rb
57
+ has_rdoc: