71 lines
1.9 KiB
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);
|
|
});
|
|
});
|
|
}
|