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