hexdump 0.3.0 → 1.0.0

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +68 -2
  3. data/Gemfile +1 -0
  4. data/README.md +486 -135
  5. data/benchmark.rb +29 -22
  6. data/lib/hexdump/chars.rb +46 -0
  7. data/lib/hexdump/core_ext/file.rb +68 -6
  8. data/lib/hexdump/core_ext/io.rb +2 -2
  9. data/lib/hexdump/core_ext/kernel.rb +7 -0
  10. data/lib/hexdump/core_ext/string.rb +2 -2
  11. data/lib/hexdump/core_ext/string_io.rb +2 -2
  12. data/lib/hexdump/core_ext.rb +1 -0
  13. data/lib/hexdump/format_string.rb +43 -0
  14. data/lib/hexdump/hexdump.rb +768 -75
  15. data/lib/hexdump/mixin.rb +198 -0
  16. data/lib/hexdump/module_methods.rb +132 -0
  17. data/lib/hexdump/numeric/binary.rb +55 -0
  18. data/lib/hexdump/numeric/char_or_int.rb +90 -0
  19. data/lib/hexdump/numeric/decimal.rb +56 -0
  20. data/lib/hexdump/numeric/exceptions.rb +11 -0
  21. data/lib/hexdump/numeric/hexadecimal.rb +59 -0
  22. data/lib/hexdump/numeric/octal.rb +55 -0
  23. data/lib/hexdump/numeric.rb +5 -0
  24. data/lib/hexdump/reader.rb +314 -0
  25. data/lib/hexdump/theme/ansi.rb +81 -0
  26. data/lib/hexdump/theme/rule.rb +159 -0
  27. data/lib/hexdump/theme.rb +61 -0
  28. data/lib/hexdump/type.rb +232 -0
  29. data/lib/hexdump/types.rb +108 -0
  30. data/lib/hexdump/version.rb +1 -1
  31. data/lib/hexdump.rb +12 -1
  32. data/spec/chars_spec.rb +76 -0
  33. data/spec/core_ext_spec.rb +10 -6
  34. data/spec/hexdump_class_spec.rb +1708 -0
  35. data/spec/hexdump_module_spec.rb +23 -0
  36. data/spec/mixin_spec.rb +37 -0
  37. data/spec/numeric/binary_spec.rb +239 -0
  38. data/spec/numeric/char_or_int_spec.rb +210 -0
  39. data/spec/numeric/decimal_spec.rb +317 -0
  40. data/spec/numeric/hexadecimal_spec.rb +320 -0
  41. data/spec/numeric/octal_spec.rb +239 -0
  42. data/spec/reader_spec.rb +863 -0
  43. data/spec/theme/ansi_spec.rb +242 -0
  44. data/spec/theme/rule_spec.rb +199 -0
  45. data/spec/theme_spec.rb +94 -0
  46. data/spec/type_spec.rb +317 -0
  47. data/spec/types_spec.rb +904 -0
  48. metadata +39 -10
  49. data/.gemtest +0 -0
  50. data/lib/hexdump/dumper.rb +0 -419
  51. data/spec/dumper_spec.rb +0 -329
  52. data/spec/hexdump_spec.rb +0 -30
