-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathencoder_test.go
More file actions
491 lines (478 loc) · 19.7 KB
/
encoder_test.go
File metadata and controls
491 lines (478 loc) · 19.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
package presentation_test
import (
"encoding/binary"
"io"
"reflect"
"testing"
"github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/data"
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/presentation"
"github.com/rs/zerolog"
)
func TestEncoder(t *testing.T) {
type testcase struct {
name string
input []abstraction.Packet
output []byte
}
endianness := binary.LittleEndian
testcases := []testcase{
{
name: "data 0",
input: []abstraction.Packet{
data.NewPacketWithValues(9, map[data.ValueName]data.Value{
"uint8": data.NewNumericValue[uint8](8),
"uint16": data.NewNumericValue[uint16](8),
"uint32": data.NewNumericValue[uint32](8),
"uint64": data.NewNumericValue[uint64](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x09, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint16(8), endianness),
toBinary(uint32(8), endianness),
toBinary(uint64(8), endianness),
)),
},
{
name: "data 1",
input: []abstraction.Packet{
data.NewPacketWithValues(10, map[data.ValueName]data.Value{
"int8": data.NewNumericValue[int8](8),
"int16": data.NewNumericValue[int16](8),
"int32": data.NewNumericValue[int32](8),
"int64": data.NewNumericValue[int64](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0a, 0x00},
toBinary(int8(8), endianness),
toBinary(int16(8), endianness),
toBinary(int32(8), endianness),
toBinary(int64(8), endianness),
)),
},
{
name: "data 2",
input: []abstraction.Packet{
data.NewPacketWithValues(11, map[data.ValueName]data.Value{
"float32": data.NewNumericValue[float32](8),
"float64": data.NewNumericValue[float64](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0b, 0x00},
toBinary(float32(8), endianness),
toBinary(float64(8), endianness),
)),
},
{
name: "data 3",
input: []abstraction.Packet{
data.NewPacketWithValues(12, map[data.ValueName]data.Value{
"bool": data.NewBooleanValue(true),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0c, 0x00},
[]byte{0x01},
)),
},
{
name: "data 4",
input: []abstraction.Packet{
data.NewPacketWithValues(13, map[data.ValueName]data.Value{
"enum": data.NewEnumValue("c"),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0d, 0x00},
toBinary(uint8(2), endianness),
)),
},
{
name: "data 5",
input: []abstraction.Packet{
data.NewPacketWithValues(14, map[data.ValueName]data.Value{
"uint8_1": data.NewNumericValue[uint8](8),
"uint8_2": data.NewNumericValue[uint8](8),
"float64": data.NewNumericValue[float64](8),
"bool": data.NewBooleanValue(true),
"enum": data.NewEnumValue("a"),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0e, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(float64(8), endianness),
[]byte{0x01},
toBinary(uint8(0), endianness),
)),
},
{
name: "data 6",
input: []abstraction.Packet{
data.NewPacketWithValues(15, map[data.ValueName]data.Value{
"bool_1": data.NewBooleanValue(true),
"bool_2": data.NewBooleanValue(false),
"bool_3": data.NewBooleanValue(false),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x0f, 0x00},
[]byte{0x01},
[]byte{0x00},
[]byte{0x00},
)),
},
{
name: "data 7",
input: []abstraction.Packet{
data.NewPacketWithValues(16, map[data.ValueName]data.Value{
"enum_1": data.NewEnumValue("b"),
"enum_2": data.NewEnumValue("a"),
"enum_3": data.NewEnumValue("d"),
"enum_4": data.NewEnumValue("c"),
"enum_5": data.NewEnumValue("h"),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x10, 0x00},
toBinary(uint8(1), endianness),
toBinary(uint8(0), endianness),
toBinary(uint8(3), endianness),
toBinary(uint8(2), endianness),
toBinary(uint8(7), endianness),
)),
},
{
name: "data 8",
input: []abstraction.Packet{
data.NewPacketWithValues(17, map[data.ValueName]data.Value{
"uint8_1": data.NewNumericValue[uint8](8),
"uint8_2": data.NewNumericValue[uint8](8),
"uint8_3": data.NewNumericValue[uint8](8),
"uint8_4": data.NewNumericValue[uint8](8),
"uint8_5": data.NewNumericValue[uint8](8),
"uint8_6": data.NewNumericValue[uint8](8),
"uint8_7": data.NewNumericValue[uint8](8),
"uint8_8": data.NewNumericValue[uint8](8),
"uint8_9": data.NewNumericValue[uint8](8),
"uint8_10": data.NewNumericValue[uint8](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x11, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
)),
},
{
name: "data 9",
input: []abstraction.Packet{
data.NewPacketWithValues(18, map[data.ValueName]data.Value{
"uint64_1": data.NewNumericValue[uint64](8),
"int64_1": data.NewNumericValue[int64](8),
"float64_1": data.NewNumericValue[float64](8),
"uint64_2": data.NewNumericValue[uint64](8),
"int64_2": data.NewNumericValue[int64](8),
"float64_2": data.NewNumericValue[float64](8),
"uint64_3": data.NewNumericValue[uint64](8),
"int64_3": data.NewNumericValue[int64](8),
"float64_3": data.NewNumericValue[float64](8),
"uint64_4": data.NewNumericValue[uint64](8),
"int64_4": data.NewNumericValue[int64](8),
"float64_4": data.NewNumericValue[float64](8),
"uint64_5": data.NewNumericValue[uint64](8),
"int64_5": data.NewNumericValue[int64](8),
"float64_5": data.NewNumericValue[float64](8),
"uint64_6": data.NewNumericValue[uint64](8),
"int64_6": data.NewNumericValue[int64](8),
"float64_6": data.NewNumericValue[float64](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x12, 0x00},
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
)),
},
{
name: "multiple",
input: []abstraction.Packet{
data.NewPacketWithValues(9, map[data.ValueName]data.Value{
"uint8": data.NewNumericValue[uint8](8),
"uint16": data.NewNumericValue[uint16](8),
"uint32": data.NewNumericValue[uint32](8),
"uint64": data.NewNumericValue[uint64](8),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(10, map[data.ValueName]data.Value{
"int8": data.NewNumericValue[int8](8),
"int16": data.NewNumericValue[int16](8),
"int32": data.NewNumericValue[int32](8),
"int64": data.NewNumericValue[int64](8),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(11, map[data.ValueName]data.Value{
"float32": data.NewNumericValue[float32](8),
"float64": data.NewNumericValue[float64](8),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(12, map[data.ValueName]data.Value{
"bool": data.NewBooleanValue(true),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(13, map[data.ValueName]data.Value{
"enum": data.NewEnumValue("c"),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(14, map[data.ValueName]data.Value{
"uint8_1": data.NewNumericValue[uint8](8),
"uint8_2": data.NewNumericValue[uint8](8),
"float64": data.NewNumericValue[float64](8),
"bool": data.NewBooleanValue(true),
"enum": data.NewEnumValue("a"),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(15, map[data.ValueName]data.Value{
"bool_1": data.NewBooleanValue(true),
"bool_2": data.NewBooleanValue(false),
"bool_3": data.NewBooleanValue(false),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(16, map[data.ValueName]data.Value{
"enum_1": data.NewEnumValue("b"),
"enum_2": data.NewEnumValue("a"),
"enum_3": data.NewEnumValue("d"),
"enum_4": data.NewEnumValue("c"),
"enum_5": data.NewEnumValue("h"),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(17, map[data.ValueName]data.Value{
"uint8_1": data.NewNumericValue[uint8](8),
"uint8_2": data.NewNumericValue[uint8](8),
"uint8_3": data.NewNumericValue[uint8](8),
"uint8_4": data.NewNumericValue[uint8](8),
"uint8_5": data.NewNumericValue[uint8](8),
"uint8_6": data.NewNumericValue[uint8](8),
"uint8_7": data.NewNumericValue[uint8](8),
"uint8_8": data.NewNumericValue[uint8](8),
"uint8_9": data.NewNumericValue[uint8](8),
"uint8_10": data.NewNumericValue[uint8](8),
}, make(map[data.ValueName]bool)),
data.NewPacketWithValues(18, map[data.ValueName]data.Value{
"uint64_1": data.NewNumericValue[uint64](8),
"int64_1": data.NewNumericValue[int64](8),
"float64_1": data.NewNumericValue[float64](8),
"uint64_2": data.NewNumericValue[uint64](8),
"int64_2": data.NewNumericValue[int64](8),
"float64_2": data.NewNumericValue[float64](8),
"uint64_3": data.NewNumericValue[uint64](8),
"int64_3": data.NewNumericValue[int64](8),
"float64_3": data.NewNumericValue[float64](8),
"uint64_4": data.NewNumericValue[uint64](8),
"int64_4": data.NewNumericValue[int64](8),
"float64_4": data.NewNumericValue[float64](8),
"uint64_5": data.NewNumericValue[uint64](8),
"int64_5": data.NewNumericValue[int64](8),
"float64_5": data.NewNumericValue[float64](8),
"uint64_6": data.NewNumericValue[uint64](8),
"int64_6": data.NewNumericValue[int64](8),
"float64_6": data.NewNumericValue[float64](8),
}, make(map[data.ValueName]bool)),
},
output: (join(
[]byte{0x09, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint16(8), endianness),
toBinary(uint32(8), endianness),
toBinary(uint64(8), endianness),
[]byte{0x0a, 0x00},
toBinary(int8(8), endianness),
toBinary(int16(8), endianness),
toBinary(int32(8), endianness),
toBinary(int64(8), endianness),
[]byte{0x0b, 0x00},
toBinary(float32(8), endianness),
toBinary(float64(8), endianness),
[]byte{0x0c, 0x00},
[]byte{0x01},
[]byte{0x0d, 0x00},
toBinary(uint8(2), endianness),
[]byte{0x0e, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(float64(8), endianness),
[]byte{0x01},
toBinary(uint8(0), endianness),
[]byte{0x0f, 0x00},
[]byte{0x01},
[]byte{0x00},
[]byte{0x00},
[]byte{0x10, 0x00},
toBinary(uint8(1), endianness),
toBinary(uint8(0), endianness),
toBinary(uint8(3), endianness),
toBinary(uint8(2), endianness),
toBinary(uint8(7), endianness),
[]byte{0x11, 0x00},
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
toBinary(uint8(8), endianness),
[]byte{0x12, 0x00},
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
toBinary(uint64(8), endianness),
toBinary(int64(8), endianness),
toBinary(float64(8), endianness),
)),
},
}
for _, test := range testcases {
t.Run(test.name, func(t *testing.T) {
encoder := getEncoder(endianness)
output := make([]byte, 0, len(test.output))
for i := 0; i < len(test.input); i++ {
buf, err := encoder.Encode(test.input[i])
if err != nil {
t.Fatalf("\nError encoding (%d) packet: %s\n", i+1, err)
}
output = append(output, buf.Bytes()...)
encoder.ReleaseBuffer(buf)
}
if !reflect.DeepEqual(output, test.output) {
t.Fatalf("\nGot %#v\nExpected %#v\n", output, test.output)
}
})
}
}
// getEncoder generates a mock Encoder with the following packet IDs:
// 9:=18 - data
func getEncoder(endianness binary.ByteOrder) *presentation.Encoder {
nullLogger := zerolog.New(io.Discard)
encoder := presentation.NewEncoder(endianness, nullLogger)
dataDecoder := data.NewEncoder(endianness)
dataDecoder.SetDescriptor(9, data.Descriptor{
data.NewNumericDescriptor[uint8]("uint8", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint16]("uint16", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint32]("uint32", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
})
dataDecoder.SetDescriptor(10, data.Descriptor{
data.NewNumericDescriptor[int8]("int8", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int16]("int16", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int32]("int32", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
})
dataDecoder.SetDescriptor(11, data.Descriptor{
data.NewNumericDescriptor[float32]("float32", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
})
dataDecoder.SetDescriptor(12, data.Descriptor{
data.NewBooleanDescriptor("bool"),
})
dataDecoder.SetDescriptor(13, data.Descriptor{
data.NewEnumDescriptor("enum", data.EnumDescriptor{"a", "b", "c", "d"}),
})
dataDecoder.SetDescriptor(14, data.Descriptor{
data.NewNumericDescriptor[uint8]("uint8_1", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_2", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewBooleanDescriptor("bool"),
data.NewEnumDescriptor("enum", data.EnumDescriptor{"a", "b", "c"}),
})
dataDecoder.SetDescriptor(15, data.Descriptor{
data.NewBooleanDescriptor("bool_1"),
data.NewBooleanDescriptor("bool_2"),
data.NewBooleanDescriptor("bool_3"),
})
dataDecoder.SetDescriptor(16, data.Descriptor{
data.NewEnumDescriptor("enum_1", data.EnumDescriptor{"a", "b", "c"}),
data.NewEnumDescriptor("enum_2", data.EnumDescriptor{"a", "b"}),
data.NewEnumDescriptor("enum_3", data.EnumDescriptor{"a", "b", "c", "d", "e"}),
data.NewEnumDescriptor("enum_4", data.EnumDescriptor{"a", "b", "c", "d"}),
data.NewEnumDescriptor("enum_5", data.EnumDescriptor{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}),
})
dataDecoder.SetDescriptor(17, data.Descriptor{
data.NewNumericDescriptor[uint8]("uint8_1", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_2", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_3", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_4", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_5", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_6", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_7", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_8", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_9", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint8]("uint8_10", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
})
dataDecoder.SetDescriptor(18, data.Descriptor{
data.NewNumericDescriptor[uint64]("uint64_1", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_1", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_1", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64_2", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_2", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_2", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64_3", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_3", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_3", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64_4", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_4", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_4", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64_5", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_5", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_5", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[uint64]("uint64_6", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[int64]("int64_6", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
data.NewNumericDescriptor[float64]("float64_6", make(data.ConversionDescriptor, 0), make(data.ConversionDescriptor, 0)),
})
encoder.SetPacketEncoder(9, dataDecoder)
encoder.SetPacketEncoder(10, dataDecoder)
encoder.SetPacketEncoder(11, dataDecoder)
encoder.SetPacketEncoder(12, dataDecoder)
encoder.SetPacketEncoder(13, dataDecoder)
encoder.SetPacketEncoder(14, dataDecoder)
encoder.SetPacketEncoder(15, dataDecoder)
encoder.SetPacketEncoder(16, dataDecoder)
encoder.SetPacketEncoder(17, dataDecoder)
encoder.SetPacketEncoder(18, dataDecoder)
return encoder
}