Files
abawo-bt-app/test/controller/bluetooth_test.dart

71 lines
1.9 KiB
Dart

import 'package:abawo_bt_app/controller/bluetooth.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('RssiAverager', () {
test('averages samples within the configured window', () {
final averager = RssiAverager(window: const Duration(milliseconds: 500));
final startedAt = DateTime(2026);
expect(averager.addSample('trainer', -80, startedAt), -80);
expect(
averager.addSample(
'trainer',
-70,
startedAt.add(const Duration(milliseconds: 100)),
),
-75,
);
expect(
averager.addSample(
'trainer',
-60,
startedAt.add(const Duration(milliseconds: 400)),
),
-70,
);
});
test('drops samples older than the configured window', () {
final averager = RssiAverager(window: const Duration(milliseconds: 500));
final startedAt = DateTime(2026);
averager.addSample('trainer', -80, startedAt);
averager.addSample(
'trainer',
-60,
startedAt.add(const Duration(milliseconds: 250)),
);
expect(
averager.addSample(
'trainer',
-40,
startedAt.add(const Duration(milliseconds: 501)),
),
-50,
);
});
test('tracks devices independently', () {
final averager = RssiAverager(window: const Duration(milliseconds: 500));
final startedAt = DateTime(2026);
averager.addSample('trainer-a', -80, startedAt);
averager.addSample('trainer-a', -60, startedAt);
expect(averager.addSample('trainer-b', -40, startedAt), -40);
});
test('clear removes previous samples', () {
final averager = RssiAverager(window: const Duration(milliseconds: 500));
final startedAt = DateTime(2026);
averager.addSample('trainer', -80, startedAt);
averager.clear();
expect(averager.addSample('trainer', -40, startedAt), -40);
});
});
}