167 lines
5.4 KiB
HTML
167 lines
5.4 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>
|
|
Test AudioListener.setPosition and AudioListener.setOrientation Errors
|
|
</title>
|
|
<script src="../../imported/w3c/web-platform-tests/resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
<script src="../resources/audit-util.js"></script>
|
|
<script src="../resources/audit.js"></script>
|
|
<script src="../resources/set-position-vs-curve-test.js"></script>
|
|
</head>
|
|
<body>
|
|
<script id="layout-test-code">
|
|
// Fairly arbitrary rate
|
|
let sampleRate = 16000;
|
|
|
|
// For the tests we need to render for at least two render quanta.
|
|
// Otherwise, pretty arbitrary.
|
|
let renderFrames = 256;
|
|
let renderDuration = renderFrames / sampleRate;
|
|
|
|
// The curve duration for the test. Anything less than one render quantum
|
|
// is fine. Arbitrarily choose something small.
|
|
let curveDurationFrames = 8;
|
|
let curveDuration = curveDurationFrames / sampleRate;
|
|
|
|
// When to call setPosition, after the setValueCurve has ended. Any value
|
|
// after the end of the first render quantum is fine.
|
|
let suspendFrame = 129;
|
|
|
|
let audit = Audit.createTaskRunner();
|
|
|
|
// Array of tests to do. Each element of this array is used to create a
|
|
// task to test the entry.
|
|
let tests = [
|
|
// Test |setPosition| against |positionX|, |positionY|, and |positionZ|
|
|
// setValueCurves. Include test where there's overlap and where there
|
|
// isn't.
|
|
{
|
|
name: 'Listener setPosition X error',
|
|
options: {paramName: 'positionX', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setPosition X no error',
|
|
options: {
|
|
paramName: 'positionX',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setPosition Y error',
|
|
options: {paramName: 'positionY', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setPosition Y no error',
|
|
options: {
|
|
paramName: 'positionY',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setPosition Z error',
|
|
options: {paramName: 'positionZ', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setPosition Z no error',
|
|
options: {
|
|
paramName: 'positionZ',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
// Now do the same with |setOrientation|, for forward and up vectors.
|
|
{
|
|
name: 'Listener setOrientation forward X error',
|
|
options: {paramName: 'forwardX', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation forward X no error',
|
|
options: {
|
|
paramName: 'forwardX',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation forward Y error',
|
|
options: {paramName: 'forwardY', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation forward Y no error',
|
|
options: {
|
|
paramName: 'forwardY',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation forward Z error',
|
|
options: {paramName: 'forwardZ', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation forward Z no error',
|
|
options: {
|
|
paramName: 'forwardZ',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up X error',
|
|
options: {paramName: 'upX', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up X no error',
|
|
options: {
|
|
paramName: 'upX',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up Y error',
|
|
options: {paramName: 'upY', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up Y no error',
|
|
options: {
|
|
paramName: 'upY',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up Z error',
|
|
options: {paramName: 'upZ', curveDuration: renderDuration}
|
|
},
|
|
{
|
|
name: 'Listener setOrientation up Z no error',
|
|
options: {
|
|
paramName: 'upZ',
|
|
curveDuration: curveDuration,
|
|
suspendFrame: suspendFrame
|
|
}
|
|
},
|
|
];
|
|
|
|
// Create an audit test for each entry in |tests|.
|
|
tests.forEach(test => {
|
|
audit.define(test.name, (task, should) => {
|
|
let context = new OfflineAudioContext(1, renderFrames, sampleRate);
|
|
testPositionSetterVsCurve(
|
|
should, context,
|
|
Object.assign(
|
|
{testName: test.name, nodeName: 'listener'}, test.options))
|
|
.then(() => task.done());
|
|
});
|
|
});
|
|
|
|
audit.run();
|
|
</script>
|
|
</body>
|
|
</html>
|