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); }); }); }