mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-08-11 18:26:27 +10:00
Add ability to send images over lora
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:meshcore_open/services/image_codec_service.dart';
|
||||
|
||||
/// Covers the one piece of the decode path that can be executed without a model
|
||||
/// file, a device or ONNX Runtime: turning the backend's packed RGB output into
|
||||
/// PNG bytes a widget can render.
|
||||
///
|
||||
/// It needs the engine's image codecs, hence the binding.
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
group('ImageCodecService.rgbToPng', () {
|
||||
test('encodes a PNG with the right magic bytes and dimensions', () async {
|
||||
const side = 8;
|
||||
final rgb = Uint8List(side * side * 3);
|
||||
for (var i = 0; i < rgb.length; i++) {
|
||||
rgb[i] = i & 0xFF;
|
||||
}
|
||||
|
||||
final png = await ImageCodecService.rgbToPng(rgb, side);
|
||||
|
||||
expect(png.sublist(0, 8), [
|
||||
0x89,
|
||||
0x50,
|
||||
0x4E,
|
||||
0x47,
|
||||
0x0D,
|
||||
0x0A,
|
||||
0x1A,
|
||||
0x0A,
|
||||
]);
|
||||
// IHDR width/height, big-endian at offsets 16 and 20.
|
||||
final header = ByteData.sublistView(png);
|
||||
expect(header.getUint32(16), side);
|
||||
expect(header.getUint32(20), side);
|
||||
});
|
||||
|
||||
test('rejects a buffer that is not RGB at the stated size', () async {
|
||||
await expectLater(
|
||||
ImageCodecService.rgbToPng(Uint8List(10), 8),
|
||||
throwsA(isA<ArgumentError>()),
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user