test((t) => { const context = new AudioContext(); const source = new ConstantSourceNode(context); const panner = new PannerNode(context); source.connect(panner).connect(context.destination); // Basic parameters assert_equals(panner.numberOfInputs,1); assert_equals(panner.numberOfOutputs,1); assert_equals(panner.refDistance, 1); panner.refDistance = 270.5; assert_equals(panner.refDistance, 270.5); assert_equals(panner.maxDistance, 10000); panner.maxDistance = 100.5; assert_equals(panner.maxDistance, 100.5); assert_equals(panner.rolloffFactor, 1); panner.rolloffFactor = 0.75; assert_equals(panner.rolloffFactor, 0.75); assert_equals(panner.coneInnerAngle, 360); panner.coneInnerAngle = 240.5; assert_equals(panner.coneInnerAngle, 240.5); assert_equals(panner.coneOuterAngle, 360); panner.coneOuterAngle = 166.5; assert_equals(panner.coneOuterAngle, 166.5); assert_equals(panner.coneOuterGain, 0); panner.coneOuterGain = 0.25; assert_equals(panner.coneOuterGain, 0.25); assert_equals(panner.panningModel, 'equalpower'); assert_equals(panner.distanceModel, 'inverse'); // Position/orientation AudioParams assert_equals(panner.positionX.value, 0); assert_equals(panner.positionY.value, 0); assert_equals(panner.positionZ.value, 0); assert_equals(panner.orientationX.value, 1); assert_equals(panner.orientationY.value, 0); assert_equals(panner.orientationZ.value, 0); // AudioListener assert_equals(context.listener.positionX.value, 0); assert_equals(context.listener.positionY.value, 0); assert_equals(context.listener.positionZ.value, 0); assert_equals(context.listener.forwardX.value, 0); assert_equals(context.listener.forwardY.value, 0); assert_equals(context.listener.forwardZ.value, -1); assert_equals(context.listener.upX.value, 0); assert_equals(context.listener.upY.value, 1); assert_equals(context.listener.upZ.value, 0); panner.panningModel = 'equalpower'; assert_equals(panner.panningModel, 'equalpower'); panner.panningModel = 'HRTF'; assert_equals(panner.panningModel, 'HRTF'); panner.panningModel = 'invalid'; assert_equals(panner.panningModel, 'HRTF'); // Check that numerical values are no longer supported. We shouldn't // throw and the value shouldn't be changed. panner.panningModel = 1; assert_equals(panner.panningModel, 'HRTF'); panner.distanceModel = 'linear'; assert_equals(panner.distanceModel, 'linear'); panner.distanceModel = 'inverse'; assert_equals(panner.distanceModel, 'inverse'); panner.distanceModel = 'exponential'; assert_equals(panner.distanceModel, 'exponential'); panner.distanceModel = 'invalid'; assert_equals(panner.distanceModel, 'exponential'); }, 'Test the PannerNode interface');