fix: align bootloader image validation limits
This commit is contained in:
@ -120,6 +120,26 @@ void main() {
|
||||
result.failure?.reason, FirmwareSelectionFailureReason.imageTooLarge);
|
||||
});
|
||||
|
||||
test('accepts image exactly at application slot size', () async {
|
||||
final image = Uint8List(universalShifterDfuAppSlotSizeBytes);
|
||||
_writeLeU32(image, 0, 0x20001000);
|
||||
_writeLeU32(image, 4, 0x00030009);
|
||||
final service = FirmwareFileSelectionService(
|
||||
filePicker: _FakeFirmwareFilePicker(
|
||||
selection: FirmwarePickerSelection(
|
||||
fileName: 'firmware.bin',
|
||||
fileBytes: image,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final result = await service.selectAndPrepareBootloaderDfu();
|
||||
|
||||
expect(result.isSuccess, isTrue);
|
||||
expect(result.firmware?.metadata.totalLength,
|
||||
universalShifterDfuAppSlotSizeBytes);
|
||||
});
|
||||
|
||||
test('rejects images with invalid vector table', () async {
|
||||
final image = _validBootloaderImage();
|
||||
_writeLeU32(image, 0, 0x10001000);
|
||||
@ -158,6 +178,23 @@ void main() {
|
||||
expect(second.firmware?.metadata.sessionId, 10);
|
||||
});
|
||||
|
||||
test('normalizes generated zero session id to one', () async {
|
||||
final service = FirmwareFileSelectionService(
|
||||
filePicker: _FakeFirmwareFilePicker(
|
||||
selection: FirmwarePickerSelection(
|
||||
fileName: 'firmware.bin',
|
||||
fileBytes: _validBootloaderImage(),
|
||||
),
|
||||
),
|
||||
sessionIdGenerator: () => 0,
|
||||
);
|
||||
|
||||
final result = await service.selectAndPrepareBootloaderDfu();
|
||||
|
||||
expect(result.isSuccess, isTrue);
|
||||
expect(result.firmware?.metadata.sessionId, 1);
|
||||
});
|
||||
|
||||
test('maps picker read failure to explicit validation error', () async {
|
||||
final service = FirmwareFileSelectionService(
|
||||
filePicker: _FakeFirmwareFilePicker(
|
||||
|
||||
Reference in New Issue
Block a user