'use strict'; // Test if the JS code execution in AudioWorkletGlobalScope can handle the // denormals properly. For more details, see: // https://esdiscuss.org/topic/float-denormal-issue-in-javascript-processor-node-in-web-audio-api promise_test(async () => { // In the main thread, the denormals should be non-zeros. assert_not_equals(Number.MIN_VALUE, 0.0, 'The denormals should be non-zeros.'); const context = new AudioContext(); await context.audioWorklet.addModule( './processors/denormal-test-processor.js'); const denormalTestProcessor = new AudioWorkletNode(context, 'denormal-test'); return new Promise(resolve => { denormalTestProcessor.port.onmessage = resolve; denormalTestProcessor.connect(context.destination); }).then(event => { // In the AudioWorkletGlobalScope, the denormals should be non-zeros too. assert_true( event.data.result, 'The denormals should be non-zeros in AudioWorkletGlobalScope.'); }); }, 'Test denormal behavior in AudioWorkletGlobalScope');