273 lines
21 KiB
Plaintext
273 lines
21 KiB
Plaintext
CONSOLE MESSAGE: Failed to construct internal AudioBuffer with 1 channel(s), a sample rate of 44100 and a length of 1448390656.
|
|
|
|
PASS # AUDIT TASK RUNNER STARTED.
|
|
PASS Executing "initialize"
|
|
PASS Executing "createBuffer"
|
|
PASS Executing "createMediaElementSource"
|
|
PASS Executing "createMediaStreamSource"
|
|
PASS Executing "createScriptProcessor"
|
|
PASS Executing "createChannelSplitter"
|
|
PASS Executing "createChannelMerger"
|
|
PASS Executing "createPeriodicWave"
|
|
PASS Executing "createAnalyser"
|
|
PASS Executing "Init test nodes"
|
|
PASS Executing "connections"
|
|
PASS Executing "channel-stuff"
|
|
PASS Executing "audioparam"
|
|
PASS Executing "biquad"
|
|
PASS Executing "offline-audio-context"
|
|
PASS Executing "invalid-offline-audio-context-parameters"
|
|
PASS Executing "invalid-frame-length"
|
|
PASS Executing "waveshaper"
|
|
PASS Executing "audio-buffer-source"
|
|
PASS Executing "oscillator"
|
|
PASS Executing "convolver"
|
|
PASS Executing "panner"
|
|
PASS Executing "script-processor"
|
|
PASS Executing "misc"
|
|
PASS Audit report
|
|
PASS > [initialize] Initialize contexts for testing
|
|
PASS context = new AudioContext() did not throw an exception.
|
|
PASS otherContext = new AudioContext() did not throw an exception.
|
|
PASS < [initialize] All assertions passed. (total 2 assertions)
|
|
PASS > [createBuffer]
|
|
PASS context.createBuffer(99, 1, context.sampleRate) threw NotSupportedError: "Number of channels cannot be more than max supported.".
|
|
PASS context.createBuffer(0, 1, context.sampleRate) threw NotSupportedError: "Number of channels cannot be 0.".
|
|
PASS context.createBuffer(1, 1, 1) threw NotSupportedError: "Sample rate is not in the supported range.".
|
|
PASS context.createBuffer(1, 1, 2999) threw NotSupportedError: "Sample rate is not in the supported range.".
|
|
PASS context.createBuffer(1, 1, 384001) threw NotSupportedError: "Sample rate is not in the supported range.".
|
|
PASS context.createBuffer(1, 1, 1e6) threw NotSupportedError: "Sample rate is not in the supported range.".
|
|
PASS context.createBuffer(1, 1, 3000) did not throw an exception.
|
|
PASS context.createBuffer(1, 1, 192000) did not throw an exception.
|
|
PASS context.createBuffer(1, 1, 384000) did not throw an exception.
|
|
PASS context.createBuffer(1, 0, context.sampleRate) threw NotSupportedError: "Length must be at least 1.".
|
|
PASS context.createBuffer(new ArrayBuffer(100), true) threw TypeError: "Not enough arguments".
|
|
PASS < [createBuffer] All assertions passed. (total 11 assertions)
|
|
PASS > [createMediaElementSource]
|
|
PASS context.createMediaElementSource(null) threw TypeError: "Argument 1 ('mediaElement') to AudioContext.createMediaElementSource must be an instance of HTMLMediaElement".
|
|
PASS < [createMediaElementSource] All assertions passed. (total 1 assertions)
|
|
PASS > [createMediaStreamSource]
|
|
PASS context.createMediaStreamSource(null) threw TypeError: "Argument 1 ('mediaStream') to AudioContext.createMediaStreamSource must be an instance of MediaStream".
|
|
PASS < [createMediaStreamSource] All assertions passed. (total 1 assertions)
|
|
PASS > [createScriptProcessor]
|
|
PASS context.createScriptProcessor(1, 1, 1) threw IndexSizeError: "Unsupported buffer size for ScriptProcessorNode".
|
|
PASS context.createScriptProcessor(4096, 100, 1) threw IndexSizeError: "numberOfInputChannels exceeds maximum number of channels".
|
|
PASS context.createScriptProcessor(4096, 1, 100) threw IndexSizeError: "numberOfOutputChannels exceeds maximum number of channels".
|
|
PASS context.createScriptProcessor() did not throw an exception.
|
|
PASS context.createScriptProcessor(0) did not throw an exception.
|
|
PASS < [createScriptProcessor] All assertions passed. (total 5 assertions)
|
|
PASS > [createChannelSplitter]
|
|
PASS context.createChannelSplitter(0) threw IndexSizeError: "Number of outputs is not in the allowed range".
|
|
PASS context.createChannelSplitter(99) threw IndexSizeError: "Number of outputs is not in the allowed range".
|
|
PASS context.createChannelMerger(0) threw IndexSizeError: "Number of inputs is not in the allowed range.".
|
|
PASS < [createChannelSplitter] All assertions passed. (total 3 assertions)
|
|
PASS > [createChannelMerger]
|
|
PASS context.createChannelMerger(99) threw IndexSizeError: "Number of inputs is not in the allowed range.".
|
|
PASS < [createChannelMerger] All assertions passed. (total 1 assertions)
|
|
PASS > [createPeriodicWave]
|
|
PASS context.createPeriodicWave(null, null) threw TypeError: "Value is not a sequence".
|
|
PASS context.createPeriodicWave(new Float32Array(10), null) threw TypeError: "Value is not a sequence".
|
|
PASS context.createPeriodicWave(new Float32Array(4100), new Float32Array(4100)) did not throw an exception.
|
|
PASS context.createPeriodicWave(new Float32Array(8192), new Float32Array(8192)) did not throw an exception.
|
|
PASS context.createPeriodicWave(new Float32Array(10000), new Float32Array(10000)) did not throw an exception.
|
|
PASS context.createPeriodicWave(new Float32Array(10), new Float32Array(7)) threw IndexSizeError: "real and imag have different lengths".
|
|
PASS < [createPeriodicWave] All assertions passed. (total 6 assertions)
|
|
PASS > [createAnalyser]
|
|
PASS AnalyserNode.fftSize = 42 threw IndexSizeError: "fftSize must be power of 2 in the range 32 to 32768.".
|
|
PASS AnalyserNode.fftSize is not equal to 42.
|
|
PASS AnalyserNode.fftSize = 16 threw IndexSizeError: "fftSize must be power of 2 in the range 32 to 32768.".
|
|
PASS AnalyserNode.fftSize is not equal to 16.
|
|
PASS AnalyserNode.fftSize = 32768 did not throw an exception.
|
|
PASS AnalyserNode.fftSize = 65536 threw IndexSizeError: "fftSize must be power of 2 in the range 32 to 32768.".
|
|
PASS AnalyserNode.fftSize is not equal to 65536.
|
|
PASS AnalyserNode.minDecibels = -10 threw IndexSizeError: "minDecibels must be less than maxDecibels.".
|
|
PASS AnalyserNode.minDecibels is not equal to -10.
|
|
PASS AnalyserNode.maxDecibels = -150 threw IndexSizeError: "maxDecibels must be greater than minDecibels.".
|
|
PASS AnalyserNode.maxDecibels is not equal to -150.
|
|
PASS AnalyserNode.minDecibels = -30 threw IndexSizeError: "minDecibels must be less than maxDecibels.".
|
|
PASS AnalyserNode.minDecibels is not equal to -30.
|
|
PASS AnalyserNode.maxDecibels = -100 threw IndexSizeError: "maxDecibels must be greater than minDecibels.".
|
|
PASS AnalyserNode.maxDecibels is not equal to -100.
|
|
PASS AnalyserNode.smoothingTimeConstant = -0.1 threw IndexSizeError: "Smoothing time constant needs to be between 0 and 1.".
|
|
PASS AnalyserNode.smoothingTimeConstant is not equal to -0.1.
|
|
PASS AnalyserNode.smoothingTimeConstant = 1.5 threw IndexSizeError: "Smoothing time constant needs to be between 0 and 1.".
|
|
PASS AnalyserNode.smoothingTimeConstant is not equal to 1.5.
|
|
PASS AnalyserNode.getFloatFrequencyData(null) threw TypeError: "Argument 1 ('array') to AnalyserNode.getFloatFrequencyData must be an instance of Float32Array".
|
|
PASS AnalyserNode.getByteFrequencyData(null) threw TypeError: "Argument 1 ('array') to AnalyserNode.getByteFrequencyData must be an instance of Uint8Array".
|
|
PASS AnalyserNode.getFloatTimeDomainData(null) threw TypeError: "Argument 1 ('array') to AnalyserNode.getFloatTimeDomainData must be an instance of Float32Array".
|
|
PASS AnalyserNode.getByteTimeDomainData(null) threw TypeError: "Argument 1 ('array') to AnalyserNode.getByteTimeDomainData must be an instance of Uint8Array".
|
|
PASS AnalyserNode.getFloatFrequencyData(SharedArrayBuffer view) threw TypeError: "Argument 1 ('array') to AnalyserNode.getFloatFrequencyData must be an instance of Float32Array".
|
|
PASS AnalyserNode.getByteFrequencyData(SharedArrayBuffer view) threw TypeError: "Argument 1 ('array') to AnalyserNode.getByteFrequencyData must be an instance of Uint8Array".
|
|
PASS AnalyserNode.getFloatTimeDomainData(SharedArrayBuffer view) threw TypeError: "Argument 1 ('array') to AnalyserNode.getFloatTimeDomainData must be an instance of Float32Array".
|
|
PASS AnalyserNode.getByteTimeDomainData(SharedArrayBuffer view) threw TypeError: "Argument 1 ('array') to AnalyserNode.getByteTimeDomainData must be an instance of Uint8Array".
|
|
PASS AudioBuffer.getChannelData(2) threw IndexSizeError: "Index must be less than number of channels.".
|
|
PASS < [createAnalyser] All assertions passed. (total 28 assertions)
|
|
PASS > [Init test nodes] Create test nodes for the following tests
|
|
PASS node = context.createGain() did not throw an exception.
|
|
PASS node2 = context.createGain() did not throw an exception.
|
|
PASS < [Init test nodes] All assertions passed. (total 2 assertions)
|
|
PASS > [connections] AudioNode connections
|
|
PASS node.connect(null, 0, 0) threw TypeError: "Argument 1 ('destination') to AudioNode.connect must be an instance of AudioNode".
|
|
PASS node.connect(context.destination, 100, 0) threw IndexSizeError: "Output index exceeds number of outputs".
|
|
PASS node.connect(context.destination, 0, 100) threw IndexSizeError: "Input index exceeds number of inputs".
|
|
PASS node.connect(node2.gain, 100) threw IndexSizeError: "Output index exceeds number of outputs".
|
|
PASS node.disconnect(99) threw IndexSizeError: "output index is out of bounds".
|
|
PASS node.connect(otherContext.destination) threw InvalidAccessError: "Source and destination nodes belong to different audio contexts".
|
|
PASS < [connections] All assertions passed. (total 6 assertions)
|
|
PASS > [channel-stuff] channelCount, channelCountMode, channelInterpretation
|
|
PASS GainNode.channelCount = 99 threw NotSupportedError: "Channel count exceeds maximum limit".
|
|
PASS GainNode.channelCount is not equal to 99.
|
|
PASS node.channelCountMode = "fancy" did not throw an exception.
|
|
PASS node.channelCountMode is equal to max.
|
|
PASS node.channelInterpretation = mode did not throw an exception.
|
|
PASS node.channelInterpretation is equal to speakers.
|
|
PASS context.destination.channelCount = 99 threw IndexSizeError: [error message omitted].
|
|
PASS < [channel-stuff] All assertions passed. (total 7 assertions)
|
|
PASS > [audioparam]
|
|
PASS param.setValueCurveAtTime(null, 0, 0) threw TypeError: "Value is not a sequence".
|
|
PASS node.gain.exponentialRampToValueAtTime(-1, 0.1) did not throw an exception.
|
|
PASS node.gain.exponentialRampToValueAtTime(0, 0.1) threw RangeError: "value cannot be 0".
|
|
PASS node.gain.exponentialRampToValueAtTime(1e-100, 0.1) threw RangeError: "value cannot be 0".
|
|
PASS node.gain.exponentialRampToValueAtTime(Math.pow(2, -149), 0.1) did not throw an exception.
|
|
PASS node.gain.exponentialRampToValueAtTime(Math.pow(2, -150), 0.1) threw RangeError: "value cannot be 0".
|
|
PASS < [audioparam] All assertions passed. (total 6 assertions)
|
|
PASS > [biquad]
|
|
PASS node.getFrequencyResponse(new Float32Array(1), new Float32Array(1), new Float32Array(1)) did not throw an exception.
|
|
PASS node.getFrequencyResponse(null, new Float32Array(1), new Float32Array(1)) threw TypeError: "Argument 1 ('frequencyHz') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS node.getFrequencyResponse(new Float32Array(1), null, new Float32Array(1)) threw TypeError: "Argument 2 ('magResponse') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS node.getFrequencyResponse(new Float32Array(1), new Float32Array(1), null) threw TypeError: "Argument 3 ('phaseResponse') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS node.getFrequencyResponse(shared_view, nonshared_view, nonshared_view) threw TypeError: "Argument 1 ('frequencyHz') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS node.getFrequencyResponse(nonshared_view, shared_view, nonshared_view) threw TypeError: "Argument 2 ('magResponse') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS node.getFrequencyResponse(nonshared_view, nonshared_view, shared_view) threw TypeError: "Argument 3 ('phaseResponse') to BiquadFilterNode.getFrequencyResponse must be an instance of Float32Array".
|
|
PASS < [biquad] All assertions passed. (total 7 assertions)
|
|
PASS > [offline-audio-context] supports 32 channels
|
|
PASS new OfflineAudioContext(32, 100, context.sampleRate) did not throw an exception.
|
|
PASS < [offline-audio-context] All assertions passed. (total 1 assertions)
|
|
PASS > [invalid-offline-audio-context-parameters] errors for invalid channel counts
|
|
PASS new OfflineAudioContext(0, 100, context.sampleRate) threw NotSupportedError: "Number of channels is not in range".
|
|
PASS new OfflineAudioContext(99, 100, context.sampleRate) threw NotSupportedError: "Number of channels is not in range".
|
|
PASS new OfflineAudioContext(1, 100, 1) threw NotSupportedError: "sampleRate is not in range".
|
|
PASS new OfflineAudioContext(1, 100, 1e6) threw NotSupportedError: "sampleRate is not in range".
|
|
PASS new OfflineAudioContext(1, 0, 44100) threw NotSupportedError: "length cannot be 0".
|
|
PASS < [invalid-offline-audio-context-parameters] All assertions passed. (total 5 assertions)
|
|
PASS > [invalid-frame-length]
|
|
PASS testContext = new OfflineAudioContext(1, -88200000000000, 44100) did not throw an exception.
|
|
PASS testContext.startRendering() rejected correctly with NotSupportedError: Failed to create audio buffer.
|
|
PASS < [invalid-frame-length] All assertions passed. (total 2 assertions)
|
|
PASS > [waveshaper]
|
|
PASS node.oversample = "9x" did not throw an exception.
|
|
PASS node.oversample is equal to none.
|
|
PASS node.curve = {} threw TypeError: "The WaveShaperNode.curve attribute must be an instance of Float32Array".
|
|
PASS node.curve = new Float32Array(1) threw InvalidStateError: "Length of curve array cannot be less than 2".
|
|
PASS node.curve is equal to null.
|
|
PASS node.curve = new Float32Array(2) did not throw an exception.
|
|
PASS node.curve = null did not throw an exception.
|
|
PASS < [waveshaper] All assertions passed. (total 7 assertions)
|
|
PASS > [audio-buffer-source] AudioBufferSource start/stop
|
|
PASS source = context.createBufferSource() did not throw an exception.
|
|
PASS source.buffer = buffer did not throw an exception.
|
|
PASS source.buffer = context.createBuffer(1, 10, context.sampleRate) threw InvalidStateError: "The buffer was already set".
|
|
PASS source.start(-1) threw RangeError: "when value should be positive".
|
|
PASS source.start(Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(-Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, -Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, -1) threw RangeError: "offset value should be positive".
|
|
PASS source.start(1, -Number.MIN_VALUE) threw RangeError: "offset value should be positive".
|
|
PASS source.start(1, 1, Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, 1, -Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, 1, NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source.start(1, 1, -1) threw RangeError: "duration value should be positive".
|
|
PASS source.start(1, 1, -Number.MIN_VALUE) threw RangeError: "duration value should be positive".
|
|
PASS source.start() did not throw an exception.
|
|
PASS source.stop(-Number.MIN_VALUE) threw RangeError: "when value should be positive".
|
|
PASS source.stop(Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.stop(-Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source.stop(NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source.stop() did not throw an exception.
|
|
PASS source2 = context.createBufferSource() did not throw an exception.
|
|
PASS source2.buffer = buffer did not throw an exception.
|
|
PASS source2.start(0, 0) did not throw an exception.
|
|
PASS source3 = context.createBufferSource() did not throw an exception.
|
|
PASS source3.buffer = buffer did not throw an exception.
|
|
PASS source3.start(0, -1/Infinity) did not throw an exception.
|
|
PASS source4 = context.createBufferSource() did not throw an exception.
|
|
PASS source4.start() did not throw an exception.
|
|
PASS source5 = context.createBufferSource() did not throw an exception.
|
|
PASS source5.buffer = buffer did not throw an exception.
|
|
PASS source5.stop() threw InvalidStateError: "cannot call stop without calling start first.".
|
|
PASS source6 = context.createBufferSource() did not throw an exception.
|
|
PASS source6.buffer = buffer did not throw an exception.
|
|
PASS source6.start() did not throw an exception.
|
|
PASS source6.start() threw InvalidStateError: "Cannot call start more than once.".
|
|
PASS source7 = context.createBufferSource() did not throw an exception.
|
|
PASS source7.buffer = buffer did not throw an exception.
|
|
PASS source7.start() did not throw an exception.
|
|
PASS source7.stop() did not throw an exception.
|
|
PASS < [audio-buffer-source] All assertions passed. (total 42 assertions)
|
|
PASS > [oscillator] start/stop
|
|
PASS source8 = context.createOscillator() did not throw an exception.
|
|
PASS source8.start(-Number.MIN_VALUE) threw RangeError: "when value should be positive".
|
|
PASS source8.start(Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.start(-Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.start(NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.start() did not throw an exception.
|
|
PASS source8.stop(-Number.MIN_VALUE) threw RangeError: "when value should be positive".
|
|
PASS source8.stop(Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.stop(-Infinity) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.stop(NaN) threw TypeError: "The provided value is non-finite".
|
|
PASS source8.stop() did not throw an exception.
|
|
PASS osc = context.createOscillator() did not throw an exception.
|
|
PASS osc.stop() threw InvalidStateError: "cannot call stop without calling start first.".
|
|
PASS osc1 = context.createOscillator() did not throw an exception.
|
|
PASS osc1.start() did not throw an exception.
|
|
PASS osc1.stop() did not throw an exception.
|
|
PASS osc.setPeriodicWave(null) threw TypeError: "Argument 1 ('wave') to OscillatorNode.setPeriodicWave must be an instance of PeriodicWave".
|
|
PASS < [oscillator] All assertions passed. (total 17 assertions)
|
|
PASS > [convolver]
|
|
PASS oc = new OfflineAudioContext(1, 44100, 44100) did not throw an exception.
|
|
PASS conv = oc.createConvolver() did not throw an exception.
|
|
PASS conv.buffer = {} threw TypeError: "The ConvolverNode.buffer attribute must be an instance of AudioBuffer".
|
|
PASS conv.buffer = oc.createBuffer(1, 100, 22050) threw NotSupportedError: "Buffer sample rate does not match the context's sample rate".
|
|
PASS conv.buffer is equal to null.
|
|
PASS < [convolver] All assertions passed. (total 5 assertions)
|
|
PASS > [panner]
|
|
PASS panner.channelCount = 1 did not throw an exception.
|
|
PASS panner.channelCount = 2 did not throw an exception.
|
|
PASS PannerNode.channelCount = 0 threw NotSupportedError: "Channel count cannot be 0".
|
|
PASS PannerNode.channelCount is not equal to 0.
|
|
PASS PannerNode.channelCount = 3 threw NotSupportedError: "PannerNode's channelCount cannot be greater than 2".
|
|
PASS PannerNode.channelCount is not equal to 3.
|
|
PASS PannerNode.channelCountMode = max threw NotSupportedError: "PannerNode's channelCountMode cannot be max".
|
|
PASS PannerNode.channelCountMode is not equal to max.
|
|
PASS panner.channelCountMode = "explicit" did not throw an exception.
|
|
PASS panner.channelCountMode = "clamped-max" did not throw an exception.
|
|
PASS panner.channelCountMode = "junk" did not throw an exception.
|
|
PASS < [panner] All assertions passed. (total 11 assertions)
|
|
PASS > [script-processor]
|
|
PASS script = context.createScriptProcessor(256, 3) did not throw an exception.
|
|
PASS script.channelCount is equal to 3.
|
|
PASS script.channelCountMode is equal to explicit.
|
|
PASS script.channelCount = 3 did not throw an exception.
|
|
PASS ScriptProcessorNode.channelCount = 1 threw IndexSizeError: "ScriptProcessorNode's channelCount cannot be changed".
|
|
PASS ScriptProcessorNode.channelCount is not equal to 1.
|
|
PASS ScriptProcessorNode.channelCount = 7 threw IndexSizeError: "ScriptProcessorNode's channelCount cannot be changed".
|
|
PASS ScriptProcessorNode.channelCount is not equal to 7.
|
|
PASS script.channelCountMode = "explicit" did not throw an exception.
|
|
PASS ScriptProcessorNode.channelCountMode = max threw NotSupportedError: "ScriptProcessorNode's channelCountMode cannot be changed from 'explicit'".
|
|
PASS ScriptProcessorNode.channelCountMode is not equal to max.
|
|
PASS ScriptProcessorNode.channelCountMode = clamped-max threw NotSupportedError: "ScriptProcessorNode's channelCountMode cannot be changed from 'explicit'".
|
|
PASS ScriptProcessorNode.channelCountMode is not equal to clamped-max.
|
|
PASS script.channelCountMode = "junk" did not throw an exception.
|
|
PASS < [script-processor] All assertions passed. (total 14 assertions)
|
|
PASS > [misc] Miscellaneous tests
|
|
PASS osc.noteOn is equal to undefined.
|
|
PASS osc.noteOff is equal to undefined.
|
|
PASS source.noteOn is equal to undefined.
|
|
PASS source.noteOff is equal to undefined.
|
|
PASS < [misc] All assertions passed. (total 4 assertions)
|
|
PASS # AUDIT TASK RUNNER FINISHED: 24 tasks ran successfully.
|
|
|