Skip to content

Commit 47c40b3

Browse files
committed
Added tests for enums and decoding incorrectly sized data
1 parent 72e0eeb commit 47c40b3

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

test/services/struct_schemas/nt_struct_test.dart

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ void main() {
250250
);
251251

252252
ByteData rawData = ByteData(16);
253-
rawData.setInt64(0, -15000.toInt(), Endian.little);
253+
rawData.setInt64(0, -15000, Endian.little);
254254
rawData.setUint64(8, 15000, Endian.little);
255255

256256
final decodedStruct = NTStruct.parse(
@@ -343,6 +343,71 @@ void main() {
343343
}
344344
});
345345

346+
test('Decoding enum', () {
347+
final schema = NTStructSchema.parse(
348+
name: 'TestEnum',
349+
schema: 'enum {a=1, b=2, c=3} int8 testEnum;',
350+
);
351+
352+
ByteData rawData = ByteData(8);
353+
rawData.setInt8(0, 3);
354+
355+
final NTStruct decodedStruct = NTStruct.parse(
356+
schema: schema,
357+
data: Uint8List.view(rawData.buffer),
358+
);
359+
360+
final decodedValues = decodedStruct.values;
361+
362+
expect(decodedValues.length, 1);
363+
expect(decodedValues['testEnum'], isA<String>());
364+
expect(decodedValues['testEnum'], 'c');
365+
});
366+
367+
test('Decoding enum (unknown value)', () {
368+
final schema = NTStructSchema.parse(
369+
name: 'TestEnum',
370+
schema: 'enum {a=1, b=2, c=3} int8 testEnum;',
371+
);
372+
373+
ByteData rawData = ByteData(8);
374+
rawData.setInt8(0, 5);
375+
376+
final NTStruct decodedStruct = NTStruct.parse(
377+
schema: schema,
378+
data: Uint8List.view(rawData.buffer),
379+
);
380+
381+
final decodedValues = decodedStruct.values;
382+
383+
expect(decodedValues.length, 1);
384+
expect(decodedValues['testEnum'], isA<String>());
385+
expect(decodedValues['testEnum'], 'Unknown (5)');
386+
});
387+
388+
test('Decoding with incorrectly sized raw data', () {
389+
final schema = NTStructSchema.parse(
390+
name: 'TestSchema',
391+
schema: 'int64 one;uint64 two',
392+
);
393+
394+
ByteData rawData = ByteData(12);
395+
rawData.setInt64(0, -15000, Endian.little);
396+
rawData.setUint32(8, 15000, Endian.little);
397+
398+
final decodedStruct = NTStruct.parse(
399+
schema: schema,
400+
data: Uint8List.view(rawData.buffer),
401+
);
402+
403+
final decodedValues = decodedStruct.values;
404+
405+
expect(decodedValues.length, 1);
406+
expect(decodedValues['one'], isA<int>());
407+
expect(decodedValues['one'], -15000);
408+
expect(decodedValues['two'], isNull);
409+
});
410+
346411
test('Decoding all possible primitive types', () {
347412
final schema = NTStructSchema.parse(
348413
name: 'TestStruct',

0 commit comments

Comments
 (0)