import 'dart:typed_data'; import 'package:flutter_test/flutter_test.dart'; import 'package:hvbt_dash/core/protocol/neg8.dart'; void main() { group('NEG8 checksum', () { test('S300 request header [0x1B, 0x00] produces 0xE5', () { // NEG8 of [0x1B, 0x00] = (0 - 0x1B - 0x00) & 0xFF = 0xE5 final buf = Uint8List.fromList([0x1B, 0x00]); expect(calculateNeg8(buf), equals(0xE5)); }); test('KPro request header [0x1B, 0x01] produces 0xE4', () { final buf = Uint8List.fromList([0x1B, 0x01]); expect(calculateNeg8(buf), equals(0xE4)); }); test('validateFrame passes for correctly checksummed frame', () { // Build a 4-byte frame where last byte = NEG8 of first 3 final data = Uint8List.fromList([0x1B, 0x00, 0x00, 0xE5]); expect(validateFrame(data), isTrue); }); test('validateFrame fails for corrupted frame', () { final data = Uint8List.fromList([0x1B, 0x00, 0x00, 0xFF]); expect(validateFrame(data), isFalse); }); test('validateFrame returns false for empty frame', () { expect(validateFrame(Uint8List(0)), isFalse); }); test('single byte 0x00 validates as [0x00, 0x00]', () { // NEG8([0x00]) = 0x00, so frame [0x00, 0x00] should pass expect(validateFrame(Uint8List.fromList([0x00, 0x00])), isTrue); }); }); }