ctor-channelsplitter.html (3398B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title> 5 Test Constructor: ChannelSplitter 6 </title> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/webaudio/resources/audionodeoptions.js"></script> 10 </head> 11 <body> 12 <script> 13 14 test(() => { 15 context = new OfflineAudioContext(1, 1, 48000); 16 }, 'initialize'); 17 18 test(() => { 19 testInvalidConstructor_W3CTH('ChannelSplitterNode'); 20 }, 'invalid constructor'); 21 22 test(() => { 23 testDefaultConstructor_W3CTH('ChannelSplitterNode', context, { 24 prefix: 'node0', 25 numberOfInputs: 1, 26 numberOfOutputs: 6, 27 channelCount: 6, 28 channelCountMode: 'explicit', 29 channelInterpretation: 'discrete', 30 }); 31 }, 'default constructor'); 32 33 test(() => { 34 const node = new ChannelSplitterNode(context); 35 node.channelCount = 6; 36 assert_equals(node.channelCount, 6, 'channelCount stays 6'); 37 38 node.channelCountMode = 'explicit'; 39 assert_equals(node.channelCountMode, 'explicit', 40 'channelCountMode stays explicit'); 41 42 node.channelInterpretation = 'discrete'; 43 assert_equals(node.channelInterpretation, 'discrete', 44 'channelInterpretation stays discrete'); 45 46 assert_throws_dom( 47 'InvalidStateError', () => { 48 node.channelCount = 7; 49 }, 50 'channelCount immutable'); 51 52 assert_throws_dom( 53 'InvalidStateError', () => { 54 node.channelCountMode = 'max'; 55 }, 56 'channelCountMode immutable'); 57 58 assert_throws_dom( 59 'InvalidStateError', () => { 60 node.channelInterpretation = 'speakers'; 61 }, 62 'channelInterpretation immutable'); 63 }, 'AudioNodeOptions immutability'); 64 65 test(() => { 66 const options = { 67 numberOfInputs: 3, 68 numberOfOutputs: 9, 69 channelInterpretation: 'discrete', 70 }; 71 const node = new ChannelSplitterNode(context, options); 72 assert_equals( 73 node.numberOfInputs, 74 1, 75 `success ${JSON.stringify(options)} – numberOfInputs`); 76 assert_equals( 77 node.numberOfOutputs, 78 options.numberOfOutputs, 79 ` success ${JSON.stringify(options)} – numberOfOutputs`); 80 assert_equals( 81 node.channelInterpretation, 82 'discrete', 83 `success ${JSON.stringify(options)} – channelInterpretation`); 84 85 const badOutputs = {numberOfOutputs: 99}; 86 assert_throws_dom( 87 'IndexSizeError', 88 () => new ChannelSplitterNode(context, badOutputs), 89 `error ${JSON.stringify(badOutputs)} – IndexSizeError`); 90 91 const badCount = {channelCount: 3}; 92 assert_throws_dom( 93 'InvalidStateError', 94 () => new ChannelSplitterNode(context, badCount), 95 `error ${JSON.stringify(badCount)} – InvalidStateError`); 96 97 const badMode = {channelCountMode: 'max'}; 98 assert_throws_dom( 99 'InvalidStateError', 100 () => new ChannelSplitterNode(context, badMode), 101 `error ${JSON.stringify(badMode)} – InvalidStateError`); 102 }, 'constructor options'); 103 </script> 104 </body> 105 </html>