diff --git a/src/audio-manager.ts b/src/audio-manager.ts index 756f397..23b5e9b 100644 --- a/src/audio-manager.ts +++ b/src/audio-manager.ts @@ -182,7 +182,7 @@ export default class AudioManager { throw new AudioManagerStateError('Volume control requires volume.enabled to be true.'); } - if (volumeInPercent < 0 || volumeInPercent > 100) { + if (!Number.isFinite(volumeInPercent) || volumeInPercent < 0 || volumeInPercent > 100) { throw new AudioManagerConfigError('Volume must be between 0 and 100 percent.'); } diff --git a/tests/audio-manager.test.ts b/tests/audio-manager.test.ts index 36f12e1..9f5badc 100644 --- a/tests/audio-manager.test.ts +++ b/tests/audio-manager.test.ts @@ -273,6 +273,11 @@ describe('AudioManager', () => { expect(() => manager.setVolume(-1)).toThrow(AudioManagerConfigError); expect(() => manager.setVolume(101)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.NaN)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.POSITIVE_INFINITY)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.NEGATIVE_INFINITY)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(0)).not.toThrow(); + expect(() => manager.setVolume(100)).not.toThrow(); }); it('rejects volume changes before any resource exists', () => {