import 'dart:typed_data'; import 'package:flutter_test/flutter_test.dart'; import 'package:ch34/ch34.dart'; import 'package:ch34/src/ch34_method_channel.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; class MockCh34Platform with MockPlatformInterfaceMixin implements Ch34Platform { @override Future getPlatformVersion() => Future.value('42'); @override Future> enumDevice() => Future.value([]); @override Future getChipType(String deviceName) => Future.value('CH340'); @override Future openDevice(String deviceName) => Future.value(true); @override Future requestPermission(String deviceName) => Future.value(true); @override void setUsbStateListener(void Function(String, bool) onStateChanged) {} @override void removeUsbStateListener() {} @override Future getSerialCount(String deviceName) => Future.value(1); @override Future getSerialBaud(String deviceName, int serialNumber) => Future.value(115200); @override Future getChipMasterFrequency(String deviceName) => Future.value(const ChipMasterFrequency( frequency: 12000000, switchEnable: false, coStatus: 0, )); @override Future enableSerial(String deviceName, int serialNumber, bool enable) => Future.value(true); @override Future setSerialParameter( String deviceName, int serialNumber, SerialParameter parameter, ) => Future.value(true); @override Future writeData( String deviceName, int serialNumber, Uint8List data, { int timeout = 0, }) => Future.value(data.length); @override Future asyncWriteData( String deviceName, int serialNumber, Uint8List data, ) => Future.value(); @override Future readData(String deviceName, int serialNumber) => Future.value(Uint8List(0)); @override Future readDataWithTimeout( String deviceName, int serialNumber, int vTime, int vMin, ) => Future.value(Uint8List(0)); @override Future registerDataCallback( String deviceName, int serialNumber, void Function(Uint8List) onData, ) => Future.value(); @override void removeDataCallback(String deviceName) {} @override Future isConnected(String deviceName) => Future.value(true); @override Future> getConnectedDevices() => Future.value([]); @override Future disconnect(String deviceName) => Future.value(); @override Future close() => Future.value(); @override Future isSupportGpio(String deviceName) => Future.value(false); @override Future queryGpioCount(String deviceName) => Future.value(0); @override Future queryGpioStatus(String deviceName, int gpioIndex) => throw const Ch34Exception('Not supported'); @override Future> queryAllGpioStatus(String deviceName) => Future.value([]); @override Future enableGpio( String deviceName, int gpioIndex, bool enable, GpioDirection direction, ) => Future.value(false); @override Future setGpioVal( String deviceName, int gpioIndex, GpioValue value, ) => Future.value(false); @override Future getGpioVal(String deviceName, int gpioIndex) => Future.value(GpioValue.low); @override Future setDtr(String deviceName, int serialNumber, bool valid) => Future.value(true); @override Future setRts(String deviceName, int serialNumber, bool valid) => Future.value(true); @override Future setBreakSignal( String deviceName, int serialNumber, bool valid) => Future.value(true); @override Future registerModemStatusCallback( String deviceName, void Function(ModemStatus) onModemStatus, ) => Future.value(); @override void removeModemStatusCallback(String deviceName) {} @override Future querySerialErrorCount( String deviceName, int serialNumber, SerialErrorType errorType, ) => Future.value(0); @override Future setReadTimeout(int timeout) => Future.value(); @override Future addNewHardware(int vid, int pid, String chipType) => Future.value(); @override Future setDebug(bool enabled) => Future.value(); @override Future isDebugMode() => Future.value(false); } void main() { MethodChannelCh34.registerDefault(); final Ch34Platform initialPlatform = Ch34Platform.instance; test('$MethodChannelCh34 is the default instance', () { expect(initialPlatform, isInstanceOf()); }); test('getPlatformVersion', () async { MockCh34Platform fakePlatform = MockCh34Platform(); Ch34Platform.instance = fakePlatform; expect(await Ch34Manager.getPlatformVersion(), '42'); }); test('enumDevice returns empty list', () async { MockCh34Platform fakePlatform = MockCh34Platform(); Ch34Platform.instance = fakePlatform; final devices = await Ch34Manager.enumDevice(); expect(devices, isEmpty); }); }