@@ -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