Files
pluriwave/test/modelos/dispositivo_audio_test.dart
FreeTLab 4632d53eb8 feat(eq): add per-device equalizer with 4-level preset resolution
Introduce multi-device EQ support allowing each audio output device
(built-in speaker, wired, USB, individual Bluetooth by MAC) to have
its own equalizer preset, combined with existing per-station presets
for a full station×device matrix.

- Add DispositivoAudio model and ServicioDispositivoAudio interface
- Add Android platform channel (AudioDeviceCallback) for device detection
- Add iOS AudioDevicesPlugin (AVAudioSession route tracking)
- Extend ServicioEcualizador with device and matrix persistence keys
- Implement 4-level resolution: matrix > station > device > global
- Add advanced EQ settings section with feature toggle (off by default)
- Extend export/import to v3 with backward compatibility
- 184 tests passing, zero analyzer issues
2026-06-27 11:33:53 +02:00

95 lines
2.6 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:pluriwave/modelos/dispositivo_audio.dart';
void main() {
group('TipoDispositivo', () {
test('has all required enum values', () {
expect(
TipoDispositivo.values,
containsAll([
TipoDispositivo.altavozInterno,
TipoDispositivo.auricularesCable,
TipoDispositivo.bluetoothA2dp,
TipoDispositivo.usbAudio,
TipoDispositivo.desconocido,
]),
);
});
});
group('DispositivoAudio', () {
const builtinSpeaker = DispositivoAudio(
id: 'builtin_speaker',
tipo: TipoDispositivo.altavozInterno,
nombre: 'Altavoz interno',
);
const btDevice = DispositivoAudio(
id: 'bt_a2dp:AA:BB:CC:DD:EE:FF',
tipo: TipoDispositivo.bluetoothA2dp,
nombre: 'Auriculares BT',
);
test('equality: same id and tipo are equal', () {
const a = DispositivoAudio(
id: 'builtin_speaker',
tipo: TipoDispositivo.altavozInterno,
nombre: 'Altavoz',
);
const b = DispositivoAudio(
id: 'builtin_speaker',
tipo: TipoDispositivo.altavozInterno,
nombre: 'Different name',
);
expect(a, equals(b));
});
test('equality: different id are not equal', () {
expect(builtinSpeaker, isNot(equals(btDevice)));
});
test('hashCode is consistent with equality', () {
const a = DispositivoAudio(
id: 'builtin_speaker',
tipo: TipoDispositivo.altavozInterno,
nombre: 'A',
);
const b = DispositivoAudio(
id: 'builtin_speaker',
tipo: TipoDispositivo.altavozInterno,
nombre: 'B',
);
expect(a.hashCode, equals(b.hashCode));
});
test('holds all required fields', () {
expect(builtinSpeaker.id, 'builtin_speaker');
expect(builtinSpeaker.tipo, TipoDispositivo.altavozInterno);
expect(builtinSpeaker.nombre, 'Altavoz interno');
});
test('BT device id format matches spec', () {
expect(btDevice.id, 'bt_a2dp:AA:BB:CC:DD:EE:FF');
expect(btDevice.tipo, TipoDispositivo.bluetoothA2dp);
});
test('wired headset type', () {
const wired = DispositivoAudio(
id: 'wired_headset',
tipo: TipoDispositivo.auricularesCable,
nombre: 'Auriculares cable',
);
expect(wired.tipo, TipoDispositivo.auricularesCable);
});
test('USB audio type', () {
const usb = DispositivoAudio(
id: 'usb_headset:some_address',
tipo: TipoDispositivo.usbAudio,
nombre: 'USB Headset',
);
expect(usb.tipo, TipoDispositivo.usbAudio);
});
});
}