WPT
wpt / webaudio / the-audio-api / the-audioparam-interface / audioparam-exceptional-values.html
Spec: Web Audio API ↗
Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@e7122b73f, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-70fb3 (wpt@4a01b83e3, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 66/66 | 66/66 | 66/66 | 66/66 | 63/66 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| # AUDIT TASK RUNNER STARTED. | PASS | PASS | PASS | PASS | PASS | — |
| Executing "initialize" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "test value" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "test time" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "test setValueCurve" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "special cases 1" | PASS | PASS | PASS | PASS | PASS | — |
| Executing "special cases 2" | PASS | PASS | PASS | PASS | PASS | — |
| Audit report | PASS | PASS | PASS | PASS | PASS | — |
| > [initialize] | PASS | PASS | PASS | PASS | PASS | — |
| Creating context for testing did not throw an exception. | PASS | PASS | PASS | PASS | PASS | — |
| < [initialize] All assertions passed. (total 1 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [test value] Test non-finite arguments for AudioParam value | PASS | PASS | PASS | PASS | PASS | — |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| < [test value] All assertions passed. (total 12 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [test time] Test non-finite arguments for AudioParam time | PASS | PASS | PASS | PASS | PASS | — |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "Failed to execute 'setValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| < [test time] All assertions passed. (total 15 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [test setValueCurve] Test non-finite arguments for setValueCurveAtTime | PASS | PASS | PASS | PASS | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided double value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': The provided float value is non-finite.". | PASS | — | — | — | — | — |
| < [test setValueCurve] All assertions passed. (total 5 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| > [special cases 1] Test exceptions for finite values | PASS | PASS | PASS | PASS | PASS | — |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "Failed to execute 'setValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "Failed to execute 'linearRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "Failed to execute 'setTargetAtTime' on 'AudioParam': Time constant must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Time must be a finite non-negative number: -1". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: 0". | PASS | — | — | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "Failed to execute 'setValueCurveAtTime' on 'AudioParam': Duration must be a finite positive number: -1". | PASS | — | — | — | — | — |
| < [special cases 1] All assertions passed. (total 9 assertions) | PASS | PASS | PASS | PASS | — | — |
| > [special cases 2] Test special cases for expeonentialRamp | PASS | PASS | PASS | PASS | PASS | — |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS | — | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "Failed to execute 'exponentialRampToValueAtTime' on 'AudioParam': The float target value provided (0) should not be in the range (-1.40130e-45, 1.40130e-45).". | PASS | — | — | — | — | — |
| < [special cases 2] All assertions passed. (total 3 assertions) | PASS | PASS | PASS | PASS | PASS | — |
| # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. | PASS | PASS | PASS | PASS | — | — |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "AudioParam.setValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "AudioParam.setValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "AudioParam.setValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "AudioParam.setValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "AudioParam.setTargetAtTime: Argument 3 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "AudioParam.setValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "AudioParam.setTargetAtTime: Argument 3 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "AudioParam.setValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "AudioParam.linearRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "AudioParam.exponentialRampToValueAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "AudioParam.setTargetAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "AudioParam.setTargetAtTime: Argument 3 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "AudioParam.setValueCurveAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "AudioParam.setValueCurveAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "AudioParam.setValueCurveAtTime: Argument 2 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "AudioParam.setValueCurveAtTime: Element of argument 1 is not a finite floating-point value.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "AudioParam.setValueAtTime: The start time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "AudioParam.linearRampToValueAtTime: The end time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "AudioParam.exponentialRampToValueAtTime: The end time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "AudioParam.setTargetAtTime: The start time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "AudioParam.setTargetAtTime: The start time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "AudioParam.setValueCurveAtTime: The start time for an AudioParam method must be non-negative.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "AudioParam.setValueCurveAtTime: The curve duration for setValueCurveAtTime must be strictly positive.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: "AudioParam.setValueCurveAtTime: The curve duration for setValueCurveAtTime must be strictly positive.". | — | PASS | — | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "AudioParam.setValueCurveAtTime: The curve duration for setValueCurveAtTime must be strictly positive.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "AudioParam.exponentialRampToValueAtTime: The value passed to exponentialRampToValueAtTime must be non-zero.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "AudioParam.exponentialRampToValueAtTime: The value passed to exponentialRampToValueAtTime must be non-zero.". | — | PASS | — | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "AudioParam.exponentialRampToValueAtTime: The value passed to exponentialRampToValueAtTime must be non-zero.". | — | PASS | — | — | — | — |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "The provided value is non-finite". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "startTime must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "endTime must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "endTime must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "startTime must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "timeConstant must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "startTime must be a positive value". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "duration must be a strictly positive value". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: "duration must be a strictly positive value". | — | — | PASS | — | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "duration must be a strictly positive value". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "value cannot be 0". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "value cannot be 0". | — | — | PASS | — | — | — |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "value cannot be 0". | — | — | PASS | — | — | — |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "this argument is not a finite floating-point value". | — | — | — | — | PASS | — |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "start time -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "end time -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "end time -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "start time -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "time constant -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "start time -1 should not be negative". | — | — | — | — | PASS | — |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "end time -1 should not be negative". | — | — | — | — | PASS | — |
| X gain.gain.setValueCurveAtTime(curve, 1, 0) did not throw an exception. | — | — | — | — | FAIL | — |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "end time -1 should not be negative". | — | — | — | — | PASS | — |
| < [special cases 1] 1 out of 9 assertions were failed. | — | — | — | — | FAIL | — |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "target value 0 should not be 0". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "target value -0 should not be 0". | — | — | — | — | PASS | — |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "target value 0 should not be 0". | — | — | — | — | PASS | — |
| # AUDIT TASK RUNNER FINISHED: 1 out of 6 tasks were failed. | — | — | — | — | FAIL | — |
| gain.gain.setValueAtTime(Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(Infinity,1,1) threw TypeError: "Expected target to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(-Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(-Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(-Infinity,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(-Infinity,1,1) threw TypeError: "Expected target to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(NaN,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(NaN,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(NaN,1) threw TypeError: "Expected value to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(NaN,1,1) threw TypeError: "Expected target to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(1,Infinity) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(1,Infinity) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(1,Infinity) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,Infinity,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,1,Infinity) threw TypeError: "Expected timeConstant to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(1,-Infinity) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(1,-Infinity) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-Infinity) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,-Infinity,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,1,-Infinity) threw TypeError: "Expected timeConstant to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(1,NaN) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(1,NaN) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(1,NaN) threw TypeError: "Expected endTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,NaN,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,1,NaN) threw TypeError: "Expected timeConstant to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],Infinity,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-Infinity,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],NaN,1) threw TypeError: "Expected startTime to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([1,2,Infinity,3],1,1) threw TypeError: "Expected values to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([1,NaN,2,3],1,1) threw TypeError: "Expected values to be a finite floating-point number". | — | — | — | PASS | — | — |
| gain.gain.setValueAtTime(1,-1) threw RangeError: "startTime must not be negative". | — | — | — | PASS | — | — |
| gain.gain.linearRampToValueAtTime(1,-1) threw RangeError: "endTime must not be negative". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(1,-1) threw RangeError: "endTime must not be negative". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,-1,1) threw RangeError: "startTime must not be negative". | — | — | — | PASS | — | — |
| gain.gain.setTargetAtTime(1,1,-1) threw RangeError: "timeConstant must not be negative". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],-1,1) threw RangeError: "startTime must not be negative". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime([0,0,0],1,-1) threw RangeError: "duration must be positive". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, 0) threw RangeError: "duration must be positive". | — | — | — | PASS | — | — |
| gain.gain.setValueCurveAtTime(curve, 1, -1) threw RangeError: "duration must be positive". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(0,1) threw RangeError: "value must not be zero". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(-1e-100,1) threw RangeError: "value must not be zero". | — | — | — | PASS | — | — |
| gain.gain.exponentialRampToValueAtTime(1e-100,1) threw RangeError: "value must not be zero". | — | — | — | PASS | — | — |