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

Unified Diff: third_party/WebKit/LayoutTests/webaudio/constructor/new-audionodeoptions.js

Issue 2831953003: Convert constructor/analyser test 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 | « third_party/WebKit/LayoutTests/webaudio/constructor/analyser.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/webaudio/constructor/new-audionodeoptions.js
diff --git a/third_party/WebKit/LayoutTests/webaudio/constructor/new-audionodeoptions.js b/third_party/WebKit/LayoutTests/webaudio/constructor/new-audionodeoptions.js
new file mode 100644
index 0000000000000000000000000000000000000000..d151613bbb99a8a0509e3fd3677bc78e45f6a9fd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/webaudio/constructor/new-audionodeoptions.js
@@ -0,0 +1,223 @@
+// Test that constructor for the node with name |nodeName| handles the
+// various possible values for channelCount, channelCountMode, and
+// channelInterpretation.
+
+// The |should| parameter is the test function from new |Audit|.
+function testAudioNodeOptions(should, context, nodeName, expectedNodeOptions) {
+ if (expectedNodeOptions === undefined)
+ expectedNodeOptions = {};
+ let node;
+
+ // Test that we can set channelCount and that errors are thrown for
+ // invalid values
+ let testChannelCount = 17;
+ if (expectedNodeOptions.ChannelCount) {
+ testChannelCount = expectedNodeOptions.ChannelCount.value;
+ }
+ should(
+ () => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelCount: testChannelCount
+ }));
+ },
+ 'new ' + nodeName + '(c, {channelCount: ' + testChannelCount + '}}')
+ .notThrow();
+ should(node.channelCount, 'node.channelCount').beEqualTo(testChannelCount);
+
+ if (expectedNodeOptions.ChannelCount &&
+ expectedNodeOptions.ChannelCount.isFixed) {
+ // The channel count is fixed. Verify that we throw an error if
+ // we try to change it. Arbitrarily set the count to be one more
+ // than the expected value.
+ testChannelCount = expectedNodeOptions.ChannelCount.value + 1;
+ should(
+ () => {
+ node = new window[nodeName](
+ context,
+ Object.assign(
+ {}, expectedNodeOptions.additionalOptions,
+ {channelCount: testChannelCount}));
+ },
+ 'new ' + nodeName + '(c, {channelCount: ' + testChannelCount + '}}')
+ .throw(expectedNodeOptions.ChannelCount.errorType || 'TypeError');
+ } else {
+ // The channel count is not fixed. Try to set the count to invalid
+ // values and make sure an error is thrown.
+ let errorType = 'NotSupportedError';
+
+ should(() => {
+ node = new window[nodeName](
+ context,
+ Object.assign(
+ {}, expectedNodeOptions.additionalOptions, {channelCount: 0}));
+ }, 'new ' + nodeName + '(c, {channelCount: 0}}', ).throw(errorType);
+
+ should(() => {
+ node = new window[nodeName](
+ context,
+ Object.assign(
+ {}, expectedNodeOptions.additionalOptions, {channelCount: 99}));
+ }, 'new ' + nodeName + '(c, {channelCount: 99}}').throw(errorType);
+ }
+
+ // Test channelCountMode
+ let testChannelCountMode = 'max';
+ if (expectedNodeOptions.ChannelCountMode) {
+ testChannelCountMode = expectedNodeOptions.ChannelCountMode.value;
+ }
+ should(
+ () => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelCountMode: testChannelCountMode
+ }));
+ },
+ 'new ' + nodeName + '(c, {channelCountMode: "' + testChannelCountMode + '"}')
+ .notThrow();
+ should(node.channelCountMode, 'node.channelCountMode').beEqualTo(testChannelCountMode);
+
+ if (expectedNodeOptions.ChannelCountMode &&
+ expectedNodeOptions.ChannelCountMode.isFixed) {
+ // Channel count mode is fixed. Test setting to something else throws.
+ let testChannelCountModeMap = {
+ 'max': 'clamped-max',
+ 'clamped-max': 'explicit',
+ 'explicit': 'max'
+ };
+ testChannelCountMode = testChannelCountModeMap[expectedNodeOptions.ChannelCountMode.value];
+ should(
+ () => {
+ node = new window[nodeName](
+ context,
+ Object.assign(
+ {}, expectedNodeOptions.additionalOptions,
+ {channelCountMode: testChannelCountMode}));
+ },
+ 'new ' + nodeName + '(c, {channelCountMode: "' + testChannelCountMode + '"}')
+ .throw(expectedNodeOptions.ChannelCountMode.errorType);
+ } else {
+ // Mode is not fixed. Verify that we can set the mode to all valid
+ // values, and that we throw for invalid values.
+
+ should(() => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelCountMode: 'clamped-max'
+ }));
+ }, 'new ' + nodeName + '(c, {channelCountMode: "clamped-max"}').notThrow();
+ should(node.channelCountMode, 'node.channelCountMode after invalid setter')
+ .beEqualTo('clamped-max');
+
+ should(() => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelCountMode: 'explicit'
+ }));
+ }, 'new ' + nodeName + '(c, {channelCountMode: "explicit"}').notThrow();
+ should(node.channelCountMode, 'node.channelCountMode')
+ .beEqualTo('explicit');
+
+ should(
+ () => {
+ node = new window[nodeName](
+ context,
+ Object.assign(
+ {}, expectedNodeOptions.additionalOptions,
+ {channelCountMode: 'foobar'}));
+ },
+ 'new ' + nodeName + '(c, {channelCountMode: "foobar"}')
+ .throw('TypeError');
+ should(node.channelCountMode, 'node.channelCountMode after invalid setter')
+ .beEqualTo('explicit');
+ }
+
+ // Test channelInterpretation
+ should(() => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelInterpretation: 'speakers'
+ }));
+ }, 'new ' + nodeName + '(c, {channelInterpretation: "speakers"})').notThrow();
+ should(node.channelInterpretation, 'node.channelInterpretation')
+ .beEqualTo('speakers');
+
+ should(() => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelInterpretation: 'discrete'
+ }));
+ }, 'new ' + nodeName + '(c, {channelInterpretation: "discrete"})').notThrow();
+ should(node.channelInterpretation, 'node.channelInterpretation')
+ .beEqualTo('discrete');
+
+ should(
+ () => {
+ node = new window[nodeName](
+ context, Object.assign({}, expectedNodeOptions.additionalOptions, {
+ channelInterpretation: 'foobar'
+ }));
+ },
+ 'new ' + nodeName + '(c, {channelInterpretation: "foobar"})')
+ .throw('TypeError');
+ should(
+ node.channelInterpretation,
+ 'node.channelInterpretation after invalid setter')
+ .beEqualTo('discrete');
+}
+
+function initializeContext(should) {
+ let c;
+ should(() => {
+ c = new OfflineAudioContext(1, 1, 48000);
+ }, 'context = new OfflineAudioContext(...)').notThrow();
+
+ return c;
+}
+
+function testInvalidConstructor(should, name, context) {
+ should(() => {
+ new window[name]();
+ }, 'new ' + name + '()').throw('TypeError');
+ should(() => {
+ new window[name](1);
+ }, 'new ' + name + '(1)').throw('TypeError');
+ should(() => {
+ new window[name](context, 42);
+ }, 'new ' + name + '(context, 42)').throw('TypeError');
+}
+
+function testDefaultConstructor(should, name, context, options) {
+ let node;
+
+ should(() => {
+ node = new window[name](context);
+ }, options.prefix + ' = new ' + name + '(context)').notThrow();
+ should(node instanceof window[name], options.prefix + ' instanceof ' + name)
+ .beEqualTo(true);
+
+ should(node.numberOfInputs, options.prefix + '.numberOfInputs')
+ .beEqualTo(options.numberOfInputs);
+ should(node.numberOfOutputs, options.prefix + '.numberOfOutputs')
+ .beEqualTo(options.numberOfOutputs);
+ should(node.channelCount, options.prefix + '.channelCount')
+ .beEqualTo(options.channelCount);
+ should(node.channelCountMode, options.prefix + '.channelCountMode')
+ .beEqualTo(options.channelCountMode);
+ should(node.channelInterpretation, options.prefix + '.channelInterpretation')
+ .beEqualTo(options.channelInterpretation);
+
+ return node;
+}
+
+function testDefaultAttributes(should, node, prefix, items) {
+ items.forEach((item) => {
+ let attr = node[item.name];
+ if (attr instanceof AudioParam) {
+ should(attr.value, prefix + '.' + item.name + '.value')
+ .beEqualTo(item.value);
+ } else {
+ should(attr, prefix + '.' + item.name).beEqualTo(item.value);
+ }
+ });
+}
« no previous file with comments | « third_party/WebKit/LayoutTests/webaudio/constructor/analyser.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698