data/spec/type_spec.rb ADDED
@@ -0,0 +1,317 @@
1
+ require 'spec_helper'
2
+ require 'hexdump/type'
3
+
4
+ describe Hexdump::Type do
5
+ describe "#initialize" do
6
+ let(:size) { 4 }
7
+ let(:signed) { true }
8
+
9
+ subject { described_class.new(size: size, signed: signed) }
10
+
11
+ it "must set #size" do
12
+ expect(subject.size).to eq(size)
13
+ end
14
+
15
+ it "must not set #endian" do
16
+ expect(subject.endian).to be(nil)
17
+ end
18
+
19
+ it "must set #signed?" do
20
+ expect(subject.signed?).to eq(signed)
21
+ end
22
+
23
+ context "when given endian:" do
24
+ let(:endian) { :big }
25
+
26
+ subject do
27
+ described_class.new(size: size, endian: endian, signed: signed)
28
+ end
29
+
30
+ it "must set #endian" do
31
+ expect(subject.endian).to eq(endian)
32
+ end
33
+ end
34
+ end
35
+
36
+ describe "#signed?" do
37
+ let(:size) { 4 }
38
+
39
+ subject { described_class.new(size: size, signed: signed) }
40
+
41
+ context "when initialized with signed: true" do
42
+ let(:signed) { true }
43
+
44
+ it do
45
+ expect(subject.signed?).to be(true)
46
+ end
47
+ end
48
+
49
+ context "when initialized with signed: false" do
50
+ let(:signed) { false }
51
+
52
+ it do
53
+ expect(subject.signed?).to be(false)
54
+ end
55
+ end
56
+ end
57
+
58
+ describe "#unsigned?" do
59
+ let(:size) { 4 }
60
+
61
+ subject { described_class.new(size: size, signed: signed) }
62
+
63
+ context "when initialized with signed: true" do
64
+ let(:signed) { true }
65
+
66
+ it do
67
+ expect(subject.unsigned?).to be(false)
68
+ end
69
+ end
70
+
71
+ context "when initialized with signed: false" do
72
+ let(:signed) { false }
73
+
74
+ it do
75
+ expect(subject.unsigned?).to be(true)
76
+ end
77
+ end
78
+ end
79
+
80
+ describe Hexdump::Type::UInt do
81
+ subject { described_class.new(size: 4) }
82
+
83
+ describe "#initialize" do
84
+ it "must default #signed? to false" do
85
+ expect(subject.signed?).to be(false)
86
+ end
87
+
88
+ it "must default #endian to NATIVE_ENDIAN" do
89
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe Hexdump::Type::UInt8 do
95
+ it { expect(subject).kind_of?(Hexdump::Type::UInt) }
96
+
97
+ describe "#initialize" do
98
+ it "must default #signed? to false" do
99
+ expect(subject.signed?).to be(false)
100
+ end
101
+
102
+ it "must default #size to 1" do
103
+ expect(subject.size).to be(1)
104
+ end
105
+
106
+ it "must default #endian to nil" do
107
+ expect(subject.endian).to be(nil)
108
+ end
109
+ end
110
+ end
111
+
112
+ describe Hexdump::Type::UInt16 do
113
+ it { expect(subject).kind_of?(Hexdump::Type::UInt) }
114
+
115
+ describe "#initialize" do
116
+ it "must default #signed? to false" do
117
+ expect(subject.signed?).to be(false)
118
+ end
119
+
120
+ it "must default #size to 2" do
121
+ expect(subject.size).to be(2)
122
+ end
123
+
124
+ it "must default #endian to NATIVE_ENDIAN" do
125
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
126
+ end
127
+ end
128
+ end
129
+
130
+ describe Hexdump::Type::UInt32 do
131
+ it { expect(subject).kind_of?(Hexdump::Type::UInt) }
132
+
133
+ describe "#initialize" do
134
+ it "must default #signed? to false" do
135
+ expect(subject.signed?).to be(false)
136
+ end
137
+
138
+ it "must default #size to 4" do
139
+ expect(subject.size).to be(4)
140
+ end
141
+
142
+ it "must default #endian to NATIVE_ENDIAN" do
143
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
144
+ end
145
+ end
146
+ end
147
+
148
+ describe Hexdump::Type::UInt64 do
149
+ it { expect(subject).kind_of?(Hexdump::Type::UInt) }
150
+
151
+ describe "#initialize" do
152
+ it "must default #signed? to false" do
153
+ expect(subject.signed?).to be(false)
154
+ end
155
+
156
+ it "must default #size to 8" do
157
+ expect(subject.size).to be(8)
158
+ end
159
+
160
+ it "must default #endian to NATIVE_ENDIAN" do
161
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
162
+ end
163
+ end
164
+ end
165
+
166
+ describe Hexdump::Type::Int do
167
+ subject { described_class.new(size: 4) }
168
+
169
+ describe "#initialize" do
170
+ it "must default #signed? to true" do
171
+ expect(subject.signed?).to be(true)
172
+ end
173
+
174
+ it "must default #endian to NATIVE_ENDIAN" do
175
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
176
+ end
177
+ end
178
+ end
179
+
180
+ describe Hexdump::Type::Int8 do
181
+ it { expect(subject).kind_of?(Hexdump::Type::Int) }
182
+
183
+ describe "#initialize" do
184
+ it "must default #signed? to true" do
185
+ expect(subject.signed?).to be(true)
186
+ end
187
+
188
+ it "must default #size to 1" do
189
+ expect(subject.size).to be(1)
190
+ end
191
+
192
+ it "must default #endian to nil" do
193
+ expect(subject.endian).to be(nil)
194
+ end
195
+ end
196
+ end
197
+
198
+ describe Hexdump::Type::Int16 do
199
+ it { expect(subject).kind_of?(Hexdump::Type::Int) }
200
+
201
+ describe "#initialize" do
202
+ it "must default #signed? to true" do
203
+ expect(subject.signed?).to be(true)
204
+ end
205
+
206
+ it "must default #size to 2" do
207
+ expect(subject.size).to be(2)
208
+ end
209
+
210
+ it "must default #endian to NATIVE_ENDIAN" do
211
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
212
+ end
213
+ end
214
+ end
215
+
216
+ describe Hexdump::Type::Int32 do
217
+ it { expect(subject).kind_of?(Hexdump::Type::Int) }
218
+
219
+ describe "#initialize" do
220
+ it "must default #signed? to true" do
221
+ expect(subject.signed?).to be(true)
222
+ end
223
+
224
+ it "must default #size to 4" do
225
+ expect(subject.size).to be(4)
226
+ end
227
+
228
+ it "must default #endian to NATIVE_ENDIAN" do
229
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
230
+ end
231
+ end
232
+ end
233
+
234
+ describe Hexdump::Type::Int64 do
235
+ it { expect(subject).kind_of?(Hexdump::Type::Int) }
236
+
237
+ describe "#initialize" do
238
+ it "must default #signed? to true" do
239
+ expect(subject.signed?).to be(true)
240
+ end
241
+
242
+ it "must default #size to 8" do
243
+ expect(subject.size).to be(8)
244
+ end
245
+
246
+ it "must default #endian to NATIVE_ENDIAN" do
247
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
248
+ end
249
+ end
250
+ end
251
+
252
+ describe Hexdump::Type::Char do
253
+ describe "#initialize" do
254
+ it "must set #signed? to true" do
255
+ expect(subject.signed?).to be(true)
256
+ end
257
+
258
+ it "must set #size to 1" do
259
+ expect(subject.size).to eq(1)
260
+ end
261
+
262
+ it "must set #endian to nil" do
263
+ expect(subject.endian).to be(nil)
264
+ end
265
+ end
266
+ end
267
+
268
+ describe Hexdump::Type::UChar do
269
+ describe "#initialize" do
270
+ it "must set #signed? to false" do
271
+ expect(subject.signed?).to be(false)
272
+ end
273
+
274
+ it "must set #size to 1" do
275
+ expect(subject.size).to eq(1)
276
+ end
277
+
278
+ it "must set #endian to nil" do
279
+ expect(subject.endian).to be(nil)
280
+ end
281
+ end
282
+ end
283
+
284
+ describe Hexdump::Type::Float do
285
+ subject { described_class.new(size: 4) }
286
+
287
+ describe "#initialize" do
288
+ it "must default #signed? to true" do
289
+ expect(subject.signed?).to be(true)
290
+ end
291
+
292
+ it "must default #endian to NATIVE_ENDIAN" do
293
+ expect(subject.endian).to eq(Hexdump::Type::NATIVE_ENDIAN)
294
+ end
295
+ end
296
+ end
297
+
298
+ describe Hexdump::Type::Float32 do
299
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float) }
300
+
301
+ describe "#initialize" do
302
+ it "must default #size to 4" do
303
+ expect(subject.size).to be(4)
304
+ end
305
+ end
306
+ end
307
+
308
+ describe Hexdump::Type::Float64 do
309
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float) }
310
+
311
+ describe "#initialize" do
312
+ it "must default #size to 8" do
313
+ expect(subject.size).to be(8)
314
+ end
315
+ end
316
+ end
317
+ end
@@ -0,0 +1,904 @@
1
+ require 'spec_helper'
2
+ require 'hexdump/types'
3
+
4
+ describe "Hexdump::TYPES" do
5
+ subject { Hexdump::TYPES }
6
+
7
+ describe "byte" do
8
+ it "must be an alias to uint8" do
9
+ expect(subject[:byte]).to be(subject[:uint8])
10
+ end
11
+ end
12
+
13
+ describe "char" do
14
+ subject { super()[:char] }
15
+
16
+ it { expect(subject).to_not be(nil) }
17
+ it { expect(subject).to be_kind_of(Hexdump::Type::Char) }
18
+
19
+ it "size must equal 1" do
20
+ expect(subject.size).to eq(1)
21
+ end
22
+
23
+ it "must not have endian-ness" do
24
+ expect(subject.endian).to be(nil)
25
+ end
26
+
27
+ it "must be signed" do
28
+ expect(subject.signed?).to be(true)
29
+ end
30
+ end
31
+
32
+ describe "uchar" do
33
+ subject { super()[:uchar] }
34
+
35
+ it { expect(subject).to_not be(nil) }
36
+ it { expect(subject).to be_kind_of(Hexdump::Type::UChar) }
37
+
38
+ it "size must equal 1" do
39
+ expect(subject.size).to eq(1)
40
+ end
41
+
42
+ it "must not have endian-ness" do
43
+ expect(subject.endian).to be(nil)
44
+ end
45
+
46
+ it "must not be signed" do
47
+ expect(subject.signed?).to be(false)
48
+ end
49
+ end
50
+
51
+ describe "int8" do
52
+ subject { super()[:int8] }
53
+
54
+ it { expect(subject).to_not be(nil) }
55
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int8) }
56
+
57
+ it "size must equal 1" do
58
+ expect(subject.size).to eq(1)
59
+ end
60
+
61
+ it "must not have endian-ness" do
62
+ expect(subject.endian).to be(nil)
63
+ end
64
+
65
+ it "must be signed" do
66
+ expect(subject.signed?).to be(true)
67
+ end
68
+ end
69
+
70
+ describe "uint8" do
71
+ subject { super()[:uint8] }
72
+
73
+ it { expect(subject).to_not be(nil) }
74
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt8) }
75
+
76
+ it "size must equal 1" do
77
+ expect(subject.size).to eq(1)
78
+ end
79
+
80
+ it "must not have endian-ness" do
81
+ expect(subject.endian).to be(nil)
82
+ end
83
+
84
+ it "must not be signed" do
85
+ expect(subject.signed?).to be(false)
86
+ end
87
+ end
88
+
89
+ describe "int16" do
90
+ subject { super()[:int16] }
91
+
92
+ it { expect(subject).to_not be(nil) }
93
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int16) }
94
+
95
+ it "size must equal 2" do
96
+ expect(subject.size).to eq(2)
97
+ end
98
+
99
+ it "must be signed" do
100
+ expect(subject.signed?).to be(true)
101
+ end
102
+ end
103
+
104
+ describe "int16_le" do
105
+ subject { super()[:int16_le] }
106
+
107
+ it { expect(subject).to_not be(nil) }
108
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int16) }
109
+
110
+ it "size must equal 2" do
111
+ expect(subject.size).to eq(2)
112
+ end
113
+
114
+ it "must be signed" do
115
+ expect(subject.signed?).to be(true)
116
+ end
117
+
118
+ it "endian must be little" do
119
+ expect(subject.endian).to eq(:little)
120
+ end
121
+ end
122
+
123
+ describe "int16_be" do
124
+ subject { super()[:int16_be] }
125
+
126
+ it { expect(subject).to_not be(nil) }
127
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int16) }
128
+
129
+ it "size must equal 2" do
130
+ expect(subject.size).to eq(2)
131
+ end
132
+
133
+ it "must be signed" do
134
+ expect(subject.signed?).to be(true)
135
+ end
136
+
137
+ it "endian must be big" do
138
+ expect(subject.endian).to eq(:big)
139
+ end
140
+ end
141
+
142
+ describe "int16_ne" do
143
+ subject { super()[:int16_ne] }
144
+
145
+ it { expect(subject).to_not be(nil) }
146
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int16) }
147
+
148
+ it "size must equal 2" do
149
+ expect(subject.size).to eq(2)
150
+ end
151
+
152
+ it "must be signed" do
153
+ expect(subject.signed?).to be(true)
154
+ end
155
+
156
+ it "endian must be big" do
157
+ expect(subject.endian).to eq(:big)
158
+ end
159
+ end
160
+
161
+ describe "uint16" do
162
+ subject { super()[:uint16] }
163
+
164
+ it { expect(subject).to_not be(nil) }
165
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt16) }
166
+
167
+ it "size must equal 2" do
168
+ expect(subject.size).to eq(2)
169
+ end
170
+
171
+ it "must not be signed" do
172
+ expect(subject.signed?).to be(false)
173
+ end
174
+ end
175
+
176
+ describe "uint16_le" do
177
+ subject { super()[:uint16_le] }
178
+
179
+ it { expect(subject).to_not be(nil) }
180
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt16) }
181
+
182
+ it "size must equal 2" do
183
+ expect(subject.size).to eq(2)
184
+ end
185
+
186
+ it "must be signed" do
187
+ expect(subject.signed?).to be(false)
188
+ end
189
+
190
+ it "endian must be little" do
191
+ expect(subject.endian).to eq(:little)
192
+ end
193
+ end
194
+
195
+ describe "uint16_be" do
196
+ subject { super()[:uint16_be] }
197
+
198
+ it { expect(subject).to_not be(nil) }
199
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt16) }
200
+
201
+ it "size must equal 2" do
202
+ expect(subject.size).to eq(2)
203
+ end
204
+
205
+ it "must be signed" do
206
+ expect(subject.signed?).to be(false)
207
+ end
208
+
209
+ it "endian must be big" do
210
+ expect(subject.endian).to eq(:big)
211
+ end
212
+ end
213
+
214
+ describe "uint16_ne" do
215
+ subject { super()[:uint16_ne] }
216
+
217
+ it { expect(subject).to_not be(nil) }
218
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt16) }
219
+
220
+ it "size must equal 2" do
221
+ expect(subject.size).to eq(2)
222
+ end
223
+
224
+ it "must be signed" do
225
+ expect(subject.signed?).to be(false)
226
+ end
227
+
228
+ it "endian must be big" do
229
+ expect(subject.endian).to eq(:big)
230
+ end
231
+ end
232
+
233
+ describe "short" do
234
+ it "must be an alias to int16" do
235
+ expect(subject[:short]).to be(subject[:int16])
236
+ end
237
+ end
238
+
239
+ describe "short_le" do
240
+ it "must be an alias to int16_le" do
241
+ expect(subject[:short_le]).to be(subject[:int16_le])
242
+ end
243
+ end
244
+
245
+ describe "short_be" do
246
+ it "must be an alias to int16_be" do
247
+ expect(subject[:short_be]).to be(subject[:int16_be])
248
+ end
249
+ end
250
+
251
+ describe "short_ne" do
252
+ it "must be an alias to int16_ne" do
253
+ expect(subject[:short_ne]).to be(subject[:int16_ne])
254
+ end
255
+ end
256
+
257
+ describe "ushort" do
258
+ it "must be an alias to uint16" do
259
+ expect(subject[:ushort]).to be(subject[:uint16])
260
+ end
261
+ end
262
+
263
+ describe "ushort_le" do
264
+ it "must be an alias to uint16_le" do
265
+ expect(subject[:ushort_le]).to be(subject[:uint16_le])
266
+ end
267
+ end
268
+
269
+ describe "ushort_be" do
270
+ it "must be an alias to uint16_be" do
271
+ expect(subject[:ushort_be]).to be(subject[:uint16_be])
272
+ end
273
+ end
274
+
275
+ describe "ushort_ne" do
276
+ it "must be an alias to uint16_ne" do
277
+ expect(subject[:ushort_ne]).to be(subject[:uint16_ne])
278
+ end
279
+ end
280
+
281
+ describe "int32" do
282
+ subject { super()[:int32] }
283
+
284
+ it { expect(subject).to_not be(nil) }
285
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int32) }
286
+
287
+ it "size must equal 4" do
288
+ expect(subject.size).to eq(4)
289
+ end
290
+
291
+ it "must be signed" do
292
+ expect(subject.signed?).to be(true)
293
+ end
294
+ end
295
+
296
+ describe "int32_le" do
297
+ subject { super()[:int32_le] }
298
+
299
+ it { expect(subject).to_not be(nil) }
300
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int32) }
301
+
302
+ it "size must equal 4" do
303
+ expect(subject.size).to eq(4)
304
+ end
305
+
306
+ it "must be signed" do
307
+ expect(subject.signed?).to be(true)
308
+ end
309
+
310
+ it "endian must be little" do
311
+ expect(subject.endian).to eq(:little)
312
+ end
313
+ end
314
+
315
+ describe "int32_be" do
316
+ subject { super()[:int32_be] }
317
+
318
+ it { expect(subject).to_not be(nil) }
319
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int32) }
320
+
321
+ it "size must equal 4" do
322
+ expect(subject.size).to eq(4)
323
+ end
324
+
325
+ it "must be signed" do
326
+ expect(subject.signed?).to be(true)
327
+ end
328
+
329
+ it "endian must be big" do
330
+ expect(subject.endian).to eq(:big)
331
+ end
332
+ end
333
+
334
+ describe "int32_ne" do
335
+ subject { super()[:int32_ne] }
336
+
337
+ it { expect(subject).to_not be(nil) }
338
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int32) }
339
+
340
+ it "size must equal 4" do
341
+ expect(subject.size).to eq(4)
342
+ end
343
+
344
+ it "must be signed" do
345
+ expect(subject.signed?).to be(true)
346
+ end
347
+
348
+ it "endian must be big" do
349
+ expect(subject.endian).to eq(:big)
350
+ end
351
+ end
352
+
353
+ describe "uint32" do
354
+ subject { super()[:uint32] }
355
+
356
+ it { expect(subject).to_not be(nil) }
357
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt32) }
358
+
359
+ it "size must equal 4" do
360
+ expect(subject.size).to eq(4)
361
+ end
362
+
363
+ it "must not be signed" do
364
+ expect(subject.signed?).to be(false)
365
+ end
366
+ end
367
+
368
+ describe "uint32_le" do
369
+ subject { super()[:uint32_le] }
370
+
371
+ it { expect(subject).to_not be(nil) }
372
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt32) }
373
+
374
+ it "size must equal 4" do
375
+ expect(subject.size).to eq(4)
376
+ end
377
+
378
+ it "must be signed" do
379
+ expect(subject.signed?).to be(false)
380
+ end
381
+
382
+ it "endian must be little" do
383
+ expect(subject.endian).to eq(:little)
384
+ end
385
+ end
386
+
387
+ describe "uint32_be" do
388
+ subject { super()[:uint32_be] }
389
+
390
+ it { expect(subject).to_not be(nil) }
391
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt32) }
392
+
393
+ it "size must equal 4" do
394
+ expect(subject.size).to eq(4)
395
+ end
396
+
397
+ it "must be signed" do
398
+ expect(subject.signed?).to be(false)
399
+ end
400
+
401
+ it "endian must be big" do
402
+ expect(subject.endian).to eq(:big)
403
+ end
404
+ end
405
+
406
+ describe "uint32_ne" do
407
+ subject { super()[:uint32_ne] }
408
+
409
+ it { expect(subject).to_not be(nil) }
410
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt32) }
411
+
412
+ it "size must equal 4" do
413
+ expect(subject.size).to eq(4)
414
+ end
415
+
416
+ it "must be signed" do
417
+ expect(subject.signed?).to be(false)
418
+ end
419
+
420
+ it "endian must be big" do
421
+ expect(subject.endian).to eq(:big)
422
+ end
423
+ end
424
+
425
+ describe "int" do
426
+ it "must be an alias to int32" do
427
+ expect(subject[:int]).to be(subject[:int32])
428
+ end
429
+ end
430
+
431
+ describe "int_le" do
432
+ it "must be an alias to int32_le" do
433
+ expect(subject[:int_le]).to be(subject[:int32_le])
434
+ end
435
+ end
436
+
437
+ describe "int_be" do
438
+ it "must be an alias to int32_be" do
439
+ expect(subject[:int_be]).to be(subject[:int32_be])
440
+ end
441
+ end
442
+
443
+ describe "int_ne" do
444
+ it "must be an alias to int32_ne" do
445
+ expect(subject[:int_ne]).to be(subject[:int32_ne])
446
+ end
447
+ end
448
+
449
+ describe "long" do
450
+ it "must be an alias to int32" do
451
+ expect(subject[:long]).to be(subject[:int32])
452
+ end
453
+ end
454
+
455
+ describe "long_le" do
456
+ it "must be an alias to int32_le" do
457
+ expect(subject[:long_le]).to be(subject[:int32_le])
458
+ end
459
+ end
460
+
461
+ describe "long_be" do
462
+ it "must be an alias to int32_be" do
463
+ expect(subject[:long_be]).to be(subject[:int32_be])
464
+ end
465
+ end
466
+
467
+ describe "long_ne" do
468
+ it "must be an alias to int32_ne" do
469
+ expect(subject[:long_ne]).to be(subject[:int32_ne])
470
+ end
471
+ end
472
+
473
+ describe "uint" do
474
+ it "must be an alias to uint32" do
475
+ expect(subject[:uint]).to be(subject[:uint32])
476
+ end
477
+ end
478
+
479
+ describe "uint_le" do
480
+ it "must be an alias to uint32_le" do
481
+ expect(subject[:uint_le]).to be(subject[:uint32_le])
482
+ end
483
+ end
484
+
485
+ describe "uint_be" do
486
+ it "must be an alias to uint32_be" do
487
+ expect(subject[:uint_be]).to be(subject[:uint32_be])
488
+ end
489
+ end
490
+
491
+ describe "uint_ne" do
492
+ it "must be an alias to uint32_ne" do
493
+ expect(subject[:uint_ne]).to be(subject[:uint32_ne])
494
+ end
495
+ end
496
+
497
+ describe "ulong" do
498
+ it "must be an alias to uint32" do
499
+ expect(subject[:ulong]).to be(subject[:uint32])
500
+ end
501
+ end
502
+
503
+ describe "ulong_le" do
504
+ it "must be an alias to uint32_le" do
505
+ expect(subject[:ulong_le]).to be(subject[:uint32_le])
506
+ end
507
+ end
508
+
509
+ describe "ulong_be" do
510
+ it "must be an alias to uint32_be" do
511
+ expect(subject[:ulong_be]).to be(subject[:uint32_be])
512
+ end
513
+ end
514
+
515
+ describe "ulong_ne" do
516
+ it "must be an alias to uint32_ne" do
517
+ expect(subject[:ulong_ne]).to be(subject[:uint32_ne])
518
+ end
519
+ end
520
+
521
+ describe "int64" do
522
+ subject { super()[:int64] }
523
+
524
+ it { expect(subject).to_not be(nil) }
525
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int64) }
526
+
527
+ it "size must equal 8" do
528
+ expect(subject.size).to eq(8)
529
+ end
530
+
531
+ it "must be signed" do
532
+ expect(subject.signed?).to be(true)
533
+ end
534
+ end
535
+
536
+ describe "int64_le" do
537
+ subject { super()[:int64_le] }
538
+
539
+ it { expect(subject).to_not be(nil) }
540
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int64) }
541
+
542
+ it "size must equal 8" do
543
+ expect(subject.size).to eq(8)
544
+ end
545
+
546
+ it "must be signed" do
547
+ expect(subject.signed?).to be(true)
548
+ end
549
+
550
+ it "endian must be little" do
551
+ expect(subject.endian).to eq(:little)
552
+ end
553
+ end
554
+
555
+ describe "int64_be" do
556
+ subject { super()[:int64_be] }
557
+
558
+ it { expect(subject).to_not be(nil) }
559
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int64) }
560
+
561
+ it "size must equal 8" do
562
+ expect(subject.size).to eq(8)
563
+ end
564
+
565
+ it "must be signed" do
566
+ expect(subject.signed?).to be(true)
567
+ end
568
+
569
+ it "endian must be big" do
570
+ expect(subject.endian).to eq(:big)
571
+ end
572
+ end
573
+
574
+ describe "int64_ne" do
575
+ subject { super()[:int64_ne] }
576
+
577
+ it { expect(subject).to_not be(nil) }
578
+ it { expect(subject).to be_kind_of(Hexdump::Type::Int64) }
579
+
580
+ it "size must equal 8" do
581
+ expect(subject.size).to eq(8)
582
+ end
583
+
584
+ it "must be signed" do
585
+ expect(subject.signed?).to be(true)
586
+ end
587
+
588
+ it "endian must be big" do
589
+ expect(subject.endian).to eq(:big)
590
+ end
591
+ end
592
+
593
+ describe "uint64" do
594
+ subject { super()[:uint64] }
595
+
596
+ it { expect(subject).to_not be(nil) }
597
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt64) }
598
+
599
+ it "size must equal 8" do
600
+ expect(subject.size).to eq(8)
601
+ end
602
+
603
+ it "must not be signed" do
604
+ expect(subject.signed?).to be(false)
605
+ end
606
+ end
607
+
608
+ describe "uint64_le" do
609
+ subject { super()[:uint64_le] }
610
+
611
+ it { expect(subject).to_not be(nil) }
612
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt64) }
613
+
614
+ it "size must equal 8" do
615
+ expect(subject.size).to eq(8)
616
+ end
617
+
618
+ it "must be signed" do
619
+ expect(subject.signed?).to be(false)
620
+ end
621
+
622
+ it "endian must be little" do
623
+ expect(subject.endian).to eq(:little)
624
+ end
625
+ end
626
+
627
+ describe "uint64_be" do
628
+ subject { super()[:uint64_be] }
629
+
630
+ it { expect(subject).to_not be(nil) }
631
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt64) }
632
+
633
+ it "size must equal 8" do
634
+ expect(subject.size).to eq(8)
635
+ end
636
+
637
+ it "must be signed" do
638
+ expect(subject.signed?).to be(false)
639
+ end
640
+
641
+ it "endian must be big" do
642
+ expect(subject.endian).to eq(:big)
643
+ end
644
+ end
645
+
646
+ describe "uint64_ne" do
647
+ subject { super()[:uint64_ne] }
648
+
649
+ it { expect(subject).to_not be(nil) }
650
+ it { expect(subject).to be_kind_of(Hexdump::Type::UInt64) }
651
+
652
+ it "size must equal 8" do
653
+ expect(subject.size).to eq(8)
654
+ end
655
+
656
+ it "must be signed" do
657
+ expect(subject.signed?).to be(false)
658
+ end
659
+
660
+ it "endian must be big" do
661
+ expect(subject.endian).to eq(:big)
662
+ end
663
+ end
664
+
665
+ describe "long_long" do
666
+ it "must be an alias to int64" do
667
+ expect(subject[:long_long]).to be(subject[:int64])
668
+ end
669
+ end
670
+
671
+ describe "long_long_le" do
672
+ it "must be an alias to int64_le" do
673
+ expect(subject[:long_long_le]).to be(subject[:int64_le])
674
+ end
675
+ end
676
+
677
+ describe "long_long_be" do
678
+ it "must be an alias to int64_be" do
679
+ expect(subject[:long_long_be]).to be(subject[:int64_be])
680
+ end
681
+ end
682
+
683
+ describe "long_long_ne" do
684
+ it "must be an alias to int64_ne" do
685
+ expect(subject[:long_long_ne]).to be(subject[:int64_ne])
686
+ end
687
+ end
688
+
689
+ describe "ulong_long" do
690
+ it "must be an alias to uint64" do
691
+ expect(subject[:ulong_long]).to be(subject[:uint64])
692
+ end
693
+ end
694
+
695
+ describe "ulong_long_le" do
696
+ it "must be an alias to uint64_le" do
697
+ expect(subject[:ulong_long_le]).to be(subject[:uint64_le])
698
+ end
699
+ end
700
+
701
+ describe "ulong_long_be" do
702
+ it "must be an alias to uint64_be" do
703
+ expect(subject[:ulong_long_be]).to be(subject[:uint64_be])
704
+ end
705
+ end
706
+
707
+ describe "ulong_long_ne" do
708
+ it "must be an alias to uint64_ne" do
709
+ expect(subject[:ulong_long_ne]).to be(subject[:uint64_ne])
710
+ end
711
+ end
712
+
713
+ describe "#float32" do
714
+ subject { super()[:float32] }
715
+
716
+ it { expect(subject).to_not be(nil) }
717
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float32) }
718
+
719
+ it "size must equal 4" do
720
+ expect(subject.size).to eq(4)
721
+ end
722
+
723
+ it "must be signed" do
724
+ expect(subject.signed?).to be(true)
725
+ end
726
+ end
727
+
728
+ describe "#float32_le" do
729
+ subject { super()[:float32_le] }
730
+
731
+ it { expect(subject).to_not be(nil) }
732
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float32) }
733
+
734
+ it "size must equal 4" do
735
+ expect(subject.size).to eq(4)
736
+ end
737
+
738
+ it "must be signed" do
739
+ expect(subject.signed?).to be(true)
740
+ end
741
+
742
+ it "endian must be little" do
743
+ expect(subject.endian).to eq(:little)
744
+ end
745
+ end
746
+
747
+ describe "#float32_be" do
748
+ subject { super()[:float32_be] }
749
+
750
+ it { expect(subject).to_not be(nil) }
751
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float32) }
752
+
753
+ it "size must equal 4" do
754
+ expect(subject.size).to eq(4)
755
+ end
756
+
757
+ it "must be signed" do
758
+ expect(subject.signed?).to be(true)
759
+ end
760
+
761
+ it "endian must be big" do
762
+ expect(subject.endian).to eq(:big)
763
+ end
764
+ end
765
+
766
+ describe "#float32_ne" do
767
+ subject { super()[:float32_ne] }
768
+
769
+ it { expect(subject).to_not be(nil) }
770
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float32) }
771
+
772
+ it "size must equal 4" do
773
+ expect(subject.size).to eq(4)
774
+ end
775
+
776
+ it "must be signed" do
777
+ expect(subject.signed?).to be(true)
778
+ end
779
+
780
+ it "endian must be big" do
781
+ expect(subject.endian).to eq(:big)
782
+ end
783
+ end
784
+
785
+ describe "#float64" do
786
+ subject { super()[:float64] }
787
+
788
+ it { expect(subject).to_not be(nil) }
789
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float64) }
790
+
791
+ it "size must equal 8" do
792
+ expect(subject.size).to eq(8)
793
+ end
794
+
795
+ it "must be signed" do
796
+ expect(subject.signed?).to be(true)
797
+ end
798
+ end
799
+
800
+ describe "#float64_le" do
801
+ subject { super()[:float64_le] }
802
+
803
+ it { expect(subject).to_not be(nil) }
804
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float64) }
805
+
806
+ it "size must equal 8" do
807
+ expect(subject.size).to eq(8)
808
+ end
809
+
810
+ it "must be signed" do
811
+ expect(subject.signed?).to be(true)
812
+ end
813
+
814
+ it "endian must be little" do
815
+ expect(subject.endian).to eq(:little)
816
+ end
817
+ end
818
+
819
+ describe "#float64_be" do
820
+ subject { super()[:float64_be] }
821
+
822
+ it { expect(subject).to_not be(nil) }
823
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float64) }
824
+
825
+ it "size must equal 8" do
826
+ expect(subject.size).to eq(8)
827
+ end
828
+
829
+ it "must be signed" do
830
+ expect(subject.signed?).to be(true)
831
+ end
832
+
833
+ it "endian must be big" do
834
+ expect(subject.endian).to eq(:big)
835
+ end
836
+ end
837
+
838
+ describe "#float64_ne" do
839
+ subject { super()[:float64_ne] }
840
+
841
+ it { expect(subject).to_not be(nil) }
842
+ it { expect(subject).to be_kind_of(Hexdump::Type::Float64) }
843
+
844
+ it "size must equal 8" do
845
+ expect(subject.size).to eq(8)
846
+ end
847
+
848
+ it "must be signed" do
849
+ expect(subject.signed?).to be(true)
850
+ end
851
+
852
+ it "endian must be big" do
853
+ expect(subject.endian).to eq(:big)
854
+ end
855
+ end
856
+
857
+ describe "float" do
858
+ it "must be an alias to float32" do
859
+ expect(subject[:float]).to be(subject[:float32])
860
+ end
861
+ end
862
+
863
+ describe "float_le" do
864
+ it "must be an alias to float32_le" do
865
+ expect(subject[:float_le]).to be(subject[:float32_le])
866
+ end
867
+ end
868
+
869
+ describe "float_be" do
870
+ it "must be an alias to float32_be" do
871
+ expect(subject[:float_be]).to be(subject[:float32_be])
872
+ end
873
+ end
874
+
875
+ describe "float_ne" do
876
+ it "must be an alias to float32_ne" do
877
+ expect(subject[:float_ne]).to be(subject[:float32_ne])
878
+ end
879
+ end
880
+
881
+ describe "double" do
882
+ it "must be an alias to float64" do
883
+ expect(subject[:double]).to be(subject[:float64])
884
+ end
885
+ end
886
+
887
+ describe "double_le" do
888
+ it "must be an alias to float64_le" do
889
+ expect(subject[:double_le]).to be(subject[:float64_le])
890
+ end
891
+ end
892
+
893
+ describe "double_be" do
894
+ it "must be an alias to float64_be" do
895
+ expect(subject[:double_be]).to be(subject[:float64_be])
896
+ end
897
+ end
898
+
899
+ describe "double_ne" do
900
+ it "must be an alias to float64_ne" do
901
+ expect(subject[:double_ne]).to be(subject[:float64_ne])
902
+ end
903
+ end
904
+ end