Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html

Issue 2799793003: Convert Panner tests to new Audit (Closed)
Patch Set: Address review comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-position.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html
diff --git a/third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html b/third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html
index 2b28607fa70e9cad6d03cfe724da65d0a598a45a..b34e47c697b1dfc95fcc70d7c52eb91239c4a65c 100644
--- a/third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html
+++ b/third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-basic.html
@@ -4,7 +4,7 @@
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
- <script src="../resources/audio-testing.js"></script>
+ <script src="../resources/audit.js"></script>
<script src="../resources/panner-formulas.js"></script>
<title>Test Basic PannerNode with Automation Position Properties</title>
</head>
@@ -13,186 +13,226 @@
<script>
var sampleRate = 48000;
- // These tests are quite slow, so don't run for many frames. 256 frames should be enough to
- // demonstrate that automations are working.
+ // These tests are quite slow, so don't run for many frames. 256 frames
+ // should be enough to demonstrate that automations are working.
var renderFrames = 256;
var renderDuration = renderFrames / sampleRate;
var audit = Audit.createTaskRunner();
- // Array of tests for setting the panner positions. These tests basically verify that the
- // position setters for the panner and listener are working correctly.
- var testConfig = [{
- setter: "positionX",
- }, {
- setter: "positionY",
- }, {
- setter: "positionZ",
- }];
-
- // Create tests for the panner position setters. Both mono and steroe sources are tested.
+ // Array of tests for setting the panner positions. These tests basically
+ // verify that the position setters for the panner and listener are
+ // working correctly.
+ var testConfig = [
+ {
+ setter: 'positionX',
+ },
+ {
+ setter: 'positionY',
+ },
+ {
+ setter: 'positionZ',
+ }
+ ];
+
+ // Create tests for the panner position setters. Both mono and steroe
+ // sources are tested.
for (var k = 0; k < testConfig.length; ++k) {
var config = testConfig[k];
// Function to create the test to define the test.
- var tester = function (config, channelCount) {
- return function (done) {
+ var tester =
+ function(config, channelCount) {
+ return (task, should) => {
var nodes = createGraph(channelCount);
var {context, source, panner} = nodes;
- var message = channelCount == 1 ? "Mono" : "Stereo";
- message += " panner." + config.setter;
+ var message = channelCount == 1 ? 'Mono' : 'Stereo';
+ message += ' panner.' + config.setter;
- testPositionSetter({
+ testPositionSetter(should, {
nodes: nodes,
pannerSetter: panner[config.setter],
message: message
- }).then(done);
+ }).then(() => task.done());
}
}
- audit.defineTask("Stereo panner." + config.setter, tester(config, 2));
- audit.defineTask("Mono panner." + config.setter, tester(config, 1));
+ audit.define('Stereo panner.' + config.setter, tester(config, 2));
hongchan 2017/05/03 15:46:57 Hmm. This is really weird.
Raymond Toy 2017/05/03 16:33:21 clang-format gets confused if the preceeding line
+ audit.define('Mono panner.' + config.setter, tester(config, 1));
}
-
- // Create tests for the listener position setters. Both mono and steroe sources are tested.
+
+ // Create tests for the listener position setters. Both mono and steroe
+ // sources are tested.
for (var k = 0; k < testConfig.length; ++k) {
var config = testConfig[k];
// Function to create the test to define the test.
- var tester = function (config, channelCount) {
- return function (done) {
+ var tester = function(config, channelCount) {
+ return (task, should) => {
var nodes = createGraph(channelCount);
var {context, source, panner} = nodes;
- var message = channelCount == 1 ? "Mono" : "Stereo";
- message += " listener." + config.setter;
+ var message = channelCount == 1 ? 'Mono' : 'Stereo';
+ message += ' listener.' + config.setter;
- // Some relatively arbitrary (non-default) position for the source location.
- panner.setPosition(1,0,1);
+ // Some relatively arbitrary (non-default) position for the source
+ // location.
+ panner.setPosition(1, 0, 1);
- testPositionSetter({
+ testPositionSetter(should, {
nodes: nodes,
pannerSetter: context.listener[config.setter],
message: message
- }).then(done);
+ }).then(() => task.done());
}
- }
+ };
- audit.defineTask("Stereo listener." + config.setter, tester(config, 2));
- audit.defineTask("Mono listener." + config.setter, tester(config, 1));
+ audit.define('Stereo listener.' + config.setter, tester(config, 2));
+ audit.define('Mono listener.' + config.setter, tester(config, 1));
}
// Test setPosition method.
- audit.defineTask("setPosition", function (done) {
+ audit.define('setPosition', (task, should) => {
var {context, panner, source} = createGraph(2);
// Initialize source position (values don't really matter).
- panner.setPosition(1,1,1);
+ panner.setPosition(1, 1, 1);
- // After some (unimportant) time, move the panner to a (any) new location.
+ // After some (unimportant) time, move the panner to a (any) new
+ // location.
var suspendFrame = 128;
- context.suspend(suspendFrame / sampleRate).then(function () {
- panner.setPosition(-100, 2000, 8000);
- }).then(context.resume.bind(context));
-
- context.startRendering().then(function (resultBuffer) {
- verifyPannerOutputChanged(resultBuffer, {message: "setPosition", suspendFrame: suspendFrame});
- }).then(done);
+ context.suspend(suspendFrame / sampleRate)
+ .then(function() {
+ panner.setPosition(-100, 2000, 8000);
+ })
+ .then(context.resume.bind(context));
+
+ context.startRendering()
+ .then(function(resultBuffer) {
+ verifyPannerOutputChanged(
+ should, resultBuffer,
+ {message: 'setPosition', suspendFrame: suspendFrame});
+ })
+ .then(() => task.done());
});
- audit.defineTask("orientation setter", function (done) {
+ audit.define('orientation setter', (task, should) => {
var {context, panner, source} = createGraph(2);
- // For orientation to matter, we need to make the source directional, and also move away
- // from the listener (because the default location is 0,0,0).
- panner.setPosition(0,0,1);
+ // For orientation to matter, we need to make the source directional,
+ // and also move away from the listener (because the default location is
+ // 0,0,0).
+ panner.setPosition(0, 0, 1);
panner.coneInnerAngle = 0;
panner.coneOuterAngle = 360;
panner.coneOuterGain = .001;
- // After some (unimportant) time, change the panner orientation to a new orientation. The
- // only constraint is that the orientation changes from before.
+ // After some (unimportant) time, change the panner orientation to a new
+ // orientation. The only constraint is that the orientation changes
+ // from before.
var suspendFrame = 128;
- context.suspend(suspendFrame / sampleRate).then(function () {
- panner.orientationX.value = -100;
- panner.orientationY.value = 2000;
- panner.orientationZ.value = 8000;
- }).then(context.resume.bind(context));
-
- context.startRendering().then(function (resultBuffer) {
- verifyPannerOutputChanged(resultBuffer, {message: "panner.orientation{XYZ}", suspendFrame: suspendFrame});
- }).then(done);
+ context.suspend(suspendFrame / sampleRate)
+ .then(function() {
+ panner.orientationX.value = -100;
+ panner.orientationY.value = 2000;
+ panner.orientationZ.value = 8000;
+ })
+ .then(context.resume.bind(context));
+
+ context.startRendering()
+ .then(function(resultBuffer) {
+ verifyPannerOutputChanged(should, resultBuffer, {
+ message: 'panner.orientation{XYZ}',
+ suspendFrame: suspendFrame
+ });
+ })
+ .then(() => task.done());
});
- audit.defineTask("forward setter", function (done) {
+ audit.define('forward setter', (task, should) => {
var {context, panner, source} = createGraph(2);
- // For orientation to matter, we need to make the source directional, and also move away
- // from the listener (because the default location is 0,0,0).
- panner.setPosition(0,0,1);
+ // For orientation to matter, we need to make the source directional,
+ // and also move away from the listener (because the default location is
+ // 0,0,0).
+ panner.setPosition(0, 0, 1);
panner.coneInnerAngle = 0;
panner.coneOuterAngle = 360;
panner.coneOuterGain = .001;
- // After some (unimportant) time, change the panner orientation to a new orientation. The
- // only constraint is that the orientation changes from before.
+ // After some (unimportant) time, change the panner orientation to a new
+ // orientation. The only constraint is that the orientation changes
+ // from before.
var suspendFrame = 128;
- context.suspend(suspendFrame / sampleRate).then(function () {
- context.listener.forwardX.value = -100;
- context.listener.forwardY.value = 2000;
- context.listener.forwardZ.value = 8000;
- }).then(context.resume.bind(context));
-
- context.startRendering().then(function (resultBuffer) {
- verifyPannerOutputChanged(resultBuffer, {message: "listener.forward{XYZ}", suspendFrame: suspendFrame});
- }).then(done);
+ context.suspend(suspendFrame / sampleRate)
+ .then(function() {
+ context.listener.forwardX.value = -100;
+ context.listener.forwardY.value = 2000;
+ context.listener.forwardZ.value = 8000;
+ })
+ .then(context.resume.bind(context));
+
+ context.startRendering()
+ .then(function(resultBuffer) {
+ verifyPannerOutputChanged(should, resultBuffer, {
+ message: 'listener.forward{XYZ}',
+ suspendFrame: suspendFrame
+ });
+ })
+ .then(() => task.done());
});
- audit.defineTask("up setter", function (done) {
+ audit.define('up setter', (task, should) => {
var {context, panner, source} = createGraph(2);
- // For orientation to matter, we need to make the source directional, and also move away
- // from the listener (because the default location is 0,0,0).
- panner.setPosition(0,0,1);
+ // For orientation to matter, we need to make the source directional,
+ // and also move away from the listener (because the default location is
+ // 0,0,0).
+ panner.setPosition(0, 0, 1);
panner.coneInnerAngle = 0;
panner.coneOuterAngle = 360;
panner.coneOuterGain = .001;
- panner.setPosition(1,0,1);
+ panner.setPosition(1, 0, 1);
- // After some (unimportant) time, change the panner orientation to a new orientation. The
- // only constraint is that the orientation changes from before.
+ // After some (unimportant) time, change the panner orientation to a new
+ // orientation. The only constraint is that the orientation changes
+ // from before.
var suspendFrame = 128;
- context.suspend(suspendFrame / sampleRate).then(function () {
- context.listener.upX.value = 100;
- context.listener.upY.value = 100;
- context.listener.upZ.value = 100;;
- }).then(context.resume.bind(context));
-
- context.startRendering().then(function (resultBuffer) {
- verifyPannerOutputChanged(resultBuffer, {message: "listener.up{XYZ}", suspendFrame: suspendFrame});
- }).then(done);
+ context.suspend(suspendFrame / sampleRate)
+ .then(function() {
+ context.listener.upX.value = 100;
+ context.listener.upY.value = 100;
+ context.listener.upZ.value = 100;
+ ;
+ })
+ .then(context.resume.bind(context));
+
+ context.startRendering()
+ .then(function(resultBuffer) {
+ verifyPannerOutputChanged(
+ should, resultBuffer,
+ {message: 'listener.up{XYZ}', suspendFrame: suspendFrame});
+ })
+ .then(() => task.done());
});
- audit.runTasks();
+ audit.run();
function createGraph(channelCount) {
var context = new OfflineAudioContext(2, renderFrames, sampleRate);
var panner = context.createPanner();
var source = context.createBufferSource();
- source.buffer = createConstantBuffer(context, 1, channelCount == 1 ? 1 : [1, 2]);
+ source.buffer =
+ createConstantBuffer(context, 1, channelCount == 1 ? 1 : [1, 2]);
source.loop = true;
source.connect(panner);
panner.connect(context.destination);
source.start();
- return {
- context: context,
- source: source,
- panner: panner
- };
+ return {context: context, source: source, panner: panner};
}
- function testPositionSetter(options) {
+ function testPositionSetter(should, options) {
var {nodes, pannerSetter, message} = options;
var {context, source, panner} = nodes;
@@ -200,46 +240,58 @@
// Set panner x position. (Value doesn't matter);
pannerSetter.value = 1;
- // Wait a bit and set a new position. (Actual time and position doesn't matter).
+ // Wait a bit and set a new position. (Actual time and position doesn't
+ // matter).
var suspendFrame = 128;
- context.suspend(suspendFrame / sampleRate).then(function () {
- pannerSetter.value = 10000;
- }).then(context.resume.bind(context));
-
- return context.startRendering().then(function (resultBuffer) {
- verifyPannerOutputChanged(resultBuffer, {message: message, suspendFrame: suspendFrame});
+ context.suspend(suspendFrame / sampleRate)
+ .then(function() {
+ pannerSetter.value = 10000;
+ })
+ .then(context.resume.bind(context));
+
+ return context.startRendering().then(function(resultBuffer) {
+ verifyPannerOutputChanged(
+ should, resultBuffer,
+ {message: message, suspendFrame: suspendFrame});
});
}
- function verifyPannerOutputChanged(resultBuffer, options) {
+ function verifyPannerOutputChanged(should, resultBuffer, options) {
var {message, suspendFrame} = options;
- // Verify that the first part of output is constant. (Doesn't matter what.)
- var success = true;
- var data0 = resultBuffer.getChannelData(0);
- var data1 = resultBuffer.getChannelData(1);
-
- var middle = "[0, " + suspendFrame + ") ";
- success = Should(message + ".value frame " + middle + "channel 0", data0.slice(0, suspendFrame))
- .beConstantValueOf(data0[0]) && success;
- success = Should(message + ".value frame " + middle + "channel 1", data1.slice(0, suspendFrame))
- .beConstantValueOf(data1[0]) && success;
-
- // The rest after suspendTime should be constant and different from the first part.
- middle = "[" + suspendFrame + ", " + renderFrames + ") ";
- success = Should(message + ".value frame " + middle + "channel 0",
- data0.slice(suspendFrame))
- .beConstantValueOf(data0[suspendFrame]) && success;
- success = Should(message + ".value frame " + middle + "channel 1",
- data1.slice(suspendFrame))
- .beConstantValueOf(data1[suspendFrame]) && success;
- success = Should(message + ": Output at frame " + suspendFrame + " channel 0", data0[suspendFrame])
- .notBeEqualTo(data0[0]) && success;
- success = Should(message + ": Output at frame " + suspendFrame + " channel 1", data1[suspendFrame])
- .notBeEqualTo(data1[0]) && success;
-
- var prefix = "Directly setting " + message + ".value";
- Should(prefix, success)
- .summarize("worked", "failed");
+ // Verify that the first part of output is constant. (Doesn't matter
+ // what.)
+ var data0 = resultBuffer.getChannelData(0);
+ var data1 = resultBuffer.getChannelData(1);
+
+ var middle = '[0, ' + suspendFrame + ') ';
+ should(
+ data0.slice(0, suspendFrame),
+ message + '.value frame ' + middle + 'channel 0')
+ .beConstantValueOf(data0[0]);
+ should(
+ data1.slice(0, suspendFrame),
+ message + '.value frame ' + middle + 'channel 1')
+ .beConstantValueOf(data1[0]);
+
+ // The rest after suspendTime should be constant and different from the
+ // first part.
+ middle = '[' + suspendFrame + ', ' + renderFrames + ') ';
+ should(
+ data0.slice(suspendFrame),
+ message + '.value frame ' + middle + 'channel 0')
+ .beConstantValueOf(data0[suspendFrame]);
+ should(
+ data1.slice(suspendFrame),
+ message + '.value frame ' + middle + 'channel 1')
+ .beConstantValueOf(data1[suspendFrame]);
+ should(
+ data0[suspendFrame],
+ message + ': Output at frame ' + suspendFrame + ' channel 0')
+ .notBeEqualTo(data0[0]);
+ should(
+ data1[suspendFrame],
+ message + ': Output at frame ' + suspendFrame + ' channel 1')
+ .notBeEqualTo(data1[0]);
}
</script>
</body>
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/Panner/panner-automation-position.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698