summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-30 13:41:24 +0200
committeruvok2025-07-30 13:41:24 +0200
commit5e1ec6faca3f89cfb96918c48cb2b1deccac65c5 (patch)
tree26d90962df0839ce93f19d3b0df87962ee2281d8
parenta5696a551577293f7afd4986119dd2d6636b1fdf (diff)
Add mock scanner controller
-rw-r--r--lib/control/mock_scanner_controller.dart49
-rw-r--r--lib/model/mock_device.dart18
2 files changed, 67 insertions, 0 deletions
diff --git a/lib/control/mock_scanner_controller.dart b/lib/control/mock_scanner_controller.dart
new file mode 100644
index 0000000..41ec622
--- /dev/null
+++ b/lib/control/mock_scanner_controller.dart
@@ -0,0 +1,49 @@
+import 'dart:async';
+
+import 'package:badge/control/scanner_controller.dart';
+import 'package:badge/control/scanner_controller_impl.dart';
+import 'package:badge/model/device.dart';
+import 'package:badge/model/mock_device.dart';
+
+class MockScannerController extends ScannerControllerImpl {
+ static final List<MockDevice> fakedDevices = [
+ MockDevice(0, "First"),
+ MockDevice(1, "Second"),
+ MockDevice(2, "Third"),
+ MockDevice(3, "Fourth"),
+ ];
+
+ @override
+ void dispose() {}
+
+ @override
+ Stream<List<Device>> get scanResultsStream => _deviceContoller.stream;
+ final StreamController<List<Device>> _deviceContoller =
+ StreamController<List<Device>>.broadcast();
+
+ bool _isScanning = false;
+
+ @override
+ Future<void> startScan({
+ Duration timeout = const Duration(seconds: 2),
+ }) async {
+ if (_isScanning) return;
+ _isScanning = true;
+ setStatus(ScanStatus.scanning);
+
+ for (int i = 0; i < fakedDevices.length && _isScanning; i++) {
+ await Future.delayed(Duration(milliseconds: 300));
+ _deviceContoller.add(
+ fakedDevices.getRange(0, i + 1).toList(growable: false),
+ );
+ }
+
+ _isScanning = false;
+ setStatus(ScanStatus.finished);
+ }
+
+ @override
+ Future<void> stopScan() async {
+ _isScanning = false;
+ }
+}
diff --git a/lib/model/mock_device.dart b/lib/model/mock_device.dart
new file mode 100644
index 0000000..23e2638
--- /dev/null
+++ b/lib/model/mock_device.dart
@@ -0,0 +1,18 @@
+import 'package:badge/model/device.dart';
+
+class MockDevice implements Device {
+ final int _id;
+ final String? _name;
+
+ MockDevice(this._id, this._name);
+
+ @override
+ String? get address =>
+ "AA:BB:CC:DD:EE:${_id.toRadixString(16).padLeft(2, '0')}";
+
+ @override
+ String? get name => _name;
+
+ @override
+ int? get rssi => -60;
+}