bin_utils 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: