1import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_service.dart';
 2
 3/// Backend implementation for MockBluetoothService
 4final class MockedService {
 5  /// constructor
 6  MockedService({ required this.uuid, required this.characteristics });
 7
 8  String uuid;
 9  List<MockedCharacteristic> characteristics;
10}
11
12/// Backend implementation for MockBluetoothCharacteristic
13final class MockedCharacteristic {
14  /// constructor
15  MockedCharacteristic({
16    required this.uuid,
17    this.canRead = false,
18    this.canWrite = false,
19    this.canWriteWithoutResponse = false,
20    this.canNotify = false,
21    this.canIndicate = false,
22  });
23
24  String uuid;
25  bool canRead;
26  bool canWrite;
27  bool canWriteWithoutResponse;
28  bool canNotify;
29  bool canIndicate;
30}
31
32/// String wrapper for Bluetooth
33final class MockBluetoothString extends BluetoothUuid<String> {
34  /// Create a BluetoothString from a String
35  MockBluetoothString(String uuid): super(uuid: uuid, source: uuid);
36  /// Create a BluetoothString from a string
37  MockBluetoothString.fromString(String uuid): super(uuid: uuid, source: uuid);
38}
39
40/// Wrapper class with generic interface for a [MockedService]
41final class MockBluetoothService extends BluetoothService<MockedService, BluetoothCharacteristic> {
42   /// Create a FlutterBlueService from a [MockedService]
43  MockBluetoothService.fromSource(MockedService service): super(uuid: MockBluetoothString(service.uuid), source: service);
44
45  @override
46  List<BluetoothCharacteristic> get characteristics => source.characteristics.map(MockBluetoothCharacteristic.fromSource).toList();
47}
48
49/// Wrapper class with generic interface for a [MockedCharacteristic]
50final class MockBluetoothCharacteristic extends BluetoothCharacteristic<MockedCharacteristic> {
51  /// Create a BluetoothCharacteristic from the backend specific source
52  MockBluetoothCharacteristic.fromSource(MockedCharacteristic source): super(uuid: MockBluetoothString(source.uuid), source: source);
53
54  @override
55  bool get canRead => source.canRead;
56
57  @override
58  bool get canWrite => source.canWrite;
59
60  @override
61  bool get canWriteWithoutResponse => source.canWriteWithoutResponse;
62
63  @override
64  bool get canNotify => source.canNotify;
65
66  @override
67  bool get canIndicate => source.canIndicate;
68